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.

[参考译文] F29H85X-EtherCAT-EVM:从闪存启动时 SOM 不工作

Guru**** 2575725 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1574661/f29h85x-som-evm-ethercat-does-not-work-when-boot-from-flash

器件型号:F29H85X-EVM-EVM SOM
主题: SysConfig 中讨论的其他器件

工具/软件:

尊敬的 TI 支持团队:

我使用了评估板  F29H85X-EtherCAT-EVM 版本 A 003(可用于 SOM)。 从闪存引导 MCU 时、我要测试 EtherCAT 通信。 我所做的事:

-打开示例项目:'  中的 Echoback Solution Example“  Theia Code Composer Studio。

-使用 SSC 工具 V5.13 生成项目文件。 该工程已在 RAM 中成功构建。 使用 TwinCAT 进行的 EtherCAT 通信测试工作正常( MCU 可以进入 OP 模式),没有问题。

-为了使项目从闪存启动,我在 Theia 项目中做了如下更改:

+将链接器命令更改为:  

/*指定系统内存映射*/

移动数据
  SRAM_LDAx:o=0x200E0000、l=0x20000
  SRAM_LPAx:o=0x20100000、l=0x10000
  SRAM_CPAx:o=0x20110000、l=0x10000
  SRAM_CDAX:o=0x20120000、l=0x30000

  cert   :o=0x10000000、l=0x001000
  Flash_RP0:o=0x10001000、l=0x0FF000
  FLASH_RP1:o=0x10100000、l=0x100000
  Flash_RP2:o=0x10200000、l=0x100000
  Flash_RP3:o=0x10300000、l=0x100000
}


/*指定段分配到存储器中*/

很重要
  codestart  :{}> 0x10001000,   palign(8)
  证书      :{}> CERT,      palign (8)

  .text     :{}> FLASH_RP0、  palign (8)
  .binit    :{}> FLASH_RP0、  palign (8)
  .cinit    :{}> FLASH_RP0、  palign (8)
  .const    :{}> FLASH_RP0、  palign (8)
  .rodata   :{}> FLASH_RP0、  palign (8)
  .init_array :{}> FLASH_RP0、  palign (8)

  .TI.ramfunc :{}load=FLASH_RP0、run=SRAM_LPAx、table (BINIT)、palign (8)

  .data     :{}> SRAM_LDAx
  .bss      :{}> SRAM_LDAx
  .stack    :{}> SRAM_LDAx
  .sysmem   :{}> SRAM_LDAx
  .cio      :{}> SRAM_LDAx
}
+更改 C2000 链接器标志:
-wl、-m“${ProjName}.map“-wl、--heap_size=0x400 -wl、--stack_size=0x2000 -wl、-i“${wl_tool_library_path}“-wl、-i“$  
+更改 C2000 编译器标志:
-O1 -i“${SYSCONFIG_TOOL_INCLUDE_PATH}“-i“${COM_TI_F29H85X_SDK_INCLUDE_PATH}“-i“${PROJECT_ROOT}“-i“${CG_TOOL_INCLUDE_PATH}“-D${SYSCONFIG_TOOL_SYMLS}-D${COM_TI_F29H85X_SDK_INCLUDE_SYS}-D${COM_STOPPED}-QG — 未使用的参数  
+更改编译后步骤:
${CG_TOOL_objcopy}-O 二进制文件${ProjName}.out ${ProjName}.bin
$(Python)${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_rom_image_gen.py --image-bin ${ProjName}.bin --core c29 --swrv 1 --loadaddr 0x200E1000 --sign-key ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_gpkey.pem --out-image ${ProjName}_cert.bin --device f29himg - no-RAM
$(删除)C29-cert-pad.bin
我重新构建工程并刷写 MCU。 从闪存引导成功、但我无法与 TwinCAT 通信(在安全 OP 停止)、无法进入 OP 模式、例如从 RAM 引导。
是否请仔细检查我的配置是否有错误?
谢谢、此致
Trieu
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、请查找所附项目。

    e2e.ti.com/.../5008.new_5F00_f29h85x_5F00_echoback_5F00_flash_5F00_changed.zip



    所做的更改:  

    1 更改了闪存链接器文件。

    2.包含变量。  

    3.在编译器中包含添加的变量选项。

    在构建配置中、添加一个新变量 FLASH 并从构建中排除 ram 链接器文件。

           

    5.在 ethercat_subdevice_cpu1_hal.c 中添加了 memcpy 和闪存等待状态  

    6.在链接器和编译器选项中添加了--define=_flash

        

    7.在预定义符号中添加了“_flash"。“。

    8、添加了编译后处理步骤。 (请参阅基本 LED 闪烁示例工程规范以供参考。)

    9、在 device.h 中添加了变量引用

    10.将*。cert 文件从“f29h85x-sdk_1_02_00_00\source\dummycert"目录“目录复制到工程中。

     

    此致

    库纳尔