我在把以前工程师设计的GCC下的at91m55800a的工程移植到ADS1.2下时候发生了点很奇怪的问题。<br /> 关于启动代码的<br />为保证重映射之后提供正确的中断入口地址,在重映射之前就必须把中断和异常向量表拷贝到内部RAM中。其程序实现如下:<br /> mov r8,#RAM_BASE_BOOT //RAM_BASE_BOOT是重映射前内部RAM区地址 (0x00300000) <br /> add r9, pc,#-(8+.-VectorTable) //VectorTale是异常向量表入口<br /> ldmia r9!, {r0-r7} //读8个异常向量 <br /> stmia r8!, {r0-r7} //保存8个异常向量到RAM区<br /> ldmia r9!, {r0-r4} //读5个异常处理程序绝对地址<br />stmia r8!, {r0-r4} //保存5个异常处理程序绝对地址到RAM区<br /><br />可是为什么一旦使用stmia r8!, {r0-r7}和stmia r8!, {r0-r4} 的时候总出现数据访问中止的中断呢??<br />我把这儿注释掉后到了__main()库函数的时候 strcs r7,[r4],#4 的时候也出现数据中止访问的问题,求教各位给我分析下可能那儿出现的问题?<br />谢谢大家了,快崩溃啦 |
|