由RFE指令引发的一串故事
前段时间,我们在bring up一块Cortex-A5主控的芯片时,发现在跑FreeRTOS时, 系统总是crash. 通过GDB定位到一旦RFE指令执行结束后,系统便进入data abort mode. <图一> 一旦执行RFE便进入data abort <图二>, FreeRTOS中RFE相关代码片段 RFE指令如其字面含义, return from exception. 它的主要作用是: 从栈中弹出值分别赋值给cpsr和pc. 这条指令在恢复现场时,具有不可替代的作用(如果用其他指令来代替同样的功能, 自然就污染其他寄存器了). RFE指令在ARM v7 spec中的伪码: <图三>,RFE指令的伪码 曾经一度怀疑是Cortex-A5的errata,但是CPU指令级别的仿真测试对于RFE指令是没有问题的。而且,之前在FPGA上做预开发的时候,在FPGA平台上也没有发现此类问题。所以,一度陷入到困局中,没有思路。 如果整个FreeRTOS来让SOC仿真,那么仿真的时间会比较久,因此我们写了下面一段比较小的代码来进行仿真测试。但是仿真下来并没有发现问题。 _start: ldr r0, =vectors mcr p15, 0, r0, c12, c0, 0 // PLD Capablity mrc p15, 0, r0, c0, c2, 2 //MAIN IDR mrc p15, 0, r0, c0, c0, 0 // CCSIDR mrc p15, 1, r0, c0, c0, 0 cps #0x17 ldr r0, =0x30009000 str r0, [r0] ldr r0, =0x10009000 mov sp, r0 cps #0x1f ldr r0, =0x10008000 mov sp, r0 mrs r0...


去看了,很不错!!!
回复删除顶了!
没有演示或者图片呀...
回复删除我要向你学习....
演示网址:
回复删除http://202.196.187.76/Webstudent/s301/blog.aspx
真的非常不错,我仍然在初学的迷茫状态中,其实1年前就开始关注.NET了,以前仅仅改改ASP的代码,现在不知道如何继续下去,很摸不着头脑,很想上什么辅导班能有时间真正做点这个方面的东西,望指教!
回复删除学习.net最重要的是做项目,仅仅是做一些小练习是远远不够的。你有ASP的基础,这样学习.net会很快,可是从ASP的思维模式,向.net模式转变也需要一个过程,做项目可以很快转变。另外:看别人的代码也很重要。
回复删除恭喜恭喜啊,呵呵,下载下来了,向你学习!
回复删除