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.
您好!
我有一位客户在开发基于 MSP430FRboot 1.3代码的应用、他们的项目正在使用20.2.7 LTS 编译器进行构建、但一旦他们升级到新的21.6.0 LTS 编译器、编译就会在文件 TI_MSPBoot_MI_FRAMDualImg.c 上失败
我使用新编译器和编译器段未修改地编译了该示例、客户必须用实际的十六进制地址替换几个指针、以使编译成功。 特定的指针/地址为 &_DOWN_Offset_SIZE、&_DOWN_Offset1、&_DOWN_Offset2、需要在代码中替换的 BOOT_Vector_table。
使用以下错误进行特定编译器调用 :
Invoking: MSP430 Compiler "/Applications/ti/ccs1200/ccs/tools/compiler/ti-cgt-msp430_21.6.0.LTS/bin/cl430" -vmspx --code_model=large --data_model=large -O3 --opt_for_speed=0 --use_hw_mpy=F5 --include_path="/Applications/ti/ccs1200/ccs/ccs_base/msp430/include" --include_path="/Applications/ti/ccs1200/ccs/tools/compiler/ti-cgt-msp430_21.6.0.LTS/include" --include_path="/Users/munan/customer_apps/Kodak/MSPBoot_FR5994_UART" --include_path="/Users/munan/customer_apps/Kodak/MSPBoot_FR5994_UART/AppMgr" --include_path="/Users/munan/customer_apps/Kodak/MSPBoot_FR5994_UART/Comm" --include_path="/Users/munan/customer_apps/Kodak/MSPBoot_FR5994_UART/MI" --advice:power="all" --advice:power_severity=suppress --advice:hw_config=all --define=MSPBoot_20bit --define=MSPBoot_BSL --define=MSPBoot_CI_UART --define=__MSP430FR5994__ --define=_MPU_ENABLE -g --gcc --printf_support=minimal --diag_warning=225 --display_error_number --abi=eabi --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --preproc_with_compile --preproc_dependency="MI/TI_MSPBoot_MI_FRAMDualImg.d_raw" --obj_directory="MI" "../MI/TI_MSPBoot_MI_FRAMDualImg.c" MI/subdir_rules.mk:7: recipe for target 'MI/TI_MSPBoot_MI_FRAMDualImg.obj' failed abnormal termination of /Applications/ti/ccs1200/ccs/tools/compiler/ti-cgt-msp430_21.6.0.LTS/bin/cg430 gmake: *** [MI/TI_MSPBoot_MI_FRAMDualImg.obj] Segmentation fault: 11 gmake: Target 'all' not remade because of errors.
我还检查了我的一侧、恢复使用旧编译器解决了这个问题。 21.6.0 LTS 编译器是否有问题?
Munan
Munan、您好!
是的、你是对的。 使用 21.6.0 LTS 编译器时、似乎存在一些错误。 我仍在调试它、如果有任何进展、我将向您提供反馈
这可能与现有 的 EXT_EP-10828 "MSP430编译器分段错误、对变量地址进行数学运算"具有相同的原因、该错误是针对编译器 MSP430_21.6.0.LTS 报告的
EXT_EP-10828的说明为:
[引用]一个表达式、如下所示、对的地址执行数学运算
变量将导致 MSP430代码生成器中的段故障。
uint32_v1 =(uint32_v1 -((uint32_t)&uint16_v1)+((uint32_t)&uint16_v2);
Munan 报告了的编译器崩溃的 MSP430FRboot 1.3 ./MI/TI_MSPBoot_MI_FRAMDualImg.c 源文件似乎正在对变量地址使用数学运算。
例如 、TI_MSPBoot_MI_WriteByteDirect 函数具有:
// If address is an interrupt vector, copy directly to interrupt table addr = (addr - APP_VECTOR_TABLE) + BOOT_VECTOR_TABLE;
其中 TI_MSPBoot_MI.h 定义为:
/*! Application Vector Table */ #define APP_VECTOR_TABLE ((uint32_t) &_Appl_Vector_Start) /*! Application Interrupt Table (from linker file) */ #define BOOT_VECTOR_TABLE ((uint32_t) &__Boot_VectorTable)
切斯特、您好!
很棒的地方! 我不知道这一点。 那么、让我们等待 下一版本的编译器 TI v21.6.LTS、看看它是否已修复。
我已使用21.6.1.LTS 编译器尝试过此操作、问题似乎已得到解决。