cortex
-bootblack-
这个作者很懒,什么都没留下…
展开
-
复位和复位流程
* 上电复位---复位处理器,调试支持部件,外设等。 * 系统复位---复位处理器,外设等。 * 处理器复位---只复位处理器。 在系统复位或者处理器复位过程中,Cortex-M处理器中的调试部件不会复位,这样可以保持调试主机和微控制器之间的连接。 对于Cortex-M处理器,向量表中向量地址的最低位应该是1,以表示它们是Thumb指令。例如,复位向量是0x101,而实际从0x100处原创 2017-10-09 14:29:14 · 1747 阅读 · 0 评论 -
异常流程
异常进入流程: * 压栈(若处理器处于线程模式且正使用PSP,则压栈就使用PSP,否则使用MSP)。 * 取出异常向量(为减少等待时间,这一步可能会和压栈操作并行执行)。 * 取出异常指令(在确定异常处理起始地址之后,指令就会被取出)。 * 更新NVIC寄存器和内核寄存器(包括挂起状态,活跃状态,xPSR,PC,LR,SP等)。 根据压栈时实际使用的栈,在异常处理前,MSP或者PSP的数原创 2017-10-10 17:30:02 · 464 阅读 · 0 评论 -
异常处理
用C实现异常处理 根据AAPCS标准:C函数可以修改R0~R3、R12、LR以及xPSR。若C函数需要使用R4~R11,就需要将这些寄存器保存到栈中,并且在函数结束前将它们恢复。 调用者保存寄存器(R0~R3、R12、LR以及xPSR):若在函数调用后还需要使用这些寄存器的值,在进行调用前,调用子程序的代码需要将这些寄存器的内容保存到内存中(如栈)。函数调用后不需要使用寄存器数值则不需要保存。原创 2017-10-11 09:52:26 · 268 阅读 · 0 评论 -
中断等待和异常处理优化
中断等待 中断等待表示从中断请求开始到中断处理开始执行间的时间。 对于Cortex-M处理器,若中断时零等待的,而且系统设计允许取向量和压栈同时执行,则中断等待为12个周期,其中包括寄存器压栈、取向量以及取中断处理指令(这是最理想的情况)。 多周期指令执行期间产生中断 若在处理器执行多周期指令(如整数除法)时产生中断请求,该指令可能会被丢弃且在中断处理结束后重新执行。这种设计还适用原创 2017-10-11 15:22:35 · 1044 阅读 · 0 评论