KEIL MDK 5.14 + AMBIQ APOLLO 128BGA
我想将bootloader.c中的程序放在固定位置 keil的分布加载文件如下:
LR_IROM1 0x00000000 0x0001C000 { ; load region size_region
ER_IROM1 0x00000000 0x0001C000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x10000000 0x00008000 { ; RW data
.ANY (+RW +ZI)
}
}
LR_IROM2 0x0001C000 0x00004000 {
ER_IROM2 0x0001C000 0x00004000 {
bootloader.o (+RO)
}
}
bootloader.c中的函数被正确地加载在0x0001C000上。
然后我在主函数里面
((void(*)(void))0x0001C000)();强制跳转会进入fault错误但是如果是((void(*)(void))0x0001C001)();就正常。地址不是要按2字节对齐的吗,为何按2字节对齐不能正常跳转,没对齐的反而可以?
|