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.

[参考译文] Compiler/LAUNCHXL-F280049C:Compiler crashes on function pointer call

Guru**** 2020320 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D, TMS320F28377D, BOOST-DRV8711, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/901107/compiler-launchxl-f280049c-compiler-crashes-on-function-pointer-call

器件型号:LAUNCHXL-F280049C
主题中讨论的其他器件:LAUNCHXL-F28379DTMS320F28377DBOOST-DRV8711C2000WARE

工具/软件:TI C/C++编译器

我遇到了与这些问题相关的问题:  

Compiler/LAUNCHXL-F28379D:Compiler crashes on function pointer call

编译器/TMS320F28377D:ti-CGT-C2000_20.2.0.LTS 的编译器版本存在错误...

于2020年4月3日发布。

与相关问题一样、每当我取消对函数指针调用的注释时、编译器也会崩溃。  

void (* DispFunc[4])(uint16_t);

initDisplay(void)

  //设置函数指针

  DispFunc[0]= SET_nSleep;

  DispFunc[1]= SET_nRESET;

  DispFunc[2]= SET_NumSteps;

  inituart();

ProcessDisplay()

  IF (显示)

  {

    uint16_t MessageType = receivedChars[0]<<8 + receivedChars[1];

    uint16_t displayData = receivedChars[2]<<16 + receivedChars[3]<<12 + receivedChars[4]<<8 + receivedChars[5];

    //DispFunc[MessageType](displayData);  <<<<<<<<<< 取消注释会导致编译器崩溃

    DispCharRcvd = false

  }

我尚未创建测试用例、但如果需要、我可以创建测试用例。 我还包括了我的 display.pp 文件。  

我的完整控制台消息如下所示:

****为项目 BOOST-DRV8711_F280049C 构建配置 CPU1_RAM ****

/Applications/ti/ccs1000/ccs/utils/bin/gmake -k -j 3 all -O  

 

编译文件:"../display.c"

调用:C2000编译器

"/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -off --include_path="/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C /Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C/device /Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/include --include_path=fpu32 --include_path="--include_path="/Applications/ti/c2000/C2000Ware_2_01_00_00/driverlib/f28004x/driverlib --include_display_suppression-pred=100abi_display-display-display_suppress-pred=raidaturb.abi-display_display_supu.abi_decontinu.cpu.abi_supu.cpu.abi-display-supu.abi_supu.abi-display_supu.cpu.abi-display_supu.abi_supu.abi-display_supu.abi-display_supu.ab  

 

>>编译失败

subdir_rules.mk:7:目标'Display.obj'的配方失败

 

内部错误:/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/acia2000遇到段错误

         处理函数时(未知或文件范围)文件(未知)行0

 

这是由 TI EABI C/C++解析器中的缺陷导致的。

TI 客户支持可能会建议解决方法来避免这种情况。

 

升级到编译器的最新版本可能会解决此问题。

 

在 E2E 支持论坛中联系 TI、网址 为 http://e2e.ti.com 、位于

"开发工具"、"TI C/C++编译器"。  请参阅标题为的链接

"提交问题"。

 

我们需要看到整个错误消息以及完整、可重现的消息

包括所有命令行选项的测试用例。

包含由选项--preproc_with_comment 创建的.pp 文件

 

gmake:***[display.obj]错误1.

编译文件:"../main.c"

调用:C2000编译器

"/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -off --include_path="/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C /Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C/device /Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/include --include_path=fpu32 --include_path="--include_path="/Applications/ti/c2000/C2000Ware_2_01_00_00/driverlib/f28004x/driverlib --include_display_suppression-main=100abi_driag.abi=mait_suppress-out-pred_probature-board.abi_decontinu.abi_decontinu".  

建筑完工:"../main.c"

 

编译文件:"../device/f28004x_codestartbranch.asm

调用:C2000编译器

"/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -off --include_path="/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C /Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/include --include_path=fpu32 --include_path="--include_path="/Applications/ti/c2000/C2000Ware_2_01_00_00/driverlib/f28004x/driverlib --expression_expression-device-expression-expression-expression-/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C/device --ategra-code.comprendat_debaturature-board-express-express-trab-ategra-rand_decontinu.ate-board-express-express-ature=/device/f28004x_codestartbranch.asm --rand_debrand_debus-express-ature-board.abi_debotrand_debotrand_decontinu.ature-inu.abi-board-ex-ex-

已完成构建:"./device/f28004x_codestartbranch.asm

 

编译文件:"../device/device.c

调用:C2000编译器

"/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -off --include_path="/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C /Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/include --include_path=fpu32 --include_path="--include_path="/Applications/ti/c2000/C2000Ware_2_01_00_00/driverlib/f28004x/driverlib --include_display_suppression-out-prob_device-pred=/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C/device /device/device.c --board_suppression-out-pred_probature-board-out-board-board-board-pred_supertion_di_di_diagecontinu.abi-board.abi_supert.abi-board.abi_supert.abi_probulation="-out-out-board.abi-board.abi-board.abi-display_supert.abi-board.abi=

已完成构建:"./device/device.c

 

编译文件:"../utility.c"

调用:C2000编译器

"/Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -off --include_path="/Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C /Users/clark/Documents/CCS_Stepper/BOOST-DRV8711_F280049C/device /Applications/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.0.LTS/include --include_path=fpu32 --include_path="--include_path="/Applications/ti/c2000/C2000Ware_2_01_00_00/driverlib/f28004x/driverlib --include_display_suppression-pred=100abi_driag.abi=prob.abi_decontinu.use-board-board.abi_supu.abi_display-board.probulation=rand_decontinu".  

"./utility.c"、第728行(第32栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

"./utility.c"、第728行(第68栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

"./utility.c"、第728行(第68栏):建议#2615-D:(性能)使用-fp_mode=relaxed 为 FP 分部启用 TMU 硬件支持。

"./utility.c"、第728行(第38栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

"./utility.c"、第728行(第40栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

"./utility.c"、第728行(第96栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

"./utility.c"、第728行(第75栏):建议#3195-D:(性能) EABI 双精度为64位、而 COFF 为32位。 考虑将双精度数更改为浮点数、以提高 FPU32模式下的性能。

已完成构建:"./utility.c"

 

gmake:目标"全部"不会由于错误而重新生成。

****构建完成****

我注意到,上述问题之一的解决办法如下:

C28编译器版本20.2.1.LTS、可修复此问题、从4/9/20开始提供。

您可以使用 CCS 菜单在 CCS 中安装:

  Help -> Install Code Generation Compiler Tools...(帮助->安装代码生成编译器工具...)  

当我转到“帮助”>“安装代码生成编译器工具”时,我看不到任何升级。 我正在使用 TI v20.2.0.LTS、但找不到 v20.2.1.LTS。

您是否需要测试用例或任何其他信息来提供此问题的解决方案?

Clark

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

    Clark、

    我在 Mac CCSv10中看到 C2000的20.2.1 LTS 编译器。

    有什么显示吗?  我知道最初发布时出现了问题。  这可能是缓存更新站点的问题。

    您可以清除该选项、但转到首选项对话框。  然后导航到此处、更新站点列表如下所示。  选择 Mac 编译器更新站点、然后单击重新加载按钮。

    我看到的另一个问题是 CCS 在安装后无法找到编译器。  如果我单击此处的"重新发现"以修复它:

    另一个选项是从下面的站点手动下载编译器。  完成此操作后、请确保返回首选项对话框中的编译器部分、指定其安装位置、然后单击刷新让 CCS 找到它。

    http://www.ti.com/tool/download/C2000-CGT-19

    此致、

    John

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

    谢谢 John! 您的及时建议帮助我解决了我的问题。

    我的问题是 CCS 无法识别新版本。 由于下载列表中已安装、因此未显示该文件。 当我取消选中"隐藏已安装的软件"按钮时、我在那里看到了新版本。 进入 CCS 首选项并刷新 有助于 CCS 找到新版本。 然后、我进入项目首选项、选择了新版本和嘣!...我的应用程序已编译。  

    这正是我离开 ESP 和 ST 的原因。 TI 的支持以及您的培训服务和软件质量使我非常忠于 TI。

    干得不错、John、

    Clark

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

    Clark、

    好极了。  非常感谢您的反馈。

    通常、如果编译器是从 CCS 安装的、CCS 应自动发现编译器。 但是、现在存在一个问题。  这一点应在我们的下一次更新(10.1)中讨论。  发现软件包可能会很慢、我们通常在每次启动 CCS 时都这么做。  当发现发生时、我们进行了一些优化来改进。  更新应触发发现、但该发现无法正常工作

    此致、

    John