问题:
最近裸机学习mini2440,感觉每学一个外设 都 会遇到很多问题,虽然用的是光盘的源代码,但总是 会有不一样的问题!
本次定时器中断程序,算成BIN文件后,设置RO BASE =0X00000000后 下载到NAND时 程序不能执行,,只能设置RO BASE=0X30000000下载到内存执行。。
疑惑:
接着前面的LED流水灯、按键中断的学习,都可以很顺利的下载到NAND和内存中执行,到了定时器中断,下载到NAND却不行了???
是程序本身的问题?不对啊,程序在按键中断的基础上变化不大啊,只是多了定时器的初始工作和设置系统时钟,而且下载到内存执行结果没问题,所以应该不是程序的问题。。。另外 ,,在查看程序时,也发现很多不容易理解的地方:
#define pISR_TIMER0 (*(unsigned *)(_ISR_STARTADDRESS+0x48))
#define _ISR_STARTADDRESS 0x33ffff00
_ISR_STARTADDRESS 为什么是在0x33ffff00??
JustDo群友的回答比较好理解:
------这个地址0x33ffff00是CPU固定的,中断服务程序存放的起始地址,要是自己定义其他的地址CPU就不能到对应中断向量的服 务程序 了, 中断服务程序存放的起始地址默认是内存后面那一段,要是自定义,你叫CPU如何找的到哦,CPU固定哪个中断在哪个地址 了!!
好的,,回到问题本身,最后,“叮咚”说的程序什么4KB之类的一句话,仔细想想,是不是BIN文件本身的问题?最后发现: