刚刚从易趣中选择了其中一个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引导程序一起正常工作?
答案 0 :(得分:6)
我有很多基于例子的例子:
查找或创建自己的链接描述文件。它可能会说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并指定该链接器脚本。