Hack BBS

[全部のスレッド一覧][新規投稿][記事の削除・変更] [Home Page]

返信投稿はタイトルのリンクをクリックして下さい
スレッド【No.618】の中の記事をすべて表示しています

【No.618】のスレッド
04/05/22(土) 02:00:58 投稿者[たつや] <http://linkstation.yi.org/> [No.618]のスレッド内
【No.618】 タイトル[ブートローダのコマンド] この記事がスレッドの最初です
ブートローダのソースから、デバッグモードのコマンドの機能が大
体分かってきたので、コマンド一覧を作ってみました。

実際これでカーネルを FLASH に書き込もうとすると、

@ writeb で 16 または 32 バイト単位に RAM にデータを書き込む
A @を繰り返して 64KB の書き込みバッファ分のデータを作る
B writef で書き込みバッファのデータを FLASH に書き込む
(このとき、あらかじめ 64KB 分のチェックサムを計算しておき、
writef コマンドに渡す必要がある)
C @〜Bを繰り返してファームのデータをすべて書き込む

という手順になります。気が遠くなりそうですね。

以下にコマンド一覧を添付します。間違いがあればご指摘願います。

ブートローダのコマンド一覧:

ledstop
警告 LED の点滅を停止する

flash
FLASH ROM のチップ名称を表示する

erasek
FLASH メモリのカーネル格納領域を全消去する

writeb <offset> <data>
FLASH 書き込み用バッファにデータを書き込む
offset はバッファの先頭からのオフセットを 10H (16バイト)単
位で 0H 〜 FFF0H の範囲で指定可能
データは複数バイト連続して指定することができる (オフセット
が 16 バイト単位でしか指定できないため、連続したデータを書
き込みには少なくとも 16 バイト以上指定する必要あり)
連続書き込みのバイト数の制限は特になし。
(コマンド文字列の全体の長さが 255 文字以内という制限はある。)

バッファの先頭から 16 バイト書き込みの例:
# writeb 0 0102030405060708090a0b0c0d0e0f

書き込みバッファは RAM の 400000H 〜 40FFFFH が使われる

writef <address> <checksum>
writeb で用意した FLASH 書き込み用バッファ (64KB) の内容
を FLASH メモリに書き込む
address にはデータを書き込む FLASH メモリのアドレスを指
定する
address は FFC00000 〜 FFFF0000H の範囲で 10000H (64KB)
単位に指定可能

mmb <address> <data>
指定した1バイトデータを任意のメモリに書き込む
address の範囲等のチェックは行わないため、RAM のエリア以外
に書き込んだ場合の動作はマッピングされたデバイスしだい。
(FLASH の場合は単に無視される??)

md [<address>]
address から 128バイトのメモリダンプを表示する
address を省略した場合は前回実行時の続きから表示する (初期
値は 0)

help
デバッグコマンドの一覧を表示する

quit
デバッグモードを抜け、カーネルを起動する

戻り値は全コマンド共通
0 正常終了
1 FLASH メモリの種類が特定できなかった
2 FLASH メモリの消去に失敗した
3 アドレスの指定誤り
4 パラメータの指定誤り(必須パラメータが指定されていない)
5 チェックサムエラー
6 FLASH メモリの書き込み失敗

パラメータの指定はすべて 16 進数で以下の例外を除き 1〜8 文字(32bit)
mmb コマンドの第 2 パラメータは 1〜2 文字(8bit)
writeb コマンドの第 2 パラメータは任意の文字数