使用USB引导加载程序时如何设置ARM用户应用程序起始地址?

发布于 2024-12-10 22:31:46 字数 649 浏览 0 评论 0原文

刚刚购买了其中一个 ARM Cortex-M3 LPC1768 迷你板。它基本上是一个分线板。

然而,根据它附带的少量文档,我确定它有一个类似于 NXP 的 LPC1700 辅助 USB 引导加载程序 (AN10866) 应用说明。

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

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

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

Just picked up one of these ARM Cortex-M3 LPC1768 mini boards from eBay. It's basically a breakout board.

However, based on what little documentation came with it, I've determined that it has a USB bootloader similar to that described by NXP's
LPC1700 secondary USB bootloader (AN10866)
app note.

Both docs (the app note and board docs) indicate that user programs are to be built such that their starting address is 0x2000. Because the USB bootloader is already at 0x0 and takes up 8K.

Both docs also show screenshots (see page 14 of app note) on how to do this within Keil uVision, however I'm planning on using a GNU toolchain (Yagarto + Eclipse + OpenOCD).

How do I specify a starting address of 0x2000 when compiling with a GNU toolchain so that it will work properly with the USB bootloader?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

絕版丫頭 2024-12-17 22:31:46

我有很多基于 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 构建的工作系统,则找到正在使用的链接描述文件并复制它,并将其更改为 0x2000 并指定该链接描述文件。

I have lots of arm based examples:

https://github.com/dwelch67

Find or create your own linker script. where it might have said ORIGIN = 0x00000000 for the rom change that to 0x2000, something like this for example:

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

you might want/need a .data with

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

or something like that. depends on your programs and boot code and all that.

If you already have a working system that builds for 0x00000000 then find the linkerscript being used and make a copy of it and change it to 0x2000 and specify that linker script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文