Shinichiro Nakamuraさんが開発されたNatural Tiny ShellをBlackfinに実装してみました。Duinofin(BF504F Arduinoピン互換基板)のブートローダに使おうかと思っています。
http://sourceforge.jp/projects/ntshell/
ソース一式をダウンロードして、ドキュメントとサンプルコードを確認しながら、UART部分を実装して実行。この間約1時間ぐらい。
あっさりとシェルが動きました。

きちんと制御シーケンスも認識し、History機能も動いています。
ビルド時にsize_tの定義でエラーが出ましたが、それ以外はWarningもでず、よく出来ています。
VT100の実装は何度かしたことがありますが、結構面倒なんですよね。特にHistoryなんて、めんどくさくて実装見送りとか。
ビルド後のフットプリントがこちら。NT-Shellのソースはオリジナルのままですが、Blackfinの初期化コードやドライバも含んでいるので、参考程度に。
コードサイズ :7728 bytes
スタックサイズ:76 bytes
データサイズ :4260 bytes
データサイズがやけにでかいなと思ったら、vtparse_table.cのSTATE_TABLEが犯人のようです。Blackfinはコードとデータは別扱いなので、コード領域にconstデータを置けないのですが、コード領域にconstデータが配置できるプロセッサなら、使用RAMサイズはかなり小さくなるかと。この程度なら、何の問題ありません。
あとはELFパーサとFLASHアクセスまわりを整備すれば、専用ブートローダの出来上がり。
最近の画像[もっと見る]