我想在应用程序数据(设备信息)中找到一个常数值表,最好在向量表的末尾。
在startup.s中,我执行以下操作:
MODULE ?cstartup
;; Forward declaration of sections.
SECTION CSTACK:DATA:NOROOT(3)
SECTION .intvec:CODE:NOROOT(2)
EXTERN __iar_program_start
EXTERN SystemInit
PUBLIC __vector_table
PUBLIC _InfoEqData
DATA
__vector_table
DCD sfe(CSTACK)
DCD Reset_Handler ; Reset Handler
/* ............... */
DCD LCD_IRQHandler ; LCD
DCD USB_IRQHandler ; USB
__vector_table_end
_InfoEqData EQU __vector_table_end
在main.c中,我执行以下操作:
#pragma location = _InfoEqData
const EqIdentify_t eqIdentify = { ... }
当我编译代码时显示以下(预期)错误
Error[Pe020]: identifier "_InfoEqData" is undefined ... \tst_vBus_main.cpp 25
我如何告诉编译器从startup.s中找到该标识符?
提前感谢
0
投票
IAR工具链仅支持#pragma location 1将数据固定在由文字数字2或段名称3给定的绝对地址上。
从我的角度来看,您应该在链接器命令文件中定义一个自己的段3,然后根据需要定位它。
1IAR C/C++ Compiler User Guide for the 8051Microcontroller Architecture (C8051-7),第七版:2017年3月,第372页。
2ibid.,第七版:2017年3月,第260页。
3ibid.,第七版:2017年3月,第262页。
4IAR Linker and Library Tools Reference Guide (XLINK-5001),2010年4月,第21页。