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 を削除すれば良いはず。これで問題は発生しないと見てて良いかな。お願いします。

そして

今から肩もみが待ってます。それが終わってからソース確認の方向でナニ。