首页 文章

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

提问于
浏览
2

刚从eBay拿起这些ARM Cortex-M3 LPC1768 mini boards中的一个 . 它基本上是一个突破板 .

但是,根据它附带的小文档,我应该注意 .

这两个文档(应用说明和电路板文档)都表明用户程序的构建应该是他们的 starting address is 0x2000 . 因为USB引导加载程序已经是0x0并占用8K .

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

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

1 回答

  • 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
    }
    

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

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

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

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

相关问题