KOZOS (13)
とほほ。書き込みできた。昨晩のは一体何だったのか。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB0 H8/3069F is ready! 2002/5/20 Yukio Mituiwa. writing WARNING:This Line dosen't start with"S". Address Size seems wrong WARNING:This Line dosen't start with"S". Address Size seems wrong ......... EEPROM Writing is successed. $
で、フラッシュ ROM から起動して minicom 設定して以下の出力を確認。
Hello World! 10 ffff
とりあえずこのまま 3rd Step なナニを盛り込んで動作確認をしてみよう。
その前に
gitorious 方面に push せねば。
$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: lib.c # modified: lib.h # modified: main.c # no changes added to commit (use "git add" and/or "git commit -a") $ git add lib.c lib.h main.c $ git commit -m '2nd step' [master ce4c044] 2nd step 3 files changed, 110 insertions(+), 5 deletions(-) $
あわわ。branch してないorz
commit を一旦ステて
$ git reset --hard HEAD^ HEAD is now at e1bc9a3 Merge branch 'step1' $
再度盛り込む必要あり、なのかorz
$ git checkout -b step2 Switched to a new branch 'step2' $ cp ../H8cross/osbook_03/02/bootload/lib.c . $ cp ../H8cross/osbook_03/02/bootload/lib.h . $ cp ../H8cross/osbook_03/02/bootload/main.c . $ git status # On branch step2 # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: lib.c # modified: lib.h # modified: main.c # no changes added to commit (use "git add" and/or "git commit -a") $ git add lib.c lib.h main.c $ git commit -m '2nd step' [step2 005568d] 2nd step 3 files changed, 110 insertions(+), 5 deletions(-) $
で、これで merge するのか。試験してないけどいいよね (を
$ git branch master step1 * step2 $ git checkout master Switched to branch 'master' $ git merge step2 --no-ff Merge made by recursive. lib.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib.h | 9 ++++++ main.c | 13 +++++--- 3 files changed, 110 insertions(+), 5 deletions(-) $
これを push と。他所で云々を全然意識してないあたりも非常に微妙。
$ git push origin master Counting objects: 10, done. Delta compression using up to 4 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.52 KiB, done. Total 6 (delta 2), reused 0 (delta 0) => Syncing Gitorious... [OK] To git@gitorious.org:kozos/kozos.git e1bc9a3..c37d1b9 master -> master $
とりあえず 3rd step に行く前に branch しておきましょう。
$ git checkout -b step3 Switched to a new branch 'step3' $
3rd Step
ええとこの章ではデータセグメントとスタックを RAM に配置して云々というナニになっております。2nd step な kzload.elf を readelf -a に吸わせた結果の一部が以下。
Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .vectors PROGBITS 00000000 000074 000100 00 WA 0 0 4 [ 2] .text PROGBITS 00000100 000174 0002dc 00 AX 0 0 2 [ 3] .rodata PROGBITS 000003dc 000450 00001f 01 AMS 0 0 1 [ 4] .data PROGBITS 000003fc 000470 00000c 00 WA 0 0 4
あるいは regs という配列が 3fc に割り当てられてます。
42: 000003fc 12 OBJECT LOCAL DEFAULT 4 _regs
これはテキストの図 3.1 によれば ROM の領域です。これをリンカ・スクリプトで適切な場所に領域を確保するよう記述するとのこと。とりあえず修正対象なファイルをコピィします。
$ cp ../H8cross/osbook_03/03/bootload/ld.scr . $ cp ../H8cross/osbook_03/03/bootload/main.c . $ cp ../H8cross/osbook_03/03/bootload/startup.s .
ここ、テキストの記述もとても面白くて参考になります。とりあえず make して実機に流してみよう。
$ make $ make image
で、コマンド実行。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB0 H8/3069F is FATAL:This is TEST error ! NOT ERROR CODE??? $
おろ。リトライ。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB0
だんまり。minicom を起動してみます。
$ sudo minicom [sudo] password for rms: Device /dev/ttyUSB0 is locked. $
をを、lock されておる事がようやく確認できた。で、usb ケーブル側を抜き差ししたら /dev/ttyUSB1 ができておる。
で、一旦 minicom で接続して転送はできました。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB1 H8/3069F is ready! 2002/5/20 Yukio Mituiwa. writing WARNING:This Line dosen't start with"S". Address Size seems wrong WARNING:This Line dosen't start with"S". Address Size seems wrong ........... EEPROM Writing is successed. $
微妙だなぁ。/var/lock とかには何もない。うーん。とりあえずフラッシュ ROM から起動する設定にして minicom なシリアルポートとか転送速度などを変更してプログラム実行。
Hello World! global_data = 10 global_bss = 0 static_data = 20 static_bss = 0 overwrite variables. global_data = 20 global_bss = 30 static_data = 40 static_bss = 50
lock 解除する方法が分からんなぁ。と思ったら /var/lock にファイルがあるぞw
$ ls /var/lock aumix LCK..ttyUSB1 $
削除してみる。
$ sudo rm -rf /var/lock/LCK..ttyUSB1 $
で、usb なケーブルを抜き差ししてみたら今度は /dev/ttyUSB0 ができてます。
とゆーことで
h8write で転送した後は /var/lock 配下の LCK..ttyUSB? を削除しましょう、が解なんスかね。とりあえず再度転送してみましょう。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB0 ^C $
だんまり。違うや。転送なディップスイッチな設定してない。リトライ。
$ ../H8cross/h8writer/h8write -3069 -f20 kzload.mot /dev/ttyUSB0 H8/3069F is ready! 2002/5/20 Yukio Mituiwa. writing WARNING:This Line dosen't start with"S". Address Size seems wrong WARNING:This Line dosen't start with"S". Address Size seems wrong ........... EEPROM Writing is successed. $
できたできた。あまり転送しない方が良いみたいなので調子に乗るまい。あと /var/lock 配下が以下。
$ ls /var/lock aumix $
ええと、このまま h8/3069rf 側を再起動したら lock なナニができるのかな。っと思ったらファイルが無いな。この状態で usb 側を抜き差ししたらどうなるか。
$ ls /dev/ttyUSB0
む、なんとなく大丈夫クサい。あ、プログラム実行してみれば良いのかな。h8write なファイル転送ではなくて、フラッシュ ROM から起動して minicom で接続した時に lock ファイルが作成される模様。
$ ls /var/lock aumix LCK..ttyUSB0 $
h8/3069rf 側の電源を切断して /var/lock/LCK..ttyUSB0 を削除すれば良いはず。これで問題は発生しないと見てて良いかな。お願いします。
そして
今から肩もみが待ってます。それが終わってからソース確認の方向でナニ。