我目前正在研究强制 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
.
这可能吗?
或者,如果没有,有人可以指出我寻找解决方案的正确方向,该解决方案以某种方式满足我们的空间限制并能够在运行时加载单元测试。
谢谢,