做产品网站要备案吗,wordpress编辑文章,微信传输助手网页版,wordpress有没有付费6.5.1像内存一样去访问异常向量表
#xff08;1#xff09;S5PV210的异常向量表可以改变#xff08;在CP15协处理器中#xff09;#xff0c;以适应操作系统的需求。但是目前系统刚启动#xff0c;此时DRAM尚未初始化#xff0c;程序哦都市在iSRAM中运行。210在iSRAM中…
6.5.1像内存一样去访问异常向量表
1S5PV210的异常向量表可以改变在CP15协处理器中以适应操作系统的需求。但是目前系统刚启动此时DRAM尚未初始化程序哦都市在iSRAM中运行。210在iSRAM中设置了异常向量表供暂时性使用。
2查210的iROM application note文档中iRAM的地址分配可知iRAM中的异常向量表起始地址为0xd0037400。知道了异常向量表的起始地址后各个异常的对应地址的入口就知道了。
6.5.2函数名的实质就是函数的首地址
1函数名在C语言中的理解方法和变量名其实没有区别。编译器会把这个函数的函数名对应的代码段和这个函数的函数名实质是符号对应起来等我们在使用这个函数名符号时编译器会将函数的函数体实际上做替换。因为函数体都不只4个字节而函数名这个符号只能对应1个地址所以实际对应的是函数体那一个代码段的首地址。
2拿C语言中的语法来讲函数名就是这个函数的函数指针。 总结当我们将异常处理程序的首地址和异常向量表绑定后异常处理初步阶段就完成了。到目前可以保证相应异常发生后硬件自动跳转到对应异常向量表入口去执行时可以执行我们事先绑定的函数。
6.5.3为什么中断处理要先在汇编中进行
1中断处理要注意保护现场中断从SVC模式来则保存SVC模式下的必要寄存器的值和恢复现场中断处理完成后准备返回SVC模式前要将保存的SVC模式下的必要寄存器的值恢复回去不然到了SVC模式后寄存器的值乱了SVC模式下原来正在进行的常规任务就被你搞坏了
2保存现场包括第一设置IRQ栈第二保存LR第三保存R0~R12
3为什么要保存LR寄存器要考虑中断返回的问题。中断ISR执行完成后如何返回SVC模式下去接着执行原来的代码。中断返回其实取决于我们进入中断时如何保存现场。中断返回时关键的2个寄存器就是PC和CPSR。所以我们在进入IRQ模式时应该将SVC模式下的下一句指令的地址中断返回地址和CPSR保存起来将来恢复时才可以将中断返回地址给PC将保存的CPSR给CPSR。
4中断返回地址就保存在LR中而CPSR自动保存在IRQ模式下的SPSR中。
6.5.4汇编保存现场和恢复现场
1保护现场关键是保存中断处理程序的返回地址r0-r12cpsr是自动保存的
2恢复现场主要是恢复r0-r12,pc,cpsr 嵌入式物联网的学习之路非常漫长不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心我为大家整理了一份150多G的学习资源基本上涵盖了嵌入式物联网学习的所有内容。点击这里