tag 标签: cortex-m3嵌入式linux

相关博文
  • 热度 27
    2012-8-9 21:22
    1728 次阅读|
    0 个评论
    2.4:ARM进入异常的行为 When handling an exception, the ARM720T processor behaves as follows: 当处理一个异常时,arm720T(arm9,10,11同)有下列行为: It preserves the address of the next instruction in the appropriate LR. 保存下一条指令地址到LR(链接寄存器)。 It copies the CPSR into the appropriate SPSR. 复制CPSR到SPSR寄存器 It forces the CPSR mode bits to a value that depends on the exception. 根据当前异常模式强制CPSR 模式位设置到一个对应值 翻译整理 :下家山(索漫科技培训教材 转载请注明)     http://www.xiajiashan.com 4. It forces the PC to fetch the next instruction from the relevant exception vector.     迫使PC获取该异常向量的下一条要执行的指令 It can also set the interrupt disable flags to prevent otherwise unmanageable nestings of exceptions.     它也能设置中断使能标志来预防其他未知的异常 2.4:ARM退出异常的行为 On completion, the exception handler:  在完成异常处理后:arm将做如下处理 1. Moves the LR, minus an offset where appropriate, to the PC. The offset varies depending on the type of exception.  移动LR里面保存的地址到PC,以使代码能正常返回到发生异常的地方继续执行。 2. Copies the SPSR back to the CPSR.   拷贝SPSR到CPSR。 Clears the interrupt disable flags, if they were set on entry. 清楚中断标志位 ======================================================================================= By 下家山 Q群 75303301        上海松江文汇路928号258室    松江大学城    上海索漫科技  http://www.xiajiashan.com  专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训   三:实例讲解   3.1程序最初的模式和状态 3.2设置管理模式后的状态变化 ;Build the SVC stack ;设置管理模式堆栈         MSR     CPSR_c, #0xd3                    LDR     SP, StackSvc    2.3 设置IRQ中断模式后的状态变化 ;Build the IRQ stack       ;设置中断模式堆栈         MSR     CPSR_c, #0xd2         LDR     SP, StackIrq  3.4 设置快速中断模式后的状态变化 ;Build the FIQ stack ;设置快速中断模式堆栈         MSR     CPSR_c, #0xd1         LDR     SP, StackFiq 3.5 设置中止模式后的状态变化 ;Build the DATAABORT stack ;设置中止模式堆栈         MSR     CPSR_c, #0xd7         LDR     SP, StackAbt 3.6 设置未定义模式后的状态变化 ;Build the UDF stack ;设置未定义模式堆栈           MSR     CPSR_c, #0xdb         LDR     SP, StackUnd 3.7 设置系统模式后的状态变化 ;Build the SYS stack ;设置系统模式堆栈         MSR     CPSR_c, #0xdf         LDR     SP, =StackSys 3.8  思考问题 在上述过程中,为什么SPSR的值一值是nzcvqift_User????? 3.9 思考问题 当设置系统模式的时候,为什么SPSR显示Unavailable????? 3.a 思考问题 上述过程中,为什么没有设置用户模式???? 翻译整理 :下家山(上海索漫科技培训教材 转载请注明) http://www.xiajiashan.com                                        2012-6-19                                    写于上海松江              
  • 热度 21
    2012-8-9 16:17
    1634 次阅读|
    0 个评论
    晦涩的理论如果仅仅是纯粹的理论只会让你更加难以理解,但如果能与实验或实例结合调试,把这些晦涩的东西的本质还原出来,那么你将会领悟到那些设计者(这些人很多都是科学家)们的睿智,慢慢的,你的领悟能力,或者说理解能力,或者说探索未知的能力将会提高到一个新的层面)——实验才是硬道理。 作者:下家山(索漫科技培训教材 转载请注明)     http://www.xiajiashan.com 一:对前面问题的解答 3.8思考问题:在上述过程中,为什么SPSR 的值一值是nzcvqift_User????? 因为,我们程序一开始运行的状态是SVC(管理模式),而其备份模式是user mode。 3.9思考问题:当设置系统模式的时候,为什么SPSR显示Unavailable????? 因为,在用户模式和系统模式,就没有SPSR这个寄存器。 3.a思考问题:上述过程中,为什么没有设置用户模式????    这个问题,就是这个补充文档的内容,我们一起来探索。 作者:下家山(索漫科技培训教材 转载请注明)     http://www.xiajiashan.com   二:当我们代码从汇编到C后,是什么模式   三:当irq中断发生后,PSR是什么状态 四:当退出IRQ异常中断后,PSR是什么状态   ======================================================================================= By 下家山 Q群 75303301        上海松江文汇路928号258室    松江大学城    上海索漫科技  http://www.xiajiashan.com  专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训 五:我们把user模式设置语句打开   作者:下家山(索漫科技培训教材 转载请注明)     http://www.xiajiashan.com     会出现什么问题??? 中断不会发生???                    2012-6-19                                    写于上海松江 作者:下家山(索漫科技培训教材 转载请注明)     http://www.xiajiashan.com