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.

[参考译文] CCS/TMS570LC4357:如果使用自定义的.cmd 链接文件启用了以太网 TX 和 Rx 中断、以太网引导加载程序会继续调用函数_c_int00

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/886803/ccs-tms570lc4357-the-ethernet-boot-loader-keep-calling-the-function-_c_int00-if-ethernet-tx-and-rx-interrupts-are-enabled-with-a-customized-cmd-link-file

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGEN

工具/软件:Code Composer Studio

您好、E2E、

我使用 的是 TMS570LC4357 。 我在 https://git.ti.com/cgit/hercules_examples/hercules_examples/中找到了基于 CAN 的引导加载程序。 只需进行少量修改、引导加载程序就可以正常用于我自己的器件。

现在、我想为我的器件提供以太网引导加载程序、但到目前为止、没有适用于 TMS570LC4357的基于以太网的引导加载程序。

因此、我认为、通过将基于 CAN 的引导加载程序的通信层替换为基于以太网的引导加载程序、可能对我有用。 我删除了有关 CAN 通信的所有代码、在中添加了 lwip 1.41、并采用了 UDP。

我的以太网引导加载程序的 bl_link.cmd 文件由 QJ Wang 定制(我只需从 QJ Wang 提供的示例引导加载程序工程复制该文件)。  问题出在这里:

1.  在 BL_LINK_cmd 和以太网 TX/Rx 中断被启用的情况下、函数_c_int00会反复调用。 保持这种状态。

我在文件 hl_sys_startup.c 的第113行中设置一个断点

/*复位处理程序:以下指令从系统异常状态寄存器中读取
    *以确定 CPU 复位的原因。
    *
   rstSrc = getResetSource();

调用函数_c_int00时、rstSrc 为 no_reset。 那么、为什么  会反复调用_c_int00呢?

但是、如果 从编译中排除文件 bl_link.cmd 并且使用 HALCoGen 生成的 hl_sys_link.cmd、lwip 运行良好。  当然、主函数需要一些更改。

我在下面附上了我的项目。 尚未完成。 希望听到您的声音。

e2e.ti.com/.../4403.TMS570LC43x_5F00_BootLoader_5F00_Ethernet.zip

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

    您好!

    CAN 引导加载程序示例中的链接器 cmd 文件也是为了生成闪存 ECC。 如果您使用此链接器 cmd 文件、则必须在加载波特图加载程序时在 CCS 中禁用"Auto ECC Generation"和"Flash Verification"。

    当您使用通过 HALCOGen 生成的链接器 cmd 文件时、在 将引导加载程序加载到闪存时、您是否启用了"自动 ECC 生成"?  

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

    正确 ?  还不工作。

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

    这是针对通过 HALCoGen 生成链接器 cmd 的工程、还是针对 CAN 引导加载示例中生成的链接器 cmd 的工程?

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

    来自 CAN 的链接器 cmd 引导加载示例。

    为什么  可能会反复调用函数_c_int00?  

    新:如果 启用了任何外设中断、将使用示例链接 cmd 文件调用_c_int00。

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

    问题已出现。

    我不知道原因、但是 、对于示例链接器 cmd 文件、寄存器 IRQVECREG (IRQ 中断矢量寄存器)的值始终为零。 VIM 运行不好。

    每当发生中断时、CPU 跳转到保存在 IRQVECREG 中的地址。  在当前情况下、IRQVECREG = 0、它是复位的入口。

    然后调用 funion _c_int00。

    在 main()中添加 funion vimInit()可能会解决问题。