&size(24){&color(darkgreen){''開発環境''};}; #navi(WPAR) ~''CONTENTS'' #contents ---- ~''REFERENCES'' -[[XF86Config の Modeline の代書屋でございます:http://www.gentei.org/~yuuji/modeline/]] -[[Building Embedded Linux Systems:http://www.oreilly.com/catalog/belinuxsys/desc.html]] -[[パイオニア技術解説-MPEG:http://www.pioneer.co.jp/crdl/tech/mpeg/1.html]] -[[CVS:http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/WpaDiag/]] -[[The Linux Kernel Module Programming Guide:http://tldp.org/LDP/lkmpg/2.6/html/index.html]] -[[Key Stream:http://www.keystream.co.jp/]] ---- ** File System [#k15da10a] wpaのroot-fsは[[MTD>http://www.linux-mtd.infradead.org/]]デバイス(FLASH-ROM)上にあります。 現在(2004-11-12)wpaのkernelがMTDデバイス上で使えるファイルシステムとしてサポートしているのは、 JFFS2とCRAMFSの2つです。 FLASH上にROOTFSを置く場合、一度ROOTFSのイメージを作って、ターゲットに書き込む必要があります。 以下のやり方で、イメージを作成し、ICEでrootfs領域に書き込んでください。 *** The Journalling Flash File System, version 2 ([[JFFS2>http://sources.redhat.com/jffs2/]]) [#qff503a1] 現在(2004-11-12)のreleaseでは、これをread-onlyでmountして使うことにしている。 マスクROMとかじゃ動くのか? FLASHじゃなきゃダメだろうな。多分…&worried; ''特徴'' &br; + RW可能 + 消去の均等化 + データ圧縮 ''作り方'' &br; Debianさまなら apt-get install mtd-tools mkfs.jffs2のbinaryは[[ここ>ftp://sources.redhat.com/pub/jffs2]]からdownload可能 #mkfs.jffs2 -r (root-dir) -p (padding) -e (erase-size) -o (output file) #mkfs.jffs2 -r rootfs/ -p -e 0x20000 -o jffs2fs.img Erase size: 128kB *** Compressed ROM File System (CRAMFS) [#o9204335] ''特徴'' &br; + READ only + データ圧縮(JFFS2より高圧縮率) + いろいろ制限があるらしい。[[kernel document>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/linux-2.4-wpa/Documentation/filesystems/cramfs.txt?rev=1.1.1.1&content-type=text/vnd.viewcvs-markup]]参照 ''作り方'' &br; #mkcramfs (root-dir) (output file) #mkcramfs rootfs/ cramfs.img *** WPA ipl & zImage アップデート方法 [#mbf5904e] -こんなに簡単でいいのか?と思うが、target上で、対象ファイルをマップに対応するデバイスファイルにコピーするだけ。アップデートする場合は、失敗すると起動しなくなるので注意!!。ちなみに 2004-11-01 にbuildしたkernelじゃないと動きません。 #cp (ipl or zImage file) /dev/mtdblockN (iplの場合mtdblock0 zImageの場合mtdblock1) -- まちがえてzImageをmtdblock0に書き込むと,容量不足で書き込めないとのエラーがでます。が途中までは書き込まれていて,その結果OSが起動しなくなりますので注意>h ''WPAR01'' |~area |~address |~size |~device |~erasesize|~file| |ipl |0x00000000-0x00020000|128Kbyte|/dev/mtdblock0|16Kbyte|sh-stub.bin((バイナリ形式でないとダメ))| |zImage |0x00020000-0x00120000|1Mbyte |/dev/mtdblock1|128Kbyte|zImage((サイズは1Mbyteまで))| |rootfs |0x00120000-0x00fe0000|15M-256Kbyte|/dev/mtdblock2|128Kbyte|-((アップデートは多分無理))| |reserved|0x00fe0000-0x01000000|128kbyte |/dev/mtdblock3|16Kbyte|-| ''WPAR00'' |~area |~address |~size |~device |~erasesize|~file| |ipl |0x00000000-0x00040000|128Kbyte|/dev/mtdblock0|16Kbyte|sh-stub.bin| |zImage |0x00040000-0x00140000|1Mbyte |/dev/mtdblock1|128Kbyte|| |rootfs |0x00140000-|31M-512Kbyte|/dev/mtdblock2|256Kbyte|| |reserved|0x00fe0000-0x01000000|128kbyte |/dev/mtdblock3|16Kbyte|| *** WPA root-fs を R/Wモードにする [#w328e6ba] # mount -o remount,rw / (copyなどする) # sync # mount -o remount,ro / **シリアルコンソール [#y9a34dc3] ***USB to UART Bridge [#rccd0a85] Since no serial port is available, +Install [[Silicon Laboratories:http://www.silabs.com]]' [[CP201EK:http://www.silabs.com/products/microcontroller/CP2101EK.asp]] USB to UART bridge # tar zxvf cardinal-redhat9-V0_81a.tar.gz # ./load_mcci_usb +Plug USB cable and trun on the board +Connect /dev/ttyUSB0 ''without Initialization'' minicom -o +''z'' to boot a kernel from a ROM For Windows, after installation of the USB to UART Bridge,~ connect a COM port generated by the bridge through Tera Term Pro. ***ファイルのやりとり [#h820f2f6] WPAは"X-MODEM"プロトコルを使用したファイル転送(受信のみ)ができます。 ファイル転送するためには、ターミナルが"X-MODEM"プロトコルを使用できなければなりません。ちなみに転送速度は遅いです。 :) -使い方 (target) #cd /tmp 書き込みできるところに移動 #rx (filename) 受信するファイル名を指定し、rx コマンドを実行 targetは待ち受け状態となるので、 ここで、送信側(host側から)、"X-MODEM"プロトコルでファイルを送信する。 やり方は使用しているターミナルによって違うので、省略。 **&ruby(アイス){ICE};の食べ方 [#la60ab97] [[こちら:http://e-words.jp/w/ICE.html]]によればホントにアイスって読むらしいです。~ そして某イソテルの登録商標なんですな。 組み込み屋さんの必須アイテム。~ ターゲットマシンのCPUを乗っ取ってプログラムを実行します。~ バス信号に反応してブレークしたり,メモリ・レジスタのダンプ&書き換えができたりと, まさにデバッガ。 ***母艦上のkernel imageを起動する方法 [#fc2b8d9d] ファイルシステムからkernel imageをロードします。 l "E:\share\vmlinux" ターゲットの実行を開始します。 g=0 端末エミュレータでコンソールに接続して j で起動します。 ***ROMに書き込む [#bb792f3d] zImageを書き込んでみるテスト rd E:\share\zImage,0xa0020000 user landを書き込んでみるテスト rd E:\share\cramfs.img,0xa0120000 ***マクロ定義 [#f85bcf4e] ICE起動時にINIT.MCRファイルに書かれたコマンドが実行されます。~ たとえば以下のような感じです。~ ICEのコマンドプロンプトからHOGEと入力すると実行されます。 {HOGE ed a7e00008,00ff0000 ed a7e0000c,00000000 ed a7e00038,00021837 ed a7e00040,00021837 ed a7e00048,00021837 ed a7e00054,00000000 ed a7e00004,00000000 ed a7e00040,0002187f ed a7e00044,01091801 ed a7e00048,0002187f ed a7e0004c,09091801 ed a7e80000,07013105 ed a7e80004,00000003 ed a7e80008,00000000 ed a7e8000c,00000000 ed a7e80010,08000800 ed a7e80014,04000000 ed a7e80018,03000000 ed a7e8001c,00000000 ed a7e80020,02ff03ff ed a7e80024,052f03ff ed a7e80028,00870417 ed a7e8002c,032502ff ed a7e80030,00050302 ed a7e80034,000002df ed a7e80038,00000000 ed a7e8003c,00000000 ed a7e80040,00016007 ed a7e80044,00180000 ed a7e80048,08000800 ed a7e8004c,00300000 ed a7e80050,00000000 ed a7e80054,02ff03ff ed a7e80058,0a000b00 ed a7e8005c,00000000 ed a7e80060,00ededed ed a7e80064,00300000 ed a7e80068,00480000 ed a7e8006c,00000000 ed a7e80070,00000000 ed a7e80074,00000000 ed a7e80078,00000000 ed a7e8007c,00000000 ed a7e80080,00010000 ed a7e80084,00480000 ed a7e80088,08000800 ed a7e8008c,00600000 ed a7e80090,00000000 ed a7e80094,02ff03ff ed a7e80098,00000000 ed a7e8009c,00000000 ed a7e800a0,00000000 ed a7e800a4,00000000 ed a7e800a8,00010000 ed a7e800ac,00000002 ed a7e800b0,00009000 ed a7e800b4,00000000 ed a7e800b8,00000004 ed a7e800bc,00000000 ed a7e800f0,00610000 ed a7e800f4,00000000 ed a7e800f8,5555aaaa ed a7e800fc,0000ffff ed a7e80100,00010001 ed a7e80104,00600000 ed a7e80108,08000800 ed a7e8010c,00000000 ed a7e80110,02ff03ff ed a7e80114,00000000 ed a7e80118,00000001 ed a7e8011c,02000000 ed a7e80120,00000000 ed a7e80124,00000000 ed a7e80128,02000000 ed a7e8012c,00000000 ed a7e90000,00002251 ed a7e90004,00000004 ed a7e90008,01e002c0 ed a7e9000c,00180000 ed a7e90010,00300000 ed a7e90014,00000800 ed a7e90018,00000004 }