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.

[参考译文] TMS570LC4357:UART 引导加载程序问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1464631/tms570lc4357-uart-bootloader-issue

器件型号:TMS570LC4357

工具与软件:

尊敬的 TI 团队

如下所示、我使用了官方网站例程 UART_Bootloader_LC4357_New 来引导应用程序、引导程序大小为39KB、应用程序大小为15.9KB

遇到了几个问题:

1.为什么启动应用程序后,直接重置到应用程序中,启动程序被擦除?

2.闪存中引导程序的地址范围为0x00000 ~ 0x0020020

3.我想将引导加载程序放在闪存的 bank0中、并将应用程序放在闪存的 bank1和 bank7中。 请帮助我指导如何执行此操作。

4. 为什么引导程序无法引导 FreeRTOS 应用程序?

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

    您好、Sam、

    Unknown 说:
    1. 为什么在引导应用程序后、直接重置到应用程序中、引导程序被擦除?[/QUOT]

    我不明白你的观点。

    引导应用后、如果我们进行了任何复位、内核将仅首先执行引导加载程序。

    引导加载程序将验证应用程序是否存在、并且只有在闪存中存在有效应用程序时才会调用应用程序。

    Unknown 说:
    2. 闪存中引导程序的地址范围为0x00000 ~ 0x0020020[/报价]

    引导程序仅存在于地址0x0020000地址之前。

    接下来的0x20字节将用于签名字节、我的意思是、如果这些字节具有下面突出显示的值(0x5A5A5A5A)、那么这意味着我们具有来自0x20020地址的有效应用。

    引导加载程序将验证此地址、如果它的值为0x5A5A5A5A、则会调用应用程序。

    Unknown 说:
    3. 我想将引导加载程序放在闪存的第0组中、并将应用放在闪存的第1组和第7组中。 请帮助我指导如何执行此操作。
    [/quote]

    只需小心地将地址更改为银行1、然后它应该起作用、同时我也会检查我是否有直接的例子。 如果我有,那么我将与你分享。

    Unknown 说:
    4.  为什么引导无法引导 FreeRTOS 应用?[/QUOT]

    它应该会、具体会出现什么错误?

    请分享该错误的一些屏幕截图。

    ——
    谢谢、此致、
    Jagadish。

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

    您好、Gundavarapu 先生

    根据您对说明的第二个解释点、似乎在烧录应用程序后、重新升级电路板以直接转至应用程序是正确的、我认为引导加载程序已被删除、抱歉!

    但是、如果您想在通过串行端口引导应用程序后再次加载新的应用程序、应该怎么做?

    最好在工程中将 SPI 用作引导程序。

    是否有适用于 SPI 的引导加载程序?

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

    您好、Sam、

    但是如果您想在通过串行端口引导应用程序后再次加载新应用程序、该怎么办?

    您可以执行以下操作、如果要使用新程序更新应用程序、则可以执行此操作:

    擦除应用程序的签名字节并从应用程序中执行内核复位。

    执行此操作后、引导加载程序代码会再次得到调用、并且它将再次执行、现在、当引导加载程序验证签名时、不会有任何有效签名、因此、引导加载程序不会调用应用程序、只是等待新应用程序接收。

    编写新应用程序后、它将重写有效签名并再次调用该应用程序。

    是否有适用于 SPI 的引导加载程序?

    您能否在以下链接中下载 CAN 引导加载程序示例:

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    实际上、这款 CAN 引导加载程序演示还包括 SPI 和 UART 等其他引导加载程序、在这里只需启用相应的宏。

    ——
    谢谢、此致、
    Jagadish。

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

    非常感谢你,你的答复已经帮助我很多!

    我还有一个问题、在上电时执行的程序仅在地址0可用。 我可以在闪存组0的 OTP 区域中刻录启动加载吗?

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

    我查阅手册后发现、TMS570LC4357的闪存组0 OTP 仅为4KB、而引导加载程序编译到30KB、这似乎是不可行的。

    我们的方案需要高安全性、我们可以制作一个小型跳转程序、在 OTP 区域内烧坏、加电直接跳转到闪存 bank0或 bank1以执行吗?

    如果可能、请考虑添加后续三模式冗余操作、其中3个应用程序副本存储在闪存中、而 OTP 会执行三重操作、以便在执行小型跳转操作之前获取可靠的应用程序副本。

    期待您的回复,非常感谢!

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

    我已经通过编译选项优化将编译的二进制压缩为7KB、然后尝试禁用 PMU、矢量浮点等功能、但代码大小仍然没有减小、还有其他方法可以将程序大小压缩到小于4KB?

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

    您好、Sam、

    [报价 userid="635171" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1464631/tms570lc4357-uart-bootloader-issue/5680447 #5680447"]是上电时执行的程序、仅在地址0可用。 我可以在闪存组0的 OTP 区域刻录启动加载吗?

    是的、程序将始终从地址0开始执行。

    我们从未使用 OTP 进行编程闪存、我也没有任何示例可供分享。

    我已经通过编译选项优化将编译的二进制文件压缩至7KB、然后我尝试禁用一些功能、如 PMU、向量浮动、但代码大小仍未降低、是否有其他方法可以将程序大小压缩至小于4KB?

    我可以看到两个客户 OTP 组、每个组的4KB 和总共成为8KB 的 OTP 区域。

    ——
    谢谢、此致、
    Jagadish。

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

    你好、 Jagadish
    非常感谢您的答复,它解决了我的问题!

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

    很高兴听到山姆!