CAT709新環境へ!!

CAT709が全く新しくなる新環境をリリースします。
まだベータ版なので実験やホビー用途としてください。

このページは従来のlinux-2.4環境([24環境]と記載)を使用されている方が、[26環境]へ移行するための手順を記載しています。

何が新しくなるの?

IPLcatbootCF読み書き対応!
カーネル2.6.15新機能満載
rootfsDebianSarge新バージョン

必要なファイル

暫定的にcat-user様向けに公開します。cat-usersメーリングリストにパスワードを流します。
cat-users-ml未加入の方は海老原(ebihara@si-linux.com)までメールでコンタクトください。

に必要なファイルがあります。

以下CDROMを /cdrom として解説します。

CAT709のデータは全て消えてしまいますので必要なデータはバックアップしてください。

アップデート手順

ファイルの準備

  1. 適当な大きさのコンパクトフラッシュを用意します(32M〜256M程度)
  2. WindowsでFATフォーマットしてください
  3. 以下のファイルを全てコンパクトフラッシュに保存します
    • /cdrom/bootloader/cat709/boot_v1.02.bin
    • /cdrom/kernel/compiled-cat709/zImage-2.6.15
    • /cdrom/rootfs/cat709/rootfs_20060213.bin
      clip1.gif

IPL(bootloader)のアップデート

  1. 上記のCFをCAT709のオンボードソケット(CPUボード上のソケット)に装着します
  2. CAT709の電源を入れ、普通に立ち上げます。
  3. CFをマウントします
    supercat:~# cardmgr
    hde: SanDisk SDCFB-32, CFA DISK drive
    ide2 at 0x000-0x007,0x00e on irq 9
    hde: attached ide-disk driver.
    hde: 62720 sectors (32 MB) w/1KiB Cache, CHS=490/4/32
    Partition check:
     hde: hde1
    ide_cs: hde: Vcc = 3.3, Vpp = 0.0
    cat709_set_global_base ba008000
    supercat:~# mount /dev/hde1 /mnt -t vfat
     hde: hde1
     hde: hde1
    supercat:~# cd /mnt/
    supercat:/mnt# ls
    boot_v1.02.bin       rootfs_20060213.bin  zImage-2.6.15
    +boot_v1.01.binを/dev/mtd0にコピーします
    # cp /mnt/boot_v1.02.bin  /dev/mtd0
    数秒ののち、コピーが終わりましたらリセットをかけます。
    CAT BOOT Version: CAT BOOT Version: 1.02 Feb 13 2006 22:12:06
    RTC clock :2003/01/07 23:19:48
    command line = console line = ttySC0,115200 root=1f02 ro rootfstype=jffs2
    Mac address  = 12:34:56:00:00:01
    Boot key     = ROM:
    Kernel size  = 0x130000
    と出れば成功です。新bootloaderはdirコマンドが使えます。
>>dir
 Device list
 ROM: (8.0MB) flash rom
 RAM: (31.96MB) ram disk
 CF0: (30.60MB) SanDisk SDCFB-32 FAT16
 CF1: ----
 CF2: ----
>>dir cf0
 2006/01/14 04:10:34          62912 boot_v1.01.bin
 2006/01/14 04:11:58        1114112 zImage-2.6.13.2
 2006/01/14 04:12:42        5373952 rootfs_20060130.bin
 9332736B (8.90MB) Free / 15925248B (15.18MB) Disk
>>dir rom
 (0x00000000,0x007FFFFF)  8388608 all
 (0x00000000,0x0000FFFF)    65536 boot
 (0x00010000,0x0013FFFF)  1245184 kernel
 (0x00010000,0x0013FFFF)  1245184 zimage
 (0x00140000,0x007FFFFF)  7077888 rootfs

ここで cf0 rom 等はドライブレターのようなものです。

カーネルのアップデート

簡単です(笑)CAT BOOT 上で

admin

password:silinux                      ← silinux固定です
#>cp cf0:zImage-2.6.15 rom:kernel     ← ファイル転送
The file already exists. [rom:kernel]
Remove a file ? [Y/N] Y
erase a flash rom.
  from 10000h to 140000h  (length:130000h)
  ########################################
  erase ok.
erase a flash rom.
   from 10000h to 140000h  (length:130000h)
   ########################################
   erase ok.
file copy
  from cf0:zImage-2.6.15 to rom:kernel  (length:1110016byte)
  ########################################
  copy ok. 1110016 byte 

rootfsのアップデート

同様に簡単です。

#>cp cf0:rootfs_20060213.bin rom:rootfs   ←ファイル転送
The file already exists. [rom:rootfs] 
Remove a file ? [Y/N] Y
erase a flash rom.
  from 140000h to 800000h  (length:6C0000h)
  ########################################
  erase ok.
erase a flash rom.
  from 140000h to 800000h  (length:6C0000h)
  ########################################
  erase ok.
file copy
  from cf0:rootfs_20060213.bin to rom:rootfs  (length:6160384byte)
  ########################################
  copy ok. 6160384 byte

カーネル起動パラメータ

カーネル起動パラメータを登録します

#>setparam                           ← 現在値とデフォルトの表示
 Input command line
 current command line : console line = ttySC0,115200 root=1f02 ro      
 rootfstype=jffs2
 default command line : console=ttySC0,115200 root=/dev/mtdblock2 rorootfstype=
jffs2
note:
internal flash rom -> /dev/mtdblock2
compact  flash rom -> /dev/hda1
usage:
setparam commandline

#>setparam console=ttySC0,115200 root=1f02 ro rootfstype=jffs2 ←このように入力します

kernel command line = console=ttySC0,115200 root=1f02 ro rootfstype=jffs2   

起動領域の選択

bootコマンド実行時にIPLがロードするカーネルを選択します。
これはrootパーテーションの選択とは異なります。rootパーテーションはカーネル起動パラメータにて root= で指定します。

>>setbootkey rom

romの他に cf0 cf1 cf2 が選べます。それぞれ

romオンメモリフラッシュのカーネル領域。つまり/dev/mtd1
cf0CF0の/zImageファイル。FAT16/32,ext2が使えます
cf1CF0と同じくcf1
cf2CF0と同じくcf2

Linuxの起動

linux起動はbootコマンドです

>>boot
kernel
file name    = rom:
command line = console=ttySC0,115200 root=1f02 ro rootfstype=jffs2
Loading linux from 10000 to 8C800000 size 130000
OkUncompressing Linux... Ok, booting the kernel.
Linux version 2.6.15-sh (ebihara@boss) (gcc version 3.4.4 20050314 (prerelease)
(Debian 3.4.3-13)) #1 Tue Feb 14 17:09:25 JST 2006
中略
supercat login: root
Password:root
Linux supercat 2.6.15-sh #1 Mon Feb 13 23:28:46 JST 2006 sh3 GNU/Linux

おめでとうございます。新カーネルで起動しました。

CATBOOT

CF (FAT16/32, ext2)が読み書きできるなど、なかなかの力作です。
フルスクラッチから書き起こしました(ちなみに内部はかなりOSっぽい作りになっています)。

今までのSH-ipl+gと比較して次のような機能が追加されています

  • CFのファイル読み書き FAT16/32,ext2
  • カーネル起動パラメータ、カーネル選択機能
  • CFにファイルとして保存されているzImageからの起動
    (これによって、面倒なlilo不要となりました)
  • XMODEM通信を廃止し、ZMODEMとしました。ファイル名が自動的に転送されます
  • カーネル保存領域サイズ(/dev/mtd0)が変更可能となっています

だからこんなことも出来ます

  • オンメモリ8MFLASHをCFカードにバックアップ/リストア
  • CFをext2フォーマットしておけばlilo不要でブート可能
  • CFをFATフォーマットしておき、zImageとrootfs.bin を入れておいて起動…は今は出来ませんが出来るようになるはずです

catbootを導入後、オンメモリフラッシュのメモリマップは以下のように変更されます
cat709flash_map.gif

knownバグ

  • [Ver1.0]catbootではmicrodriveはファイルアクセスできません。

catbootのマニュアル(とりあえず版)はここに置いておきます

DebianSarge

256Mbyte以上の大容量CFかMicrodriveに

  • /cdrom/debian-sh-base/base-sarge-20051108-sh3.tgz

を展開するとDebianSargeが遊べます。
IDEドライバが組み込んである zImage-ide カーネルを使ってください。 root=0301 とするとCFがルートデバイスとなります。

  • /etc/apt/sources.list
    deb https://www.si-linux.co.jp/pub/debian-sh/ sarge main non-free contrib

とすると apt-get できます。詳しくは下の組み込みLinuxガイドに書いてあります。

組み込みLinuxガイド

開発環境の構築からカーネルコンフィグレーション、デバイスドライバの書き方まで組み込みlinuxの技術を一冊のガイドブックにしました。CATのお供にどうぞ。無断転載禁止でお願いします。

目次
1 はじめに...........................................................3
2 開発環境の構築.....................................................3
  2.1 開発キットCDROM 構成...........................................3
  2.2 開発Linux 機用通信ソフトの準備.................................4
    2.2.1 kermit 初期化ファイル......................................4
    2.2.2 kermit の使い方............................................5
  2.3 クロスコンパイラのインストール.................................5
  2.4 NFS サーバのセットアップ.......................................6
    2.4.1 NFS サーバの再起動.........................................7
    2.4.2 NFSクライアント側の操作方法.............................7
  2.5 簡単なプログラムのクロスコンパイル.............................7
3 カーネル...........................................................9
  3.1 カーネルの入手と展開...........................................9
  3.2 make ファイルの修正............................................9
  3.3 コンフィグレーション...........................................9
  3.4 ビルド........................................................10
  3.5 コンパイルしたカーネルのインストール..........................10
  3.6 Linux 上での転送方法..........................................11
  3.7 カーネル起動パラメータ........................................11
  3.8 カーネルモジュールのインストールテクニック....................11
4 デバイスドライバ..................................................13
  4.1 デバイスドライバ入門..........................................13
    4.1.1 簡単なデバイスドライバ....................................13
    4.1.2 ドライバのコンパイル方法..................................14
    4.1.3 ドライバモジュールのロードとアンロード....................15
  4.2 CAT709 DIPSW,LED 回路について.................................15
    4.2.1 メジャー番号とマイナー番号................................15
    4.2.2 DIPSW,LEDデバイスドライバソースコード............16
    4.2.3 CAT709 DIPSW,LEDドライバのロードと実行.....21
  4.3 完成したドライバの組み込み....................................22
  4.4 モジュールの自動ロード........................................22
5 作成したソフトの自動起動..........................................22
  5.1 スタートストップスクリプト....................................23
6 デバイスドライバの高度なプログラミング............................24
  6.1 メモリの確保解放..............................................25
  6.2 割り込み......................................................26
  6.3 プロセスの停止、再開..........................................28
7 Debian SH を使った本格システムの構築..............................33
  7.1 コンパクトフラッシュのフォーマット............................33
  7.2 Debian SH ベースの展開........................................34
  7.3 設定ファイルの記述............................................34
  7.4 カーネル再構築................................................35
    7.4.1 モジュールについて補足....................................36
  7.5 カーネル起動パラメータ........................................36
  7.6 Linuxの起動..............................................37
  7.7 タイムゾーンの設定............................................37
  7.8 apt-get.......................................................38
8 最小ミニルートの構築..............................................38
  8.1 ユーティリティーのインストール................................38
  8.2 依存ライブラリの調査..........................................38
  8.3 必要なファイルを集める........................................39
  8.4 JFFS2 イメージを作る..........................................40
  8.5 rootfs の書き込み、カーネル起動パラメータ.....................41
  8.6 自作ソフトの組み込み..........................................41
9 その他の機能......................................................43
  9.1 SRAM..........................................................43
  9.2 CompactFlash..................................................43

リンク

コメント欄

動作・不具合などありましたらご報告ください。

  • カーネル2.6試してみました!アップデートはすんなり行ったのですが、2点ほどあります。1点は"rommode ro"とすると、"[<8c007c2e>] dump_stack+0xe/0x20・・・"とデバックメッセージらしきものが表示されます。ライトプロテクトはかかっているようです。もう1点は、"modprobe sh3_ss"とすると、”Module sh3_ss not found."となってしまい、cardmgrを起動すると、 "cardmgr[882]: no pcmcia driver in /proc/devices"と表示されてしまいます。 -- カネゴン 2006-01-25 (水) 23:40:16
  • すいません。2点お答えします。rommode ro にするときにダンプが出る件は承知しています。実害がないのでしばらくそのまま使って大丈夫と思います。直します。あとPCMCIA関連がSH3版-2.6でまた未完成です。こちらもなんとかします。m(_ _)m -- えびはら 2006-01-26 (木) 18:03:17
  • 了解しました! -- カネゴン 2006-01-26 (木) 22:50:19
  • rommode roでダンプが出るのは カーネル2.6.15で直しました。pcmciaも入れました。名前は catss.ko に変わっています。カーネルにスタティック組み込みでも動作します。まだ無線LANが動かないのですが・・・ -- えびはら 2006-02-04 (土) 01:21:36
  • ほとんどの無線LANカードが動くようになりました(^-^ -- えびはら 2006-02-14 (火) 00:37:14
  • cf2から起動できません。起動パラメータはconsole=ttySC0,115200 root=2101 roと入れていますが、VFS: Cannot open root device "2101" or unknown-block(33,1)とおこられます。 dirではCF2: (122.48MB) SanDisk SDCFB-128 Linuxと出ていますが、電源ON時にはBoot key = ROM:と表示されています。 -- saka 2006-02-15 (水) 00:19:55
  • ルートデバイスはCF0に限定しています。CF1とCF2はLinuxのカードマネージャが管理しているため、Linux起動後に初めて使えるようになっています。いまのところそういう仕様なのですが、変更していただくことは可能です。のちほどWikiに記載します -- えびはら 2006-02-15 (水) 19:18:07
  • 了解しました。よろしくお願いします。 -- saka 2006-02-15 (水) 21:35:11
  • 了解しました。よろしくお願いします。 -- saka 2006-02-15 (水) 22:00:35
  • IOCS16信号の問題があるため、無線LANカードはソケット0に挿すものと思っていましたが、rootfsをflashからcfへコピーして、cf0から起動して無線LANカード(WLI2-CF-S11)もソケットEB709のどちらのソケットでも無事動くようになりました。ありがとうございました。 -- saka 2006-02-20 (月) 09:31:55
  • 無線LANカードと他のカードの2枚挿しにすると、他のカードが利用できません。お忙しいところ、申し訳ありませんが、2/15のコメントの対処をよろしくお願いいたします。 -- saka 2006-03-13 (月) 12:47:01