在 atmel studio7 中更改起始地址 .hex

Posted

技术标签:

【中文标题】在 atmel studio7 中更改起始地址 .hex【英文标题】:change Start address .hex in atmel studio7 【发布时间】:2019-05-12 15:27:50 【问题描述】:

我正在 ATMELStudio7 中为 AVR 做一个引导加载程序,在生成 .hex 时,它是从地址 0x00 创建的,但引导加载程序必须从地址 0x1e000 开始,如果有人知道如何在编译选项中更改它,我会欣赏它。

【问题讨论】:

【参考方案1】: 转到项目属性(Alt + F7) 选择工具链 选择AVR/GNU Linker -> 内存设置“FLASH 段” 部分按“添加项目” 按钮并键入:

.text=0xF000

(UPD) 注意,这个地址是words,也就是说,如果你想把一个 8KB 的 bootloader 放到一个 128KB 的设备中(字节偏移量是 0x1E000),那么字偏移量将是 0xF000。 32KB 设备上的 4KB 引导加载程序将是 0x3800,依此类推。

按 OK,然后编译项目。它会告诉链接器主代码段的起始地址在哪里。

顺便说一句,在 >64k 设备上的引导加载程序中使用 pgmspace.h 时要小心,因为闪存中的常量通常被放置在低 64k 中,现在将被放置在高地址中好吧,使用通常的 pgm_read... 宏可能无法访问。在这种情况下,请使用 pgm_get_far_addresspgm_read_..._far 宏。

【讨论】:

谢谢!帮了大忙

以上是关于在 atmel studio7 中更改起始地址 .hex的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse J-Link ATMEL ARM ATSAME70Q21。当代码从不同于 0x00400000 的地址开始时进行调试

如何在不创建新项目的情况下更改 Atmel Studio 6 中 C++ 的 avr32-gcc C 编译器?

Atmel 工作室中的 SPI 初始化

atmel at91sam9g20 以太网寄存器地址

Atmel SAMD21 DMA 中止问题

更改地址 STM32F722 程序