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.

[参考译文] 编译器/TMS320F28375S:CCS 选项的后续版本、-no_fast_branch

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/716932/compiler-tms320f28375s-successor-of-the-ccs-option---no_fast_branch

器件型号:TMS320F28375S
主题中讨论的其他器件:C2000WARETMS320F28377S

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

您好!
您能否告诉我 CCS 选项-no_fast_branch 的后继路由器?

它在 CGT 6.4.12之前可用。


我的客户首选此选项、因为其源代码中的"for "循环已转换为 BF 指令。 因此、代码的运行速度比更高的编译器更快。

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

    请参阅文章 在 RAM 中放置函数。  关于 C2000、它说...

    将为 ramfunc 函数生成快速分支指令。 将为所有其他函数生成常规分支指令(假定这些函数从闪存运行)。 -no_fast_branch 选项已被弃用、不再具有任何效果。

    谢谢、此致、

    乔治

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

    再次感谢 Ozino。
    e2e.ti.com/.../715933



    因此 ramfunc 是存取器。 但只要我知道在项目中启用-ramfunc 时 UC 崩溃。
    请假设使用基于闪存的器件、如我客户的 F28375S。
    崩溃的原因是,在将 RAM 中的 main()复制到 RAM 之前调用它。

    -ramfunc 的副作用对我们来说并不容易。

    您是否计划发布权变措施代码?


    很抱歉、我的客户很难通过 C 文件或 C 函数指定-ramfunc。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hideaki Nambu 说:
    发生故障的原因是,RAM 中的 main()在复制到 RAM 之前被调用。

    在 main 开始执行之前、所有 ramfunc 函数、包括 main、由启动代码从闪存复制到 RAM。  不过、这确实假定您的链接器命令文件正确处理 ramfunc 函数。  也许不是。  请发布您使用的链接器命令文件。  因此论坛将接受它、添加文件扩展名.txt。   

    谢谢、此致、

    乔治

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

    乔治

    感谢您的回答。 我附上了整个项目:

    /cfs-file/__key/communityserver-discussions-components-files/171/blinky_5F00_cpu01_5F00_180811mod_5F00_ccs810_5F005F00_c2000ware_5F00_01_5F00_00_5F00_05_5F00_00.zip

    生成工程的步骤

    • CCSv810启动。
    • 从:C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2837xs\examples\cpu1\blinky 导入(项目副本)
    • 从工程中删除以下 CMD 文件: Project peroperty >> Build >> C200 Linker >> File search path >> Include。 >2837xS_Generic_flash_lnk.cmd
    • 将以下 CMD 文件复制到项目中: C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2837xs\common\cmd\2837xS_General_flash_lnk.cmd
    • 编辑 CMD 以将 RAMLS1与 RAMLS0组合在一起。 请查找"#if 1// n" 。
    • build config >> set active = launchpad flash
    • Project Property >> Build C2000 Compiler >> Advanced >> Runtime >>-ramfunc = on
    • 构建
    • 连接 LAUNCHXL-F28377S。
    • 查看>>目标配置>> TMS320F28377S >>启动所选配置。 >>连接 CPU1
    • 加载程序
    • 加载符号
    • 从 CPU 复位进行调试运行。
    • >>当 PC 跳转到 main 时、addr 0x8d79为0x0000。 尚未准备好运行。

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

    正如 Ozino 提到的、我们目前不支持 C2000配套资料中的"ramfunc=on"功能。 我建议遵循当前 C2000Ware 示例的功能、并选择性地选择要复制到 RAM 的函数。

    给您带来的不便、我深表歉意。

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

    Christopher、

    感谢您的转售。

    由于工具限制、我们正在寻找一种解决方案来将项目属性设置为更喜欢快速分支、我们现在可以这样做。

    当{main()、InitSysCtrl()和 DisableDog()}分配给.text 时,项目不会崩溃。 添加的函数 sub()是使用快速分支指令编译的。

    这种解决方案对我来说似乎很好、但您是否有任何疑虑?

    [Blinky_cpu01.c:ln86]  #pragma CODE_SECTION (main、".text")

    [F2837xS_SYSCTRL.c:Ln91] #pragma CODE_SECTION (InitSysCtrl、".text")

    [F2837xS_SYSCTRL.c:Ln619]#pragma CODE_SECTION (DisableDog、".text")

     

    我向 George 发送了一个更新的示例项目。 请他转发。

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

    我从乔治那里得到了他们。 似乎没有任何令人关切的问题。

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