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**** 2399305 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1292401/tms570lc4357-a-simple-boot-up-routine

器件型号:TMS570LC4357

假设以下情况:

  • 我们有一个自包含应用程序("app")、该应用程序在开发期间一直在起始地址0x0处运行。
  • 当我们投入 生产时、它将 位于地址0x0001_0000。
  • 当我们投入生产时、启动例程应用程序("BUR")应 位于0x0。 该器件将进行一些检查、如果这些检查都通过、则将控制0x0001_0000处的应用程序。
    • 以下是 BUR 在其链接器命令文件中的存储器配置:

      VECTORS (X) :origin=0x00000000 length=0x00000020
      FLASH0  (RX):origin=0x00000020 length=0x00008000
      FLASH1  (RX):origin=0x00200000 length=0x00200000
      堆栈 (RW):origin=0x08000000 length=0x00001500
      RAM   (RW):origin=0x08001500 length=0x00008000

Question:

将应用重新定位到0x0001_0000对于链接器命令文件进行以下更改:

向量(X) :origin=0x00010000 length=0x00000020
FLASH0  (RX):origin=0x00010020 length=0x001effe0
FLASH1  (RX):origin=0x00200000 length=0x00200000
堆栈 (RW):origin=0x08009500 length=0x00001500
RAM   (RW):origin=0x0800aa00 length=0x0007d600

2. BUR 是否可以使用以下方法调用应用程序:  

UINT32 appLoc = 0x00010000;
((void (*)(void)) appLoc)();

3.是否需要注意任何更改/ gotchas 才能使应用程序像驻留在0x0时那样正常运行?

这是我采取的方法,但它似乎不起作用。