假设以下情况:
- 我们有一个自包含应用程序("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
- 以下是 BUR 在其链接器命令文件中的存储器配置:
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时那样正常运行?
这是我采取的方法,但它似乎不起作用。