October 29, 2007Super Sylphide 進捗状況(12) -- DSPプログラムROM化オートパイロットシステムsuper Sylphideですが、航法(INS/GPSナビゲーション)部分がほぼ完成したので、プログラムをROM化しスタンドアローンで動作するようになりました。現在、倍精度浮動小数点(double)で、18状態量(位置で5、速度で3、姿勢で4、センサバイアスで6)、カルマンフィルタの誤差共分散行列では16 x 16のアルゴリズムが100Hzで回っています。 長くなりそうなので、トップページからこられた方を続きをどうぞ。 ※その後、Super Sylphide絡みでTime Keeperのファームウェアを公開しました。 以降、DSPはSuper Sylphideに搭載されているTexas Instrumentsの浮動小数点DSPであるTMS320C6713BPYP200を仮定しています。恐らくアーキテクチャが近いC67XX系でしたら同じ手順でいけるのではないでしょうか。またターゲットとなるROMはFlash ROMでCE1に16bit幅で接続されているものとします。 まずはFlash ROMに書き込むイメージを作成します。 次にイメージが作成できたらDSK6713に付属していたFlashBurnというユーティリティを使って書き込みました。本来このユーティリティはDSKしか動作しない(その証拠にどのようなボードでも動作する有償のFlashBurn Porting Kitなるものがあります)のですが、Super SylphideはDSK6713とほぼ同じ作りな為なのか、動作してしまいました。もしFlashBurnが動作しなくとも、DSPにFlash ROM書込みアルゴリズムが入ったプログラムを転送後、それをPCのプログラムと対話的に実行するだけでROM書込みは達成されますので、代替プログラムは簡単に作れると思います。 最後にROMプログラムが問題なく動いているか、デバックをしました。 .cinit : btad=90041068 dest=8023c690 size=00001474
のような行を含んでいるので、btad(コピー元アドレス)とdest(コピー先アドレス)の内容を比較します。なおbtadの先頭にはエントリポイント、コピーサイズ、コピー先アドレスが含まれているので最初の数バイトは飛ばしてください。メモリの内容が一致しているようでしたら、本格的なデバックをします。同じくCCSでシンボルのロード([File]-[Load Symbols]-[Load Symbols Only]で、最初のステップでメイクをした結果生成されたオブジェクトを指定)をした後、実行ボタン([Debug]-[Run])を押してみてしてみてください。正常にプログラムが動いているようなら、ROM化前の、RAMロード後に実行しているのと同じ状態が再現されるはずです。 以上をもってROM化が完了しました。次は航法アルゴリズムのブラッシュアップを行いつつ、誘導・制御に手をだしてみようと思います。なお、アルゴリズムの詳細については以前の記事、『低精度MEMSセンサと汎用GPS受信機の融合による高精度航法システムの研究』をご覧ください。 コメント
初めまして! デバイスはC6713を使っており、 >岡田さん コメントする
|
スポンサード リンク
|