各位高手求指点,我用at91sam9260编写了一个串口驱动加在了u-boot中想利用中断来完成数据收发,但程序始终无法进入中断服务程序。
现在我把整个启动过程给介绍一下:开始时uboot镜像是存放在dataflash0x8400地址中的,在系统上电时,内部rom固化的一段程序会检测dataflash前32个字节是否正确,如果正确就会把一级boot即bootstrap从dataflash搬移到内部sram中去然后把sram映射成0地址程序开始执行一级boot完成一系列初始化,然后把u-boot镜像从dataflash 0x8400地址处搬移到内存0x23F00000,然后跳转该地址处执行u-boot代码。
现在我个人理解u-boot里面start.S中的异常向量表在0x23F00000开始的地方而不再0地址,然而当发生中断时回去0地址处查找中断向量表,现在0地址处为映射的内部sram,里面存放的一级boot启动代码,所以无法执行,要想进入中断应该需要把0x23F00000进行一次地址映射,映射为0地址,然后发生中断后就能找到u-boot里面的异常向量表完成正常跳转。不知道理解的对不对,希望高手能够指点一下,怎么样能够实现中断功能!!谢谢! |