主题中讨论的其他器件:HALCOGEN
工具/软件:Code Composer Studio
我们有一个基于 TMS570LS3 HDK 的定制板。 我们将使用基于 TMS570LS31x_HDK_Connectivity 测试.zip 的代码。
开箱即用的代码、我们在收到实际电路板前开始进行更改。
我们现在有了该板、并开始使用来自 Spectrum Digital 的 XDS200调试代码。 它会进行编程并运行、但会卡在 sys_startup.c 的复位矢量中
当执行到达 /* initalise 时、C 全局变量*/段循环两次、在 (*处理程序)((const unsigned char *) loadAddr、runAddr)行第二次循环时、它会重置并进入同一个矢量并停留在循环中。
/*用斜体表示 C 全局变量*/ if (&_TI_Handler_Table_Base <&_TI_Handler_Table_Limit) { unsigned char ** tablePtr =(unsigned char **)__TI_CINIT_Base; unsigned char ** tableLimit=(unsigned char **)__TI_CINIT_limit; while (tablePtr < tableLimit) { unsigned char * loadAddr =* tablePtr++; unsigned char * runAdr =* tablePtr++; 无符号字符 idx =*负载地址++; handler_fptr 处理程序=(handler_fptr)(&_TI_Handler_Table_Base)[idx]; (*处理程序)((const unsigned char *) loadAddr、runAddr); } } /*斜体禁忌症*/ 如果(__TI_Pinit_Base <_TI_Pinit_Limit) { void (**p0)()=(void *)_TI_Pinit_Base; while ((unsigned) p0 <_TI_Pinit_limit) { void (*p)()=*p0++; P(); } }
我们可以通过在上述代码周围放置#if 0和#endif 来初始化 C 变量或构造函数来解决该问题、但在存在已初始化数据的情况下会出现问题。
例如、我们还将 lwIP 端口 HALCoGen EMAC 驱动程序与 lwIP 演示结合使用、它具有未出现的初始化字符串变量。 我们将它们更改为 const 以强制它们进入闪存、但必须存在其他问题、即我们没有初始化的数据。
有什么想法、为什么这个开箱即用的示例代码无法初始化 C 变量?