1

TMS320DM6437 のブートローダーを開発中です。アイデアは、一方が他方を更新する 2 つの独立したファームウェアを作成することです。ファームウェア 1 では、ファームウェア 2 ファイルをダウンロードし、指定されたアドレスの NOR フラッシュに書き込みます。両方のファームウェアは、ais 形式で NOR フラッシュに保存されます。これで、フラッシュに 2 つのアプリケーションができました。1 つはカスタム ブート ローダーで、2 つ目はメイン プロジェクトです。最初のプログラムから、指定したアドレスにある 2 番目のプログラムにジャンプする方法を知りたいです。また、カスタム ブートローダの作成に役立つ可能性のあるドキュメントに関する情報も期待しています

推奨事項はありますか?

4

1 に答える 1

2

エントリーポイントにジャンプできます。TMS320 2802x および 2803x でこのアプローチを使用していますが、同じはずです。エントリ ポイントのシンボルは c_int00 です。2 番目のアプリケーションで c_int00 のアドレスを知るには、リンカー コマンド ファイルを変更して、ランタイム サポート (RTS) ライブラリを特定のアドレスに修正する必要があります。

それ以外の場合は、RTS を制約なしのままにして、cint_00 の値で初期化される C 変数を (固定アドレスで) 作成することができます。この方法を使用すると、メモリ マップがより柔軟になり、C 変数と一緒に、CRC、バージョン番号など、ブートローダーの他の情報を含む包括的なデータ構造を追加できます。

2 番目のアプリケーションでの周辺機器の (再) 初期化には注意してください。これは、ハードウェア リセットから開始するのではなく、さらにいくつかのレジスタを明示的にリセットするか、割り込み要求をクリアする必要がある場合があるためです。

于 2014-04-05T07:05:20.523 に答える