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:具有串行端口功能的引导加载程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1610294/tms570lc4357-bootloader-with-serial-port-functionality

器件型号: TMS570LC4357

尊敬的团队

引用 UART_Bootloader_LC4357 工程后、我实现了自己的引导加载程序。 由于特定的二进制文件大小限制、我进行了修整。

初始化内容如下:

image.png

验证成功后跳转段的代码如下:

image.png

串行端口助手显示以下信息:

image.png

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

这种现象表现为:如果省略图 2 中红色框标记的代码段、则在执行 JUMP 指令后应用程序将无法正常运行。 我假设、如果 SYSESR 寄存器的位 15 保持未清零、程序将进入一个无限循环、如下所示。

image.png

我认为、如果加载器程序和跳转程序设置为相同的主频率、就不会导致锁相环失效。 请帮助分析问题的原因。  

 

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

    嗨、Shuo Liu、

    如果省略图 2 中红色框标记的代码段、则在执行跳转指令后应用程序将无法正常运行。 我假设、如果 SYSESR 寄存器的位 15 保持未清零、程序将进入一个无限循环、如下所示。

    突出显示的代码应用了 PLL 勘误表权变措施:

    我认为这不是可选代码。 我认为在引导加载程序代码中需要此权变措施。

    --
    此致、
    Jagadish。

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

    我看到官方网站上的串行引导加载程序已完全初始化。 如果我在引导加载程序中执行_errata_SSWF021_45_BOTH_PLL、并跳转到应用程序并执行_errata_SSWF021_45_BOTH_PLL、我是否仍会无休止地循环?

    实际上、我仍然希望引导加载程序尽可能紧凑。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]如果在引导加载程序中执行_errata_SSWF021_45_BOTH_PLL、并跳转到应用程序并执行_errata_SSWF021_45_BOTH_PLL、我仍然会进入无限循环吗?

    是的、我们不应在应用程序中再次调用该 API。 如果我们调用、那么它将最终陷入这个突出显示的代码的无限循环。

    这是因为如您所见、此函数通常仅在立即启动后以及在任何初始化之前调用。

    如果我们在初始化后调用此函数、PLL 有效位将被置位、然后它将 卡在前面突出显示的代码中。 因此、不要再在应用程序中调用该 API。

    --
    此致、
    Jagadish。

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

    我的方法是否存在问题? 引导加载程序无法执行_errata_SSWF021_45_BOTH_PLL 函数。 随后、通过向 SYSESR 寄存器写入数据、应用程序与开关的 POWER_RESET 分支不匹配、从而阻止执行_errata_SSWF021_45_BOTH_PLL 函数。