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/TMS320F2.8035万:确定闪存内核是从冷启动还是从应用程序跳转启动

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/659345/ccs-tms320f28035-determine-if-flash-kernel-started-from-cold-start-or-jump-from-application

部件号:TMS320F2.8035万

工具/软件:Code Composer Studio

这是情况。  我已经创建了一个基于CAN的闪存内核,它驻留在闪存扇区A中。 它能够闪存B - H中的新应用程序 。该设备将引导至闪存内核, 一段时间后,如果它没有收到特定的CAN消息,它将跳转到应用程序。  如果它确实收到CAN消息,它将保留在闪存内核中,允许用户通过CAN刷新新新应用程序。  我还可以随时从应用程序跳回闪存内核。  所有这些都很好。

但是,如果是冷启动还是来自应用程序,则在初始化闪存内核(CAN波特率,CPU计数器中断等)时需要执行一些额外的步骤。  我在从应用程序跳转时不需要执行这些额外的步骤,因为应用程序已经设置了正确的CAN波特率,并且我希望内核使用应用程序的波特率,无论它是什么。  从冷启动开始,内核将使用与应用程序不同的预定义波特率,这是可以的。

闪存内核是否有任何方法可以判断它是刚从冷启动开始,还是被应用程序调用?  我想写一些很少使用的寄存器在应用程序中,然后内核可以读取。  如果寄存器设置为非默认值,则它知道称为它的应用程序。  或者在RAM中定义一个内核和应用程序链接程序文件中的位置,我可以在其中存储数据以便在两个应用程序之间共享?  假设我能弄清楚怎么做,这是否可行?  我假设RAM在启动时未初始化为某些已知值,因此在冷启动时,它将被设置为我在应用程序中写入的值的可能性很小。

总之,我想我是在问如何在从不同闪存扇区运行的两个不同应用程序之间传递信息。

有什么建议?  我的困境是否合理?

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

    亚当

               是的,您的困境是合理的。 如果您没有使用所有32个邮箱,也许您可以使用免费邮箱的邮箱RAM来实现此目的? 您可以使用特定的模式,如0x55AA。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这样可以,但这样做不会依赖任何应用程序使用该邮箱,我不能保证有人不会编写使用该邮箱的应用程序。 我希望能够在链接程序文件中定义一个预定义位置(我猜是RAM中的某个位置),仅用于此目的。 然后我可以在应用程序和内核中写入并访问该位置。 如果我通过链接程序文件预先分配了此位置,则我知道两个应用程序都不能访问和使用该位置。 这样的事情可能吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,这是可能的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    成功了。 我刚刚在RAM中为应用程序设置为已知值的“密钥”分配了32位空间。 闪存内核每次都会检查此密钥。 谢谢。

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