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

Cra*_*aig 2 embedded arm cortex-m3 bootloader

刚刚从eBay上购买了这些ARM Cortex-M3 LPC1768迷你主板之一.它基本上是一个突破板.

但是,基于它带来的小文档,我已经确定它有一个类似于恩智浦 LPC1700辅助USB引导加载程序(AN10866)应用笔记所描述的USB引导加载程序.

这两个文档(应用笔记和电路板文档)都表明要构建用户程序,使其起始地址为0x2000.因为USB引导加载程序已经是0x0并占用8K.

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

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

old*_*mer 6

我有很多基于arm的例子:

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
}
Run Code Online (Sandbox Code Playgroud)

你可能想要/需要一个.data

   .data  : { *(.data*) } > ram AT >rom
Run Code Online (Sandbox Code Playgroud)

或类似的东西.取决于您的程序和启动代码以及所有这些.

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