使用USB Bootloader时如何设置ARM用户应用程序起始地址?

时间:2011-10-17 16:59:55

标签: embedded arm bootloader cortex-m3

刚刚从易趣中选择了其中一个ARM Cortex-M3 LPC1768 mini boards。它基本上是一个突破板。

然而,基于它带来的小文档,我已经确定它有一个类似于恩智浦 LPC1700 secondary USB bootloader (AN10866)应用笔记所描述的USB启动加载器。

文档(应用说明和电路板文档)都表示要构建用户程序,使其起始地址为0x2000 因为USB引导加载程序已经处于0x0并且占用8K

这两个文档还显示了如何在Keil uVision中执行此操作的屏幕截图(请参阅应用说明的第14页),但我计划使用GNU工具链(Yagarto + Eclipse + OpenOCD)。

在使用GNU工具链进行编译时,如何指定起始地址0x2000 ,以便它能够与USB引导程序一起正常工作?

1 个答案:

答案 0 :(得分:6)

我有很多基于例子的例子:

https://github.com/dwelch67

查找或创建自己的链接描述文件。它可能会说ORIGIN = 0x00000000对于ROM更改为0x2000,例如:

MEMORY
{
   rom : ORIGIN = 0x00002000, LENGTH = 0x6000
   ram : ORIGIN = 0x40000000, LENGTH = 0x2000
}
SECTIONS
{
   .text : { *(.text*) } > rom
   .bss  : { *(.bss*) } > ram
}

你可能想要/需要一个带有

的.data
   .data  : { *(.data*) } > ram AT >rom

或类似的东西。取决于你的程序和启动代码等等。

如果您已经有一个为0x00000000构建的工作系统,那么找到正在使用的linkerscript并复制它并将其更改为0x2000并指定该链接器脚本。