工具/软件:TI C/C++编译器
在 F28M36 Concerto 的 M3内核上使用 TI-RTOS NDK 时遇到一些问题。
在 tcpecho 示例之后、我尝试按如下方式将 NDK 添加到.cfg 文件中。
/*========================= NDK 配置=================== *
VAR NDK = XDC.loadPackage ('ti.NDK.config');
VAR Global = xdc.useModule('ti.ndk.config.Global');
VAR IP = xdc.useModule('ti.ndk.config.Ip');
VAR TCP = xdc.useModule('ti.ndk.config.Tcp');
VAR UDP = xdc.useModule('ti.ndk.config.Udp');
global.ipv6 = false;
global.stackLibType = Global. min;
Global.networkOpenHook ="&net_open_hook";
//自动调用 fdOpen/CloseSession 以执行套接字任务*/
Global.autoOpenCloseFD = true;
global.pktNumFrameBufs=10;
global.memRawPageCount = 6;
global.ndkThreadStackSize = 8192;
global.lowTaskStackSize = 1024;
Global.normTaskStackSize = 1024;
global.highTaskStackSize = 1024;
tcp.transmitBufSize = 1024;
tcp.receiveBufSize = 1024;
添加此项后、整个.const 段未初始化、这会由于.const 中任何内容的第一个取消引用崩溃而导致引导失败、这恰好是 XDC runtine Startup_Impexecl (即.const:XDC_RUNTIME_Startup_execImpl_C)用作指针时。
这是唯一做出的更改。 链接器.cmd 文件也没有变化。
如果.cfg 文件中没有 NDK、.map 文件会显示:
init_array
0 00218000 00000000 未初始化
.const 0 00227a80 0000233e
00227a80 00001840 prog_m3_pem3.oem3 (.const:XDC_runtime_text_charTab__a)
如果 NDK 位于.cfg 文件中:
init_array
0 00218000 00000000 未初始化
.const 0 0023364 00002554 未初始化
00233364 0000186f prog_m3/pem3.oem3 (.const:XDC_runtime_text_charTab_A)
导致此段未初始化的原因是什么、如何解决?
编译器为 ARM_15.12.3.LTS、TI-RTOS 版本为 tirtos_c2000_2_16_01_14。