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