client (0.6.2 anago only) | 2010-11-19 20:00 |
kazzo (0.1.3) | 2010-03-13 00:09 |
program mode では programcore.nut と指定されたスクリプトファイル(.af or .ag)を2つ読み込みます。programcore.nut の内容は変更しないでください。
スクリプトファイルでは board, program_initialize(), cpu_transfer(), ppu_transfer() の4つの定義が必要です。簡潔な記述のために関数を追加することも可能です。
flash memory にはデータ書き込み時に待ち時間が発生します。この待ち時間の間にもう1つのデバイスを書き込みます。このために下記の順に定義された処理が実行されます。
最も重要な関数が program_initialize() です。program_initialize() の直後に erase が行える状態にしてください。
xxx_transfer() 内でもコマンドアドレスが変更できますが、それを利用するのは特殊な条件なので、それ以外は program_initialize() で完結するはずです。
xxx_transfer() では順番に ROM image を転送できるように記載します。並行処理の切り替えは自動で行います。
banksize と maxsize の単位は byte です。
function program_initialize(d, cpu_banksize, ppu_banksize)
なし
CPU, PPU 領域のコマンドアドレスの定義と確保を行います。program_initialize() のあとに erase が行えるようにしてください。
function cpu_transfer(d, start, end, banksize)
なし
CPU 領域の ROM image を転送する処理です。for ループで可変領域データを転送し、最後に固定領域のデータを転送してください。
function ppu_transfer(d, start, end, banksize)
なし
PPU 領域の ROM image を転送する処理です。for ループで可変領域データを転送してください。
PPU 領域の ROM image が存在しないハードの場合は ppu_transfer() 定義だけして内容なしにしてください。
script_common_ja を参照。
function cpu_command(d, romoffset, memorymapoffset, banksize)
なし
cpu 領域に接続された flash memory のメモリマップ上のコマンドアドレスを定義します。program_initialize() で定義し、 xxx_transfer() 内部で再定義ができます。
function ppu_command(d, romoffset, memorymapoffset, banksize)
なし
対象が ppu 領域になる。詳細は cpu_command の説明を参照。
function cpu_program(d, address, length)
なし
指定領域を書き込みます。処理の切り替えは内部で自動に行います。
function ppu_program(d, address, length)
なし
指定領域を書き込みます。処理の切り替えは内部で自動に行います。
function cpu_erase(d)
function ppu_erase(d)
なし
対象領域の flash memory を erase します。この関数は .af or .ag ファイルで使用しないでください。