私は現在、rvctコンパイラが特定の変換単位でリンクしないように強制し、リンクされているふりをする可能性を調査しています。
当社の製品はスペースの制約に非常に厳しい状況で稼働しており、スペースを管理しながらいくつかの単体テストを統合するのに問題があります。
基本的に、実行時に利用できるメモリは、単体テストを格納するのに十分ですが、それらを保持するための十分なROMスペースがありません。
コードのメモリのどのセグメントがスキャッタファイルのデバイスに入るのかを正確に制御する手段があるので、単体テストコードが配置される領域を定義する方針に沿って考え、コンパイラにリンクしないように強制しますコンパイル時にその特定のコードで。
次のようなもの:
Result UnitTestEntryPoint (UnitTest suite) {
if (hasTestInMemory) {
switch (suite) {
case EncrpytionTest:
return EncrptyUnitTest();
// more tests.
}
}
}
// Actual Tests, can we not link this code, but just pretend we link to them?
Result EncrpyUnitTest (void) {
// Do stuff...
}
次に、実行時に、単体テストバイナリを、スキャッタファイルで定義した指定のメモリ領域にアップロードし、にフリップhasTestInMemory
しtrue
ます。
これは可能ですか?
または、そうでない場合は、スペースの制約を満たし、実行時に単体テストをロードできるソリューションを探す正しい方向を誰かに教えてもらえますか。
ありがとう、