主题中讨论的其他器件:Energia
我们在 传感器产品中使用 MSP430FR5969、现在我们需要在0x10000处利用 FRAM 的上部块、因为在较低的 FRAM 中、我们的程序大小已增加到超过48K。
一种解决方案是在0x10000处找到2个大型初始化数据阵列。 我已修改链接器命令文件(来自 Energia)以执行以下操作:
upper.rodata: { 。 =对齐(2); Keep (*(.upert.rodata)) 。 =对齐(2); Keep (*(.upert.rodata.*) )}> far_rom
far_rom 段位于命令文件中的0x01000处、并且我已按如下方式声明初始化的数组:
const unsigned char __attribute__((section(".uper.rodata"))) Program_Data_IC_1_[4096}={ }
我已删除代码中对该数组的所有引用(因此删除了 keep 关键字)、因为我将使用初始化为0x010000的指针来读取这些值。 我将通过导入此 Energia 17工程(然后修改链接器命令文件)在 CCS 6.1.3中构建此工程。 但是、工程无法编译、并出现以下错误:
Makefile:164:针对目标'AUTO_Optimize_R16_expt.out'的配方失败 ./sigma_SPI.o:(.debug_info+0x90c):被截断的重定位以适合:针对./upperma_spi.o 中.sigfram 部分中定义的符号`Program_Data_IC_1'的 R_MSP430_16_byte
我真正需要的是生成一个可加载文件、该文件的阵列映射到上部 FRAM。 我已经尝试了一些操作、例如介绍-mlarge 构建选项和"far"关键字、但这些操作会产生构建错误、因为 MSPGCC 4.3.3不支持这些选项。 那么、Energia 17构建工具似乎不允许将任何数据位置置于64k 边界之上?
使用其他允许位置高于64k 并将其与 Energia 构建的主程序、目标模块和库链接在一起的构建工具来构建目标模块是否可行? (我真正需要的是一个可加载的十六进制文件、它在上部 FRAM 中具有已初始化的阵列) 对此是否有任何解决方案或权变措施、没有切换到新的构建工具?
提前感谢、
John