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.

[参考译文] TMS320F28377S:将基于 controlSUITE 的项目升级到 CCSv10

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/994198/tms320f28377s-upgrade-project-based-on-controlsuite-to-ccsv10

器件型号:TMS320F28377S
Thread 中讨论的其他部件:controlSUITEC2000WARE

尊敬的 C2000团队。

我正在尝试将在 CCSv6中创建的客户项目迁移到 CCSv10。

客户的项目基于 controlSUITE。

迁移和下载后、TMS320F28377S 进入陷阱。

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

    您如何迁移它? 您是否对代码进行了许多更改? 更新编译器版本?

    它是在加载后立即直接到达 Estop,还是能够先到达 main()? 如果执行重置和重新启动,是否可以将其转至 main()?

    惠特尼

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

    我没有更改代码并升级到最新版本。 (CCS v10.2.0.00009)

    一旦加载、它就会直接到达 Estop。

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

    执行重置和重新启动时会发生什么情况? 如果转到"Tools"->"Debugger Options"->"Auto Run and Launch Options"、是否已配置为在程序加载或重新启动时运行到 main?

    自从您获得了 ITRAP、您能否使用内存浏览器或反汇编窗口确认您的代码是否已实际加载?

    其他应用程序(如 C2000Ware 示例)是否可以在此硬件上加载并运行? 是否只有这个应用程序存在这种问题?

    惠特尼

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

    你好。

    关于这个问题、我已经对其进行了跟进。  

    首先、如果在同一硬件上加载了 TI 的示例代码、则运行正常。

    我们将使用最新的 CCS 来使用从 CCSV6 (编译器5.12)到20.12的新电机库...

    当代码开始时,主问题不是从 main()入口点开始的。

    如果我在 main()的条目中设置断点,它永远不会达到该点和代码中的任何其他断点。

    之后、如果我停止并重新运行代码、它将使我能够挂起断点。 此时、我可以处理代码并测量 LED 切换等参数、并查看系统是否正常运行。

    问题是代码为什么没有从主条目运行以及一些异常行为。

    这是否与用于创建存储器和段的 cmd 文件相关? 我们修改并重新生成了 cmd 文件。

    非常感谢。

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

    放置断点时是否会出现任何错误? 如果您检查 CCS 中的"Breakpoints"面板、它是否显示断点处于活动状态?

    对 cmd 文件的更改可能是原因。 在切换编译器版本时、您是否也从 COFF ABI 更改为 EABI?还是仍为 COFF?

    在 CodeStartBranch.asm 文件(或等效文件)中、您可以尝试禁用看门狗吗?

    惠特尼

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

    你(们)好

    我检查了编译器选项并找到"Legacy COFF"。 我将其更改为 EABI、但发生了编译器错误。 请参阅以下控制台消息。 我将 EABI 设置更改为另一个示例工程(blinky_cpu01)、并且也发生了错误。 非常感谢。

    ===================================================================================================================================

    构建目标:"inverter.out"
    调用:C2000链接器
    "c:/ti/ccs1030/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/bin/cl2000 /ti/ccs1030/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/lib /ti/ccs1030/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/include -v28 -ml -mt --cla_support=cla1 -float_support=fpu32 -tmu_support=tmu0 -vcu_support=vcu2 -O1 -opt_for_speed=3 -fp_mode=strict -fp_reassoc=on -advice:performance-vcu_support=vcu-ovcu-ature-d=-ate-m=-exclus-m=-m=-m=-ate-dag-m=-inverter-m=-m=-m=-m=-exclus-m=-m=-m=-m=-rid-m=-m=-m=-m=-exclus-m=-m=-dag-inverter-m=-m=-m=-m=-m=-m=-m=-m=-m=-exclus-m-inverter-m-/Users/seungwook.ahn/workspace_v10/INVERTER/lib display_error_number -no_warnings -xml_link_info="inverter_linkInfo.xml"-- rom_model -o "inverter.out""./src/AbsoluteEncoder.obj ""./src/Accelerometer.obj ""./src/Adc.obj ""./src/Brake.obj ""./src/CRC32.obj ""./src/DSP28xxx_SectionCopy_nonBIOS.obj ""./src/DigitalInput.obj ""./src/F2837xS_CodeStartBranch.obj ""./src/F2837xS_Adc.obj ""./src/F2837xS_DefaultISR.obj /src/F2837xS_EQep.obj /src/F2837xS_Gpio.obj /src/F2837xS_PieCtrl.obj /src/F2837xS_Spi.obj /src/F2837xS_usDelay.obj /src/HallSensor.obj /src/Inverter.obj /src/ModuleData.obj /src/Parameters.obj /src/Variable.obj /src/cc.obj ""./src/F2837xS_Dma.obj ""./src/DRA_ecat.obj "./src/Digital_Pll.obj "./src/F2837xS_Emif.obj "./src/F2837xS_CpuTimers.obj "./src/F2837xS_EPwm.obj "./src/F2837xS_I2C.obj "./src/F2837xS_GlobalVariableDefs.obj "./src/F2837xS_Mcbsp.obj "./src/F2837xS_SysCtrl.obj /src/FTSensor.obj /src/Homing.obj /src/JointTorqueSensor.obj /src/MotorOffset.obj /src/RingBuff.obj /src/can.obj /src/dac.obj "./src/F2837xS_PieVect.obj /src/F2837xS_Sci.obj /src/F2837xS_TempSensorConv.obj /src/Flash.obj /src/IndexCheck.obj /src/LSPBTrajectory.obj /src/ParameterTables.obj /src/SpeedObserver.obj /src/can_open_object_dictionary.obj "./src/easy2833x_sci_FIFO_v8.6.obj "./src/eeprom.obj "./src/esc.obj "./src/esc_sdo.obj "./src/fault.obj "./src/flash_programming_cpu1_FLASH.cmd "./src/filter.obj "./src/flange.obj "./src/interrupt.obj "./src/sc.obj "./src/main.obj "./src/os_100m.obj "."../lib/F021_API_F2837xS_FPU32.lib "../src/F2837xS_Headers_nonBIOS.cmd ".."..-l"C:/ti/ccs1030/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/lib/rts2800_fpu32.lib -llibc.a

    致命错误#16000:目标文件具有不兼容的格式("C:/ti/ccs1030/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/lib/rts2800_fpu32.lib "= TI-COFF、"./src/AbsoluteEncoder.obj = ELF)

    >>编译失败
    Makefile:203:目标'inverter.out'的配方失败
    gmake.1]:***[inverter.out]错误1
    gmake[1]:目标"辅助输出"不会由于错误而重新生成。
    Makefile:199:目标'all'的配方失败
    gmake:***[全部]错误2.

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

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

    没关系-现在请坚持使用 COFF。 我认为最好不要在工作项目和失败项目之间引入另一个区别、直到我们找到问题。 如果您想稍后迁移、 这里有一个很好的指南

    您能否尝试比较旧的工作应用程序和新应用程序之间的.map 文件、以查看是否有任何显著差异可以解释该问题?

    查看 Ki 在本主题中的建议是否有助于:

    e2e.ti.com/.../3256068

    惠特尼

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

    你(们)好

    我检查了.cmd 文件并发现了怪异的东西。 请参阅以下脚本。

    (笑声)

    RAMGS2      :origin = 0x00E000、length = 0x001000

    (笑声)

    Flash28_API:

    -l F021_API_F2837xS_FPU32.lib (.econst)
    -l F021_API_F2837xS_FPU32.lib (.text)
    }负载= FLASHL、
    运行= RAMGS2,//内存位置? --@μ A
    Load_start (_Flash28_API_LoadStart)、
    Load_End (_Flash28_API_LoadEnd)、
    RUN_START (_Flash28_API_RunStart)、
    PAGE = 0、ALIGN (4)

    ramfuncs:load = FLASHF,// ramfuncs
    运行= RAMGS2,//内存位置? --@μ A
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)

    (笑声)

    ramfuncs 的运行位置与 FLASH28_API 位置与 RAMGS2相同。

    我检查了映射文件。

    (笑声)

    RAMfuncs 0 00090000 00000090运行 ADDR = 0000e7b8
              00090000 00000090 F2837xS_SYSCTRL.obj (ramfuncs)

    (笑声)

    如果您看到运行的 ADDR、它不是从0000e000开始。

    "7B8"的大小与 FLASH28_API 段大小相同。

    显示了映射文件  

    (笑声)

    Flash28_API
    * 0 000ba000 000007b5运行 ADDR = 0000e000

    (笑声)

    我想这种重复的存储器位置可能会导致异常加载问题。 我将进行更多研究。

    谢谢。

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

    这对我来说似乎是可以的。 我看不出为什么这两个段在同一 RAM 中执行时都会出现问题的任何原因。

    应用应该如何从闪存入口点到达_c_int00? 您使用的是 C2000Ware 中的 F2837xS_CodeStartBranch.asm 文件还是一些自定义代码?

    惠特尼

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

    你(们)好 感谢您的回复。

    关于 .asm 文件、我们修改了 codestart 部分、如下所示。

    =================== ===================================================

    WD_DISABLE .set 1;设置为1可禁用 WD、否则设置为0

    .ref copy_sections
    全局代码_start

    .sect "codestart"

    code_start:
    如果 WD_DISABLE = 1
    LB wd_disable  
    其他
    LB COPY_SECTIONS  
    .endif

    如果 WD_DISABLE = 1

    .sect "wddisable"(禁用 wddisable)
    WD_DISABLE:
    SETC OBJMODE  
    EALLOW  
    MOVZ DP,#7029h>>6.  
    MOV @7029h、#0068h  
    EDIS
    LB COPY_SECTIONS

    .endif

    .end

    =========== ===================

    .ref _c_int00
    .global copy_sections
    全局_cinit_loadstart、_cinit_runstart、_cinit_size
    全局_const_loadstart、_const_runstart、_const_size
    全局_econst_loadstart、_econst_runstart、_econst_size
    全局_PinIT_loadstart、_PinIT_runstart、_PinIT_size
    全局_switch_loadstart、_switch_runstart、_switch_size
    全局_text_loadstart、_text_runstart、_text_size

    .sect "copysects"

    COPY_SECTIONS:

    MOVL XAR5、#_const_size  
    MOVL ACC、@XAR5  
    MOVL XAR6、#_const_loadstart  
    MOVL XAR7、#_const_runstart  
    LCR 副本  

    MOVL XAR5、#_econst_size  
    MOVL ACC、@XAR5  
    MOVL XAR6、#_econst_loadstart  
    MOVL XAR7、#_econst_runstart  
    LCR 副本  

    MOVL XAR5、#_PinIT_SIZE  
    MOVL ACC、@XAR5  
    MOVL XAR6、#_PinIT_loadstart  
    MOVL XAR7、#_PinIT_runstart  
    LCR 副本  

    MOVL XAR5、#_SWITCH_SIZE  
    MOVL ACC、@XAR5  
    MOVL XAR6、#_SWITCH_loadstart  
    MOVL XAR7、#_SWITCH_runstart  
    LCR 副本  

    MOVL XAR5、#_TEXT_SIZE
    MOVL ACC、@XAR5  
    MOVL XAR6、#_TEXT_LOADSTART  
    MOVL XAR7、#_TEXT_runstart
    LCR 副本  

    MOVL XAR5、#_cinit_size
    MOVL ACC、@XAR5  
    MOVL XAR6、#_cinit_loadstart  
    MOVL XAR7、#_cinit_runstart  
    LCR 副本  

    LB _c_int00  

    副本:
    B 返回、EQ  

    RPT AL  
    || PWRITE *XAR7、*XAR6++  

    返回:
    LRETR  

    .end

    ===================================================================================================================================

    我认为这似乎没有问题。 之前的存储器段地址冲突不是问题。

    我更改并排列了一些存储器段、但结果相同。  

    我在旧版本编译器(15.12...) CCSV6中测试了该工作项目。 XDS110 JTAG 更新后、主入口问题也出现了相同的问题。 因此、我认为这不是一个与工具相关的问题。

    我注意到、在尝试使用一些编译器选项进行调试时、代码从主条目开始两次。 然而,它从未出现过。 即使我将编译器选项设置为相同、我也没有再次重新生成该现象。

    嗯... 我将尝试使用我们自己的源代码从零开始逐步启动项目。 这需要更多时间。 但这是迁移它的一个重要问题。

    非常感谢。

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

    好的、希望分步迁移将缩小代码中引入问题的部分。 如果您需要进一步的帮助、请告诉我。

    惠特尼