微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ucosii在stm32上的移植详解1

ucosii在stm32上的移植详解1

时间:11-09 来源:互联网 点击:

在讲移植代码时会介绍具体是如何做的。
对于7.6的PendSV部分应认真研读一下。

chapter8 NVIC与中断控制
NVIC负责芯片的中断管理,它和CM3内核紧密相关。
如果对于CM3中断配置不是很了解,可以看看8.1, 8.2, 8.3, 8.4节。
8.7节讲述了SysTick定时器,需要看。

chapter9 中断的具体行为
9.1 中断/异常的响应序列
当CM3开始响应一个中断时
1.xPSR, PC, LR, R12以及R3‐R0入栈
2.取向量
3.选择堆栈指针MSP/PSP,更新堆栈指针SP,更新连接寄存器LR,更新程序计数器PC

对移植ucosii来说,需要注意1,3

9.2 异常返回
在CM3中,进入中断时,LR寄存器的值会被自动更新。
9.6节对更新后的值进行说明。这里统称EXC_RETURN。
返回时通过把EXC_RETURN往PC里写来识别返回动作的。
因为EXC_RETURN是一个特殊值,所以对于CM3,汇编语言就不需要类似reti这种指令,而用C语言开发时,不需要特殊编译器命令指示一个函数为中断服务程序。实际上,中断服务程序如果是c代码编写,汇编成汇编代码,函数结尾一般是reti。

9.3 嵌套的中断
只要注意:中断嵌套不能过深即可。

9.4和9.5
这两节说明CM3对中断的响应能力大大提高了,主要是硬件机制的改进。
但对移植来说,并不需要关注。

9.6 异常返回值
对不同状态进入中断时,LR寄存器的值进行说明,需要看。
这里有一点需要注意,该点在讲移植代码时再介绍。

9.7和9.8
对移植来说,并不需要关注。

chapter10 Cortex-M3的低层编程
这一章仅需关注10.2节,因为对移植来说汇编与C的接口是必须面对的。
10.2 汇编与C的接口
有两点需要知道:
1.当主调函数需要传递参数(实参)时,它们使用R0‐R3。其中R0传递第一个,R1传递第2个……在返回时,把返回值写到R0中。
2.在函数中,用汇编写代码时,R0-R3, R12可以随便使用,而使用R4‐R11,则必须先PUSH,后POP。

以上内容和移植多少都有些关系,刚开始看,可能不太明白,多看几遍就好了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top