我对链接器脚本没有太多的经验,所以可能我只是误解了这里的某些东西。静态随机存取存储器( ATmega32u4 )的LD链接器脚本(avr5.x)指定数据内存( 0x800060 )从avr5.x开始。我知道0x800000只是编译器用于静态随机存取存储器指针的特殊偏移量,但是为什么要使用0x60作为内存的基础呢?ATmega32u4数据表显示,0x60是外部I/O寄存器的开始,而静态随机存取存储器实际上是从0x100开始的。这不是意味着当.data段被复制到静态随机存取存储器时,外部I/O寄存器将被破坏吗?
发布于 2018-01-15 10:59:20
显然,如果您通过它调用avr-ld,这就是GCC要说明的问题。根据您传递给-mmcu=的内容,GCC会覆盖.data部分的虚拟地址。如果直接与avr-ld链接,则.data部分位于默认0x800060。
https://stackoverflow.com/questions/48255235
复制相似问题