GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR-CITRUSでCS+のRXシリアルデバッガのモニタプログラムと初期ファームウェア(USBマスストレージ書き込み用ファームウェア)を結合出来ないものかと思い、初期ファームウェアのソースコードを読んでいたところ、GR-CITRUS/GR-SAKURAでbinファイルの最大サイズがROMサイズの半分になっている理由が分かったような気がしてきました。先日、岡宮様からは以下のような説明がありましたが、実は、今ひとつピンと来ませんでした。『USBファーム使用時(bin書き込み)の有効ROMサイズは(ROM size)/2 - 64kになります。最後の64kはUSBファーム自体のサイズですが、2分の1はbinファイルを一旦ROMに蓄える必要があるためです。一旦蓄えた後、それが.binかどうかを確認し、ユーザー領域にコピーして分岐してます。』ソースコードを読んで分かったのは以下のことです。(1) ROMの後ろ半分はWindows/Linux/MacOSXから書き込む為の『FATファイルシステム』の領域になっている(2) Windows/Linux/MacOSXはFATファイルシステムを操作してbinファイルの書き込みを行う(3) USBファームはFATファイルシステム操作関数を持っていてbinファイルを読み出すことが出来る(4) USBファームは読み出したbinファイルの内容をROMの前半分にベタ詰めで書き込んで行く上の(2)の項目の処理は以下のソース/関数で行われていました。Okamy-citrus_usbfw-27afb53591b1¥src¥MSCFW¥MEDIA¥r_usb_ATAPIdriver.cusb_pmsc_SmpAtapi_PostWrite_StorageFlash()上の(4)の項目の処理は以下のソース/関数で行われていました。Okamy-citrus_usbfw-27afb53591b1¥src¥SmplMain¥APL¥r_usb_PMSC_apl.cuserapl_StartExecution()参考になれば。
ありがとうございます。そうですね、Macだとbin以外のファイルも書き込まれるためファイルシステムを入れてbinだけを詰めて書き込んでユーザーアプリのみが実行されるようにする必要がありました。