您的位置 首页 解答

LPC213X经过μC/OS-II的多种移植计划

LPC213X通过μC/OS-II的多种移植方案-C/OS-II是可移植、适用于对安全性要求苛刻的剥夺型实时多任务嵌入式系统,简单易学,在工程应用和嵌入式系统教学中很受欢迎。LPC213X是Philips公司推出的基于ARM7TDMI-S核的32位RISC微处理器,也适合于ARM学习开发平台和工程应用。

μC/OS-II是可移植、适用于对安全性要求严苛的掠夺型实时多使命嵌入式体系,简略易学,在工程运用和嵌入式体系教育中很受欢迎。LPC213X是Philips公司推出的依据ARM7TDMI-S核的32位RISC微处理器,也适合于ARM学习开发渠道和工程运用。

1 与μC/OS-II移植作业相关的首要特性

ARM体系结构分为7种运转形式,ARM和Thumb两种作业状况。LPC213X的编程模型便是规范的ARM7体系结构;一起LPC213X也具有ARM的规范反常形式IRQ和FIQ。稍具特征的是其VIC向量间断操控器。别离对IRQ、FIQ、非向量间断和软件间断进行了分类,具有对32个间断输入的可编程分配机制。这关于μC/OS-II的移植至关重要。

芯片内部的RTC实时时钟可由独立的32 MHz晶振或依据VPB时钟的可编程预分频供给,作为实时体系的时钟节拍来历。

2 μC/OS-II移植的首要作业

移植作业分为编译器相关和处理器相关两部分。前者首要触及数据类型界说、代码格局、头文件安排、条件编译选项及混合编程等;后者首要触及开关间断、仓库方向、使命栈结构初始化、使命调度、间断操控和呼应、时钟节拍处理和高优先级使命履行等。

首要是编写3个文件:OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S。其间l首要包含以下几个重要函数;OSTaskStkInit()、OSStartHighRdy()、OSCtxSw()、OS-IntCtxSw()和OSTickISR()等。别的,还须编写装备文件、引导及初始化代码和调试等。

3 两个可行的移植计划

针对ARM所具有的7种不同运转形式,移植μC/OS-II体系时选用的处理器形式计划是多样的。例如,能够让体系运转在SVC管理形式,SWI软间断也用SVC形式,其他为反常形式;也能够使μC/OS-II运转在SYS体系形式;还能够使μC/OS-Il运转于用户形式,使命或间断切换时将其从 SVC形式或IRQ、FlQ形式切换到SYS形式处理仓库。在此构成以下两种计划,并结合移植进程进行扼要剖析。

计划一:体系运转于SVC管理形式,反常运转于反常形式。

①开关间断。设置这种计划中OS_CRITICAL_METHOD为3,则开间断进程为先保存CPSR寄存器值到RO,经过设置CPSR6、CPSR7两位制止FIQ和IRQ,关间断则康复原先开间断时保存在R0中的CPSR。

②使命切换。由于非反常使命都运转在SVC形式,所以使命切换要做的仅仅保存旧使命的寄存器状况到仓库,而且康复新使命的仓库状况到寄存器傍边,相关函数为OSCtxSw()。要留意在这里上下文切换中无须对SPSR担任,由于SPSR是备份CPSR寄存器,只有当形式切换从FIQ、IRQ形式退出时才产生效果。换句话讲,SPSR总是在间断制止时才产生效果。

③间断级使命切换和相应间断机制。间断反常分为FIQ和IRQ反常。IRQ的间断级使命切换进程OS_CPU_IRQ_ISR()如图1所示。

由图1可知,该函数作为μC/OS-II体系的间断调度函数,进入间断IRQ形式后当即回来SVC形式保存原先使命状况;再回到IRQ履行用户级间断处理代码OS_CPU_IRQ_ISR_Handler();完结后回来SVC形式运转最高优先级使命。

LPC213X具有VIC向量间断操控器,把一切间断分为FIQ、向最间断和非向量间断。FIQ从间断向量表处开端处理程序,直接在用户间断处理代码OS_CPU_FTQ_ISR_Handler()里调用间断处理程序;而向量间断IRQ在呼应时会在VICVectAddr(0xFFFFF030) 寄存器上呈现该间断处理程序的首地址。所以作为μC/OS-II的IRQ的用户间断处理代码,有必要进行如下处理:

④间断向量表。在该计划的间断向量表中,FIQ和IRQ间断向量填写的是程序跳转指令。其间FIQ跳到OS_CPU_FIQ_ISR(),IRQ跳到OS_CPU_IRQ_ISR()。

⑤时钟节拍的产生。μC/OS-II时钟节拍需求lO~100ms一次的准确距离。LPC213X运用11 MHz的外部晶振,外设时钟与体系时钟频分比设为l,而RTC设置外设时钟为时钟源,然后把TImer0作为向量间断IRQ,编写时钟间断处理程序完结时钟节拍。

计划二:体系运转于SYS体系形式,反常服务程序处理在SYS体系形式下履行,软间断处理在管理形式下履行。

①开关间断。该计划下OS_CRITICAL_METHOD为2,详细进程不直接从汇编代码完结,而是经过软件间断SWI体系服务来完结。开关间断在SVC管理形式下进行,由于ARM决议CPSR能够在恣意形式下被拜访。

②使命切换。使命切换包含使命级调度切换和间断处理程序调度切换。使命级切换选用软间断SWI办法完结,需求留意的是此刻SWI间断处理程序并不回来,所以每次SWI间断一开端就从头初始化SVC管理形式的仓库地址空间,否则会形成内存走漏或溢出。其流程如图2所示。

图2中,第一步为软件间断通用处理进程,是每一个软件间断都有必要运转的代码;然后几步为使命调度所要做的代码,详细调度由OSCtxSw完结上下文切换。全体使用宏OS_TASK_SW()完结,在OS_CPU.H中界说该宏为软间断,并分配间断号0。

③间断级使命切换。依据LPC213X处理器的VIC操控特色,选用前后台体系的传统处理办法进行间断处理程序调用,仅仅每个间断处理程序都加上相同的使命上下文切换相关代码,这些代码选用宏汇编的办法完结。详细流程如图3所示。从图中能够看出,保存上下文和康复安排妥当使命都是在IRQ形式下进行的,而用户级处理程序在SYS形式下进行的,与前一种计划刚好相反。可是,这样规划间断调度并使用宏汇编完结使妥当体系间断处理调用较多时重复代码量添加。

④间断向量表。在该计划的间断向量表中,FIQ和IRQ等间断向量填写的是宏汇编函数相对应的间断处理服务程序的姓名,不作特别处理。

⑤时钟节拍的产生。该计划的时钟节拍与前一计划的产生办法相同。

4 体系发动和引导进程

除了以上这些移植代码,体系发动还有许多作业要做,其流程如图4所示。

图4中间断向量表的装备要依据以上两种计划别离做作业,而初始化形式仓库则是不同形式都有必要完结的作业。用户级的初始化代码能够写在外围设备初始化中。

5 移植代码调试进程

多使命体系移植代码调试有时不能单步调试,时钟节拍的引进令体系比前后台体系杂乱得多,所以要有好的调试办法。能够选用以下调试进程:

①封闭时钟节拍,即封闭时钟间断单步调试,看体系会不会进入Taskldle使命;

②封闭时钟节拍,一起别离调试FIQ和IRQ间断代码;

③开时钟节拍,独自调试时钟间断ISR;

④编写简略的多使命程序(1个或2个),一起在每一个使命中调用OSTImaDly(1)函数,检查详细的进程调度进程。(多种计划的移植代码见本刊网站——编者注)

6 总 结

在各种体系的移植进程中产生问题最多的是内存泄赫,这常常导致芯片产生代码预取或数据间断反常。对运用体系来说,应该对这类间断反常做相应的提示。

μC/OS-II移植综合性较强,在移植前有必要体会多使命切换原理和体系内核结构,了解ARM汇编语言和编程模型,了解发动代码内容、编译器及芯片间断体系等。该丁作看似简略但其实内容丰富,需求较全面的软硬件常识。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/99495.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部