【发布时间】:2019-10-23 10:47:49
【问题描述】:
背景
我正在为嵌入式 Cortex M4 TI-RTOS SYS/BIOS 目标构建 C 应用程序,但是这个问题应该适用于将单个二进制文件加载到某个微处理器上的所有嵌入式目标。
我想要什么
我想在目标上做一些原位回归测试,我只是用一些测试函数替换单个函数。例如。 GetAdcMeasurement() 函数将从只读数组返回预定义值,而不是进行实际测量并返回该值。
这当然可以用一堆#ifndefs 来完成,但我宁愿尽可能保持生产代码不变。
我的尝试
我认为实现这一点的一种方法是在链接器阶段有重复的符号定义,然后让链接器优先考虑来自测试套件的定义(给定一些#define)。
我研究过使用 LD_PRELOAD,但这似乎并不适用于这里(因为我只使用静态对象)。
详情
我正在使用 TI Code Composer,在 Sitara AM57xx 平台上使用 TI-RTOS 和 SYS/BIOS,为 M4 远程处理器(表示为 IPU1)进行编译。 这是编译器和链接器的路径
/opt/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/bin/armcl
【问题讨论】:
-
我也在编译器手册downloads.ti.com/docs/esd/SPNU151M/index.html#SPNU151M_HTML/…中寻找解决方案@
-
@Groo 这会是#pragma WEAK(符号)指令吗? downloads.ti.com/docs/esd/SPNU151M/index.html#SPNU151M_HTML/…
-
嘿,是的,这似乎是一回事!也许您可以尝试一下,如果可行,然后发布您自己的答案。
标签: c compilation linker arm