大家好!
我想将 Code Composer 9.3.0下运行 cl430版本(v18.12.4.LTS)的旧版 MSP430 (FR4133)工程转移到最新可用的 TI MSP 430 GCC 和 Linux Ubuntu 下的 CMAKE 设置。
如果您问为什么:拥有基于 GCC、相对面向未来且独立于 IDE 的解决方案,可以方便地使用和集成诸如 clang-format 和 clang-tid.
但是、我仍然有一个问题、那就是内置的 hex 文件似乎有问题、我必须进行一些我无法100%确定的调整。 我想通过 MSPFlasher 刷写十六进制、以证明它像以前一样工作。
代码基于用于 MSP430的 TI RTOS、不再进行维护: downloads.ti.com/.../tirtos_msp43x_setuplinux_2_20_00_06.bin
为了获得编译和链接的代码、我必须将我从 TI 网站下载的 MSP430_driverlib 替换/更新为2.91.13.01。
我还使用了可以从 TI 网站获得的最新 MSP430 gcc 编译器:msp430-gcc 9.3.1.11
此外、我必须将 POP.A 汇编器指令替换为 POPX.A、以再次提取 prep_stack_for_RETI 函数汇编中的20位地址。 如这里所示: Diapositivo 1 (roboticsclub.org)。 我在这里的理解是否正确?
我已经为 GCC 设置了以下编译器标志
-mload (对20位指针、20位 size_t 使用大型模型寻址)
-O2 -ffunction-sections -Fdata-sections -mhwmult=none -g
mlarge-flag 似乎与 cl430的--code_model=large 等效
代码需要根据#ifndef 检查是否设置了__large_code_model__,但在 gcc-msp430中,mcro 不可用,我必须手动设置定义。
调整代码和数据区域参数也没有任何帮助。
GCC 链接器标志
-mmcu=${msp_mcu}
-t/usr/bin/msp430-gcc/include/msp430fr4133.ld
-nostdlib
-WL、-Map=${EXE_flowmeter}.map
-WL,--GC 部分
我没有看到以下内容直接等效的其他 cl430编译器标志:
--- heap_size=160–转换为 ihex 时它与 objcopy 参数有何关系?
--- stack_size=160–它和 objcopy 参数有什么关系?
--- silicon_version=mspx -根据文档也需要 cl430 20位指针。
是否有人提示可以这么做、以及有关代码模型的设置是否足够? 我已检查代码、并确信不会遗漏包括 CMAKE 设置中的部分代码。
TI 编译器文档: MSP430优化 C/C++编译器 v18.1.0.LTS 用户指南(修订版 R)
GCC 编译器文档: MSP430 GCC 用户指南(修订版 F)(TI.com)