我们正在开发适用于 TMS320VC5510A 芯片的应用、其中我们要从外部闪存加载程序。 执行此操作的过程涉及从闪存读取程序数据并根据引导表定义对其进行解析。 从引导表解析的第一个值是"入口点"。 我们不太清楚的是、我们将此应用起点值存储在从闪存中读取之后的 Code Composer Studio 项目中。 有没有人对如何做到这一点有任何见解?
谢谢
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.
我们正在开发适用于 TMS320VC5510A 芯片的应用、其中我们要从外部闪存加载程序。 执行此操作的过程涉及从闪存读取程序数据并根据引导表定义对其进行解析。 从引导表解析的第一个值是"入口点"。 我们不太清楚的是、我们将此应用起点值存储在从闪存中读取之后的 Code Composer Studio 项目中。 有没有人对如何做到这一点有任何见解?
谢谢
尊敬的 Stephen:
上述引导加载过程由上电复位后的 C5510A ROM 引导加载程序完成。
您需要做的是使用 HEX55将 CCS 项目二进制文件(输出文件)转换为引导映像、并将其刷写到 EEPROM 中、然后 ROM 引导加载程序将读取引导映像。 引导表由 HEX55生成。 它将由 ROM 引导加载程序处理。
有关详细信息、请参阅以下应用手册: https://www.ti.com/lit/pdf/spra763
此致、
明
尊敬的 Stephen:
入口地址是引导表中的第一个32位字、请参阅 SPRA763c.pdf "引导表结构"的第2.4.2节。
我为 C5510A 编写了 ROM 引导加载程序、但为 C5505编写了 ROM 引导加载程序。 ROM 引导加载程序将保留一些 RAM 部分以存储其堆栈、变量等。 对于 C5505、我们使用最后8KB 的片上 RAM。 可以参阅 SPRA763c.pdf 的第2.4.1节。 "引导加载程序使用的 DSP 资源"、在我看来、它们使用的是0000h−0200h RAM 作为 ROM 引导加载程序工作存储器。
应用起点地址存储在字地址0060h 和0061h 上
此致、
明
尊敬的 Stephen:
RAM 0x0000至0x0200仅是 ROM 引导加载程序的工作存储器。 入口地址将存储在0x60/0x61中。 ROM 引导加载程序的最后一步是跳转到入口地址。
如果您已经完成了自己的 SBL、那么在加载应用程序映像后、您可以将应用程序映像的入口地址存储在0x60/61中。 加载引导表中指定的所有段后、可以跳转到新的入口地址以启动应用程序。
每次复位都将触发 ROM 引导加载程序的新执行。 我认为你不能改变这些设置、但是你始终可以将 PC (程序计数器)更改为一个新的地址并运行(或者无条件跳转到一个新的地址)。
此致、
明