实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植

实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植

ID:6002705

大小:27.00 KB

页数:5页

时间:2017-12-30

实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植_第1页
实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植_第2页
实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植_第3页
实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植_第4页
实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植_第5页
资源描述:

《实时操作系统μc-os—ⅱ在arm处理器lpc2104上移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实时操作系统μC/OS—Ⅱ在ARM处理器LPC2104上移植  摘要:实时操作系统μC/OS-Ⅱ在ARM处理器LPC2104上的移植是易于实现的。本文分析了μC/OS-Ⅱ所具备的移植条件,并探讨了如何实现这个移值过程。关键词:实时操作系统ARM处理器LPC2104上的移植中图分类号:TP316文献标识码:A文章编号:1007-9416(2013)05-0143-01μC/OS-Ⅱ是实时操作系统中应用最为广泛的系统之一,它作为免费的、原代码公开的操作系统,易于被用来被移植,只有满足一定的移植条件,选择适当的编译器,将

2、软硬件之上的内容进行修改,就可完成移植过程。1移植分析1.1移植条件μC/OS-Ⅱ由于其实现原理相对来说,较为简单,它只是一个小的实时内核,因此,其移植会比其他内核容易实现。将μC/OS-Ⅱ内核移植到一个嵌入式系统中去,这个系统要满足以下几个条件5(1)编译器-处理器的C编译器能产生可重入代码。重入代码就是可以被多个任务同时调用的一个函数或是一段代码,在调用的过程中,数据不会被破坏。可重入代码最大的特点在于它可以被执行的过程中断,当恢复执行后,继续执行,数据不会由于执行的中断而被破坏,这种数据保护性是执行多任务操作

3、的基础。(2)处理器支持中断,可以产生定时中断。多任务的协调切换是通过处理品中断完成的,这是多任务操作系统实现的基本条件。ARMT7DMI-S处理器上可以产生定时器中断,处理器产生的定时中断,使μC/OS-Ⅱ系统灵活的实现多任务之间的切换。(3)C语言开关控制处理器中断。程序中的打开或关闭中断是用来完成中断处理器中对应的寄存器的关闭与打开功能的。μC/OS-Ⅱ控制系统的中断关闭或打开是通过宏调用实现的。以ARM7TDMI-S为核心的LPC21O4处理器,可以通过相应寄存器的设置来完成。(4)处理器支持堆栈操作。处理

4、器的一个重要功能就是实现堆栈指针和CPU寄存器可内容的读出、并存储到内存中,实现系统的实时调度。μC/OS-Ⅱn系统会在任务调度时,保存当前任务现场,将正在进行的任务的CPU寄存器存放在任务的堆栈中,完成任务后,再将原来任务的现场进行恢复,从另一任务的堆栈中将原来的工作寄存器恢复完成。现场保护与恢复必须同出入堆栈来实现,ARM7系列的TDMILPC2104嵌入式处理器具有上述功能,因此,μC/OS-Ⅱ系统可以被移植到这个处理器上。51.2编译器的选择当前,ARM处理器核的C语言编译器有很多,其中以SDT和ADS为典

5、型代表,其中,后者是前才的升级版。GCC也是C语言编译器,主要用于Linux操作系统,也是使用比较广泛的一种,但是与ADS相比,其编译效率相对较低,与ADS相差2-3倍,这种低性能不利于芯片功能的实现。因此,适合选择ADS编译程序作为调试。1.3任务模式的取舍ARM7TDMI-S处理器核具有七种模式,分别是用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式和快速中断模式。其中用户模式不是特权模式,没有与相应的异常相联系,因此,是工作模式的首选。而系统模式属于特权模式中的一种,但是它也不与相应异常相联系,但

6、是会出现任务代码多而对整个程序产生影响,因此,可以作为备用任务模式。用户可以根据自身情况通过系统提供的接口进行两种模式的切换。2系统μC/OS-Ⅱ的移植μC/OS-Ⅱ移植主要涉及的函数的调用与文件编写。通过对μC/OS-Ⅱ软件/硬件结构图进行分析,探知移植μC/OS-Ⅱ到LPC2104需要分为6步骤实现:5(1)在OS_CPU.H中设置不依赖于编译器的数据类型。C/OS-Ⅱ的移植首先要定义其适合其特点的数据类型,那么就要对数据类型进行重新定义,保证移植的成功。对于与编译器有亲的short,int和long数据类型,

7、是不可进行移植的。(2)在OS_CPU.H中使用软中断SWI声明底层接口。在ADS中关键字SWl声明一个不存在的函数,那么调用该函数就在调用这个函数的地方插入一条swl指令,并且可以制定功能号。使用不同的的功能号区分不同的函数,实现的主要函数的功能。底层函数将堆栈的增长方向进行了定义,并利用软中断的方式定义了开关中断和运行最高任务函数。只有使用函数正常调用执行软中断,并且向中断向量定义软中断函数,才能完成开关中断和运行最高任务函数。(3)OSIntCtxSw()。OSIntExit()执行切换功能是通过调用OSIn

8、tCtxSw()来实现的。因为OSIntCtxSw()是在ISR中被调用的,因此,被中断的任务处理器寄存器都会被保存到堆栈之中,而采用软中断方式的任务切换函数OSIntCtxSw()由于被调用前,所有的处理器已经被保存到堆栈中了,因此,OSIntCtxSw()与OS_TASK_SW可以采用同一代码段。(4)OSTickISR()。此函数的实现原理借鉴了专业人

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。