This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好!
我的 eabi 格式有另一个问题。
bl_entrytable.asm 汇编器文件存在问题、它包含在 bl_app 示例中。
如果切换到 COFF 格式、则所有内容都可以编译、在 EABI 格式中、编译器或链接器会抛出 pAppEntry 和 pAppSig 指针、并且 app_table 段保持为空。
如何在 EABI 模式下将这些指针放置在存储器中?
以下是此文件两种格式的内容示例。 我出了什么问题?
EABI 格式:
.def pBootEntry .ref CRCestVector .ref code_start .def pAppEntry *************************** *函数:codestart 段 * 说明:分支到代码起始点 .sect "app_table" app_table: pAppEntry .long code_start pAppSig .long CRCestVector .sect "BL_TABLE " BL_table: pBootEntry .long 0 .end
COFF 格式:
.def _pBootEntry .ref _CRCestVector .ref code_start .def _pAppEntry .def _pAppSig *函数:codestart 段 * 说明:分支到代码起始点 .sect "app_table" app_table: _pAppEntry .long code_start _pAppSig .long _CRCestVector .sect "BL_TABLE: _pBootEntry .long 0 .end
您好!
这是您的自定义项目还是正在尝试 C2000ware DriverLib 示例?
错误消息是什么?
您好!
我正在制作自己的引导加载程序、但这也适用于2806x 示例中的引导加载程序。
我已经弄清楚了问题是什么。 在 EABI 模式下、具有跳转地址(pAppEntry 和 pFwCrcTable)的向量会被编译器优化并丢弃。
为避免这种情况、您需要使用它们、例如:
extern volatile void * pFwCrcTable; void taskFxn (UArg a0、UArg A1) { system_printf ("enter taskFxn ()\n"); Task_sleep (10); volatile uint32_t * ptr = pFwCrcTable; (空) ptr; system_printf ("exit taskFxn ()\n"\}); system_flush();/*强制 SysMin 输出到控制台*/ }
然而、在 EABI 模式下、我没有发现任何地方需要手动将转换矢量注册到 code_start、否则也会优化并由编译器抛出。 这是在 DriverLib 示例中完成的、而不是在旧示例中完成的。 很抱歉、TI 已经屈服于这种使用"高级"库的倾向。
如果未正确指定转换矢量 CODE_START、则这些示例仅适用于调试。
权变措施: