虽然现在C语言已经成为主流力量,但是我还是非常喜欢用汇编写代码。代码的高效率,高速度是有天独厚的,但我更喜欢他那种“指哪打哪"的高透明。265M的ram任你主宰,想把那句话放在哪,就放在哪。这种任性你懂吗?
学习中断程序两大感悟(自己卡住的地方)
1,怎么安排地址:中断向量的入口地址是0x18,arm汇编不像51汇编那样随意,想把你的代码放在那里,在前面加一句ORG XXXXH就好了,arm需要用链接地址链接。arm-Linux-ld -Ttext 0x00000000 -o xxxx.elf xxxx.o, 。这句话是gnu的链接命令,如果想了解他的用法找度娘吧,我还没有本事在这里说这个。但我说一下一句话的意思吧:将代码段放在0x00000000开始位置。但中断地址是0x18,这时该怎么办?arm指令是每四个字节放一个指令。随意前面加上6条调转指令就行了(见代码){那六个地址是其他异常入口地址,有硬件决定}。
2,地址切记不要写错。我就是在这里卡了将近一天时间。
s3C2440资料太多了,我对说无意了。写此博客仅想记录一下自己学习嵌入式的例程,等到几个月后,再回头看一看,应该会有别样滋味。
代码献上:
.text
.global _start
_start:
b reset
@ 0x04
handleUndef:
b handleUndef
handleSWI:
b handleSWI
handlePrefetchAbort:
b handlePre