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.

[参考译文] TMS320F28388D:以编程方式在闪存扇区之间切换引导

Guru**** 2538950 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1414945/tms320f28388d-programmatically-switch-booting-between-flash-sectors

器件型号:TMS320F28388D
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

我希望能够以编程方式从 CPU1的不同闪存扇区引导。 我将在闪存扇区0 (默认)之外运行一些代码、然后根据事件、能够复位闪存扇区4并从闪存扇区4引导。 该流程意味着有一种以非易失性方式更改 BOOTDEF 的方法、但会在 CPU1复位(矢量回引导 ROM)期间保持不变。 EMUBOOTDEF 处于关闭状态、但仅在连接调试器时才处于活动状态。

这是否可能、甚至是一种合理的方法?  是否有其他方法更适合此硬件?

我可以跳转到地址并开始执行、但我想只要在此芯片中安装所有启动机制、就会有一种更干净的方法。

谢谢!

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

    您好、Jay:

    复位时的引导位置由 bootROM 决定。 您是否能够在 TRM 中看到引导 ROM 闪存扇区?

    谢谢!

    Charles

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

    尊敬的 Charles:

    我只阅读了有关引导顺序如何工作的文档、以确定引导方法。 我想将我自己的引导加载程序放入 CPU1扇区0、让其发出复位、然后使用我的主代码引导到扇区4。

    Jay

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

    您好、Jay:

    我可以在第二天解答您的问题。

    谢谢!

    Charles

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

    您好、Jay:

    您当前使用的设置是什么?  是定制电路板、还是 TI 的 Launchpad 或控制卡之一?  我提出这个问题的原因是、这涉及到将 BOOTDEF 和 BOOTPin 值写入 OTP、并且这个过程会是永久性的、即一旦这些 OTP 位置被写入、就不会再返回了。  您还需要访问用于映射到可用闪存扇区入口点的专用 GPIO。  例如、如果您需要从 sector0和 sector4切换引导、则需要专用1个 GPIO 引脚、或者如果您需要在 sector0、sector4、sector8或 sector13之间切换、则需要2个 GPIO 引脚。

    在写入 OTP 之前、可以首先通过 EMUBOOT 和 EMUBOOTPINCONFIG 尝试执行此操作。  请告诉我此选项是否对您有利、我可以描述流程。

    此致、

    Joseph

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

    尊敬的 Joseph:

    我尝试避免对 OTP 进行写入。 EMUBOOT 和 EMUBOOTPINCONFIG 是否可以覆盖正常引导流程? 根据文档、这些寄存器的使用方式是调试器连接到器件。

    那么对于 GPIO、引导加载程序会设置引脚并进行系统复位? 这是否清除了 GPIO 状态? 该流程是如何工作的? 我还没有看到关于器件设置自己的引导引脚的描述-我假设是由外部器件触发引导模式。

    这不能是引导加载程序首次更改下一次引导的来源。 在其他应用中、我看到了跳转指令、可以在所需偏移处开始执行。 您是否认为跳跃只是实现此流程的最简单/最干净的方法?

    感谢您的帮助、

    Jay

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

    您好、Jay:

    可以、可以将 EMUBOOT 和 EMUBOOTPINCONFIG 用于新引导流程。  EMUBOOT 的目的是在将其永久编程到 OTP BOOTDEF 和 BOOTCONFIG 位置之前、首先检查其流程是否正确。  EMUBOOT 的工作原理是、在加载程序并连接调试器后、首先将 EMUBOOTCONFIG 和 EMUBOOTDEF 写入存储器。  您需要使用存储器浏览器在以下地址手动写入值:

    对于 EMUBOOTPINCONFIG、BOOTPIN 配置应写入地址0x00000D00。  请参阅表5-10 CPU1独立引导模式选择引脚解码。  例如、您希望使用2个引脚(GPIO9和 GPIO10)来选择不同的闪 存入口点、需要将0x5AFF0A09写入地址位置0x00000D00。  接下来、您需要将相应的 BOOTDEF 值0x63432303写入 EMUBOOTDEF-LOW (地址0x00000D04)。  该值基于下表。

    根据 GPIO10和 GPIO9的二进制状态 、您现在可以选择从上述4个闪存入口点中的任何一个进行引导。  如果 GPIO10、9均被拉至低电平、则引导点为闪存扇区0。  如果 GPIO10拉至高电平但 GPIO9拉至低电平、则在仿真(调试器已连接)模式下按下播放/启动按钮时、引导入口点为扇区8。

    一旦您证明该过程在仿真模式下工作并熟悉该过程、那么只有这样、您才会在 OTP 中对值进行编程。  这现在将使用 SysConfig 中的 DCSM 工具。

    此致、

    Joseph

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

    谢谢 Joseph。 我尝试完全避免使用 OTP、并以编程方式配置引导。 我将使用跳跃并在其中进行工作。  

    再次感谢您提供的信息。


    Jay