2024年1月1日发(作者:)
四川师范大学成都学院实验中心 龚名茂
Cortex-M3在MDK下汇编程序分散加载文件出错的解决方法
1.对于汇编调试,不需要添加启动,仅设置堆栈即可
2.默认分散加载文件如下(LM3S615,其实其他也差不多,都是自动生成):
LR_IROM1 0x00000000 0x00008000 { ; load region size_region
ER_IROM1 0x00000000 0x00008000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00002000 { ; RW data
.ANY (+RW +ZI)
}
}
需要注意的是,自己写的程序的入口必须是RESET,如下程序所示:
STACK_TOP EQU 0x20002000
AREA RESET,CODE,READWRITE
DCD STACK_TOP
DCD START
ENTRY
START
MOV R0, #10
MOV R1, #0
loop
ADD R1, R0
SUBS R0, #1
BNE loop
deadloop
B deadloop
END
然后在编译的时候linker选项下如下图所示:
四川师范大学成都学院实验中心 龚名茂
编译之后输出结果如下所示:
Build target 'Target 1'
assembling
(8): warning: L6314W: No section matches pattern *(InRoot$$Sections).
Program Size: Code=24 RO-data=0 RW-data=0 ZI-data=0
"" - 0 Error(s), 1 Warning(s).
此时,会出现这个警告。据网友们说是无关紧要的。虽然如此,但是看着不爽。后来查看了帮助文档,找到了消除这个警告的方法,在linker选项中加上如下一行:
虽然现在警告已经消除了,但是仍然不明白为什么。也就是没有搞懂这个分散加载文件中的
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
这几行是什么意思,有待高人指点!
发布评论