在startup.s中 MRC p15,0,R1,c1,c0,0 ; (MMU设置,异步总线模式) 读控制寄存器 ORR R1,R1,#0xC0000000 ; 当HDIVN=1时操作有效 MRC p15,0,R1,c1,c0,0
应为: MRC p15,0,R1,c1,c0,0 ; (MMU设置,异步总线模式) 读控制寄存器 ORR R1,R1,#0xC0000000 ; 当HDIVN=1时操作有效 MCR p15,0,R1,c1,c0,0 不然的话CPU就只能以HCLK的频率运行了。(这样的错误是笔误了,不过出现在每一个范例都会用到的启动代码中就有点不太应该了)
还有在target.c中进行了中断向量的的复制 // 复制异常向量表操作 cp1 = (uint32 *) Vectors; cp2 = (uint32 *) 0x00000000; for (i = 0; i < 16; i++) { *cp2++ = *cp1++; } 2410的中断向量不能remap,在调试中断的时候就不太方便,通常的做法是把各个中断向量固定在SDRAM的末端,发生中断时再通过位于Bank0的Nor Flash中的异常处理程序找到中断入口地址,而周工的程序却不是这样,因为没有研究他们的试验箱,所以推测应该是通过跳线将一片Sram接到了Bank0,取代了原先位于Bank0的Nor Flash,一种比较奇怪的用法,不知道是不是这样 |