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/TMS570LS3137:如何在下电上电后跳转至 APP

Guru**** 2461030 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/655035/ccs-tms570ls3137-how-to-jump-to-app-after-power-cycle

器件型号:TMS570LS3137

工具/软件:Code Composer Studio

您好、 

在下面的主题中、您建议在 Booloader 跳转到应用程序之前重置软件系统。

https://e2e.ti.com/support/microcontrollers/hercules/f/312/p/225447/994487#994487

我已经在我的项目中进行了试走、它是有效的。

软件复位后,在 c_int00的开头, 在用户代码开始(5)中,我使用 “if (systemREG1->SYSESR&0x10)”跳转到应用程序。

但是、这在下电上电后不起作用、那么该怎么做呢?

在 S/W 系统复位之前,我已经尝试在扇区3 bank7 (0xF020_C000)的开头写入一个标志。

在我的 proj 中。 我使用扇区0~2作为 FEE、我只需使用闪存 API,而不是 FEE 驱动器来写入标志。

我想、如果我在下电上电后检查 SYSESR 的标志、那么我可以跳转到 APP。 代码列表:

void _c_int00 (void)


/*用户代码开始(5)*/
uint32 app_start_flag;
APP_START_FLAG=(*(uint32 *)(0xF020C000));

但有时它能正常工作,有时它会导致 错误,并在570HDK 中点亮红色 LED。

有一些问题、我需要您的帮助:

1、如何在电源循环后跳转到 APP?

2、如何从应用程序跳转到引导加载程序?  软件系统复位将导致无限循环。

3、导致 nerror 的原因是什么?这种读取 闪存地址与 Fapi 之间有何差异? 还是必须首先完成闪存初始化?

此致、

国东

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

    首先,兆雄不再是赫丘利斯队的一员,因此他不能作出回应。

    关于 SW 复位、建议这样做是因为引导加载程序中似乎有一些设置与应用程序中所需的设置相冲突、而这些设置与另一个线程中讨论的客户代码相关。 从我的角度来看、软件复位只是一个补丁、用于解决应用程序未针对先前在引导加载程序中初始化的应用程序正确初始化某些内容的问题。 在我看来、每次执行引导加载程序时都不需要软件复位、而只应在下载新源/应用程序并将其编程到闪存中时使用。

    在任何情况下、使用 SW 复位时、您都需要检查 SYSESR 寄存器的状态、并查找 SW 复位和上电复位标志。 如果加电复位标志被置位、执行引导加载程序路径、如果 SW 复位标志被置位、则跳过引导加载程序并继续执行应用程序。

    当使用 SYSESR 寄存器的内容确定复位的原因时、务必确保在读取和捕获这些位后将其清除、以防止读取寄存器和根据内容做出决策时出现问题。 也就是说、如果器件通过 PORST 并且在 SW 复位实例化之前该位未清零、则 PORST 和 SWRST 位将在 SWRST 八倍周期后置位、因为 CPURST、WDRST/DEBUGRST、SWRST、 等操作将不会导致 SYSESR 寄存器被清零。 只有 PORST 复位才会清除 SYSESR 寄存器。 我怀疑这是导致您行为不稳定的原因。

    最后、您询问了如何从应用程序跳转到引导加载程序? 这实际上取决于您的应用。 在大多数情况下、引导加载程序位于引导时(因此称为名称)、并在引导加载程序期间检查引导时的重新编程条件。 在这种情况下、引导加载程序会在启动时查找一些条件、例如 UART/CAN/SPI 消息、如果在指定的时间段内未收到、则会继续发送到应用程序。 该条件还可能与 HW 状态相关、其中某些 GPIO 强制进入异常状态、从而强制进入引导加载程序例程、而不是应用程序模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    给你很多东西,你可以很快地回复! 这对 我非常有帮助!

    我再次阅读应用报告 SPNA106D、毫无疑问、我要确保:

    在读取闪存组7 (如" app_start_FLAG =(*(uint32 *)(0xF020C000)); "之前、需要配置有关地址等待状态和数据等待状态的寄存器?

    我的意思是,在 setupFlash()之后是否需要执行此操作?

    此致、

    国东

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

    如果在小于或等于50MHz 的频率下运行时从组7读取数据、则可以、因为无需等待状态或流水线。 请注意、SoM Hercules 器件的此频率不同、而 LS3137适用50MHz。 启用 PLL 后、您必须相应地配置闪存等待状态、但对于 Bank0和程序执行也是如此。

    简而言之、我认为在该器件上应该可以。