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.

[参考译文] MSP430FR5969:将0x10000以上的 FRAM 与 MSPGCC 4.6.3配合使用

Guru**** 2589265 points
Other Parts Discussed in Thread: MSP430FR5969, ENERGIA

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/613829/msp430fr5969-using-fram-above-0x10000-with-mspgcc-4-6-3

器件型号:MSP430FR5969
主题中讨论的其他器件: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    John、
    我正在邀请一位有关 Energia 的专家为您服务。 他应尽快作出答复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Energia 附带的 mspgcc 版本无法访问上部存储器。 我认为、在它被淘汰之前、有一个版本确实支持上部存储器、但我决定不冒险将其引入。 MSP430内核版本将在年底推出新编译器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢 Energia 专家的回答、因为这是我们项目路线图的关键信息。 我确实看到了在2016年底围绕 GitHub 进行的大量对话、讨论了使用新工具发布新版本的可能性。

    因此、作为解决我们问题的另一种方法、是否可以采用 Energia 17项目并使用来自另一个 GCC 工具集的链接器(我认为还有另外两个工具链、RedHat 和 Somnium、对吧?) 将其与我们单独构建的初始化数据阵列链接? 我根本不需要从 Energia 以符号方式访问这些数组、我只需要知道它们在 FRAM 中的位置。

    谢谢、
    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "遗憾的是"我不是链接器/编译器专家、因此不确定这是否可行。 不过值得一试。

    关于支持 MSP430x 的 MSP430-gcc 4.7.0实验编译器、您可以尝试为您的操作系统构建该编译器。 然后更改 platform.txt 以适应在上部存储器中的放置。 这里有一些很好的说明: https://github.com/contiki-os/contiki/wiki/MSP430X。 我刚刚在 Linux 上尝试了这个脚本、它看起来构建正常。 不确定是否会在 Windows / macOS 上使用此脚本进行编译。 我们确实有一个脚本、用于构建 Energia 中包含的 MSP430工具链。 发布于: github.com/.../build-mspgcc

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    John、
    这是否解决了您的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    John、
    我要关闭此主题。 如果您需要进一步的帮助、请回复、它将重新打开。