Cortex-M3 チップがあり、eCos を使用するブートローダーを実行しています。ブートローダーは、ファームウェアの更新などを確認した後、実際のアプリケーションが存在する ROM 上の別の場所 (BASE_ADDRESS_OF_APP + 0x19) にジャンプします (これも eCos でコンパイルされています)。
ここで、通常のファームウェアを実行する代わりに、Cortex-M3 ターゲット用にコンパイルされた CppUTests を実行したいと考えています。そのため、実際のオペレーティング システムではなく、ecos glibc を使用してターゲット プラットフォーム用にテストをコンパイルおよびリンクできます。しかし、JTAG を使用してボードにロードすると、実行されません。
arm-eabi-objdump を使用して調査した結果、CppUTest ファームウェアのリセット ベクターが、通常のファームウェアのオフセット 0x18 とは対照的に、オフセット 0x490 にあることがわかりました。私の疑いは、これがテストが実行されない理由であるということです。これは正しいです?
2 つのファームウェアを同じリンカー スクリプトでリンクしているときに、これらのファームウェアの開始アドレスが異なる可能性があるのはなぜですか?
テスト プログラムの開始点がアプリケーションの開始点と同じであることを確認するにはどうすればよいですか?