工具/软件:TI C/C++编译器
您好,
我正在尝试将autoinit.c引入我的项目。 我成功构建。 我的链接程序顺序是autoinit.c,rts.lib,链接程序生成。 它加载到板上,但最终以abort()结束。 我在while循环中放置了一个索引计数器。 索引在发生故障时为1,默认为0,在构造函数调用后递增
unsigned int* x=0xEFFFFFF08; //几乎位于内存顶部。
*x=0;
While (&(__TI_INITARRAY_Base[I])!=__TI_INITARRAY_LIMIT)
{
__TI_INITARRAY_Base[I++]();
(*x)++;
}
第一次调用 我的全局 构造函数似乎返回正常,但第二次没有返回。 此中止中的NRP值为0x0000_0000。0000。 总共约有30至40个构造函数。 RTS库本身工作正常。
1. 你是否知道这是否已经过测试和有效? 它是否有失败的原因? 我的项目位于一台独立的计算机上; 请告诉我是否应该尝试创建一个示例项目(这可能不容易)。
和
2. 假设我想使用auto_init更改重建RTS库。 为什么我看不到我的任意存储位置被填充。 我可以在重建的RTS.lib中使用printf()来完成此操作
设置:
Code Composer Studio 5.x
Big Endian,ELF格式。 添加 了隔离文件 auto_init.c所需的"__TI_EABI"标志,并在项目中执行auto_init_elf()函数。
CGT 7.3 .................23 (这是我从中获取RTS.src的位置)
起点:一种已投入使用的产品。 已知可成功引导并使用基本RTS库执行。
重建RTS库似乎可以正常工作,但我看不到全局指针填充 内存中的任意空间。 我证明我可以在printf.c文件中执行此操作,但在auto_init.c::auto_init_elf()中却没有。