2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx

上传人:ni****g 文档编号:522405634 上传时间:2023-05-26 格式:DOCX 页数:4 大小:19.94KB
返回 下载 相关 举报
2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx_第1页
第1页 / 共4页
2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx_第2页
第2页 / 共4页
2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx_第3页
第3页 / 共4页
2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx》由会员分享,可在线阅读,更多相关《2023年基于ARM的实时操作系统μC/OS-Ⅱ的内核移植.docx(4页珍藏版)》请在金锄头文库上搜索。

1、基于的实时操作系统的内核移植摘 要:本文研究了实时操作系统C/OS-在ARM微处理器上的内核移植。首先介绍了实时操作系统C/OS-和ARM7微处理器,在此根底上,分析了内核移植的条件和主要内容,最后对代码移植的正确性进行测试。关键词:ARM;C/OS-;移植1 引言嵌入式系统是一个分散的工业,充满了竞争、机遇与创新,没有哪个系列的处理器和操作系统能够垄断全部市场,因此留给各个公司的创新余地很大。研究嵌入式系统,一个必不可少的根底工作就是实现嵌入式操作系统在相关处理器平台上的移植。本文基于目前应用非常广泛的ARM处理器体系结构,对C/OS-II嵌入式实时操作系统内核的移植工作做了分析和介绍,并对

2、代码移植的正确性进行验证。2 C/OS-操作系统简介C/OS-是一个著名的源代码开放的嵌入式实时操作系统(RTOS,由美国人Jean J.Labrosse编写出来。C/OS-读作micro controller OS 2,意为微控制器操作系统版本 2。C/OS-结构小巧,适合小型控制系统,具有执行效率高,占用空间小,实时性能优良和可扩展性能强等特点,具有可剥夺实时内核,提供了实时系统所需的根本功能,其中包括任务的调度与管理,时间管理,任务间同步与通信,内存管理和中断效劳等功能。C/OS-可用于8位、16位和32位单片机或DSP。良好的持续开展能力、高性能的内核以及友好的用户开发坏境,使其迅速在

3、嵌入式实时操作系统领域占据一席之地。3 ARM7微处理器简介ARMAdvanced RISC Machines,是英国Advanced RISC Machines Limited公司设计开发的通用32位RISC微处理器体系结构。ARM处理器因其卓越的性能和显著优点,已成为高性能、低功耗、低本钱嵌入式处理器的代名词,成为32位嵌入式应用领域、全球范围内最广泛使用的处理器。ARM7系列微处理器采用亚微米制造工艺,是一种低电压、低功耗的32位RISC处理器,其内核基于ARMV4T(冯诺依曼)体系结构,分为3级流水线,最高时钟频率为66MHz,使用3V/5V供电模式,最适合用于对价位和功耗要求较高的消

4、费类应用。ARM7系列微处理器具有如下特点:具有嵌入式ICERT逻辑,调试开发方便;极低的功耗,适合对功耗要求较高的应用,如便携式产品;能够提供0.9MIPS/MHz的三级流水线结构;代码密度高并兼容16位的Thumb指令集;对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等;指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代;主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。4 实时操作系统C/OS-在ARM上的内核移植4.1 移植的条件处理器的C编译器能产生可重入代码;在程序中用C语言就可以翻开或关闭中断;处

5、理器支持中断,并且能够产生定时中断;处理器能够容纳一定数量的硬件堆栈;处理器有将堆栈指针和其他CPU存放器存储和读出到堆栈(或者内存)的指令。4.2 移植C/OS-主要包括的内容重新定义一系列与编译器相关的数据类型。具体定义代码如下:typedef unsigned char BOOLEAN;typedef unsigned char INT8U;/x8位无符号整数x/typedef signed char INT8S;/x8位有符号整数x/typedef unsigned short INT16U;/x16位有符号整数x/typedef signed short INT16S;/x16位无符

6、号整数x/typedef unsigned long INT32U;/x32位无符号整数x/typedef signed long INT32S;/x32位有符号整数x/typedef float FP32;/x单精度浮点数x/typedef double FP64;/x双精度浮点数x/设置一个常量来标识堆栈增长方向。typedef unsigned int OS_STK /x堆栈的单位,堆栈入口宽度为16位x/#define OS STK GROWTH 1/x定义堆栈的增长方向,1表示高地址向低地址增长x/声明用于开关中断和任务切换的宏。具体代码如下:#define OS_ENTER_CRI

7、TICAL() ARMEnableInt() /x开启中断x/#define OS_NTER_CRITICAL() ARMDisabIeInt() /x关闭中断x/#define OS_TASK_SW() OSCtxSw() /x任务切换x/用汇编语言编写与处理器相关的函数(OS_CPU.A.ASM)为了方便移植,大局部的C/OS-代码是用C语言写的,但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为C/OS-在读写处理器存放器时只能通过汇编语言来实现。它包括以下四个子函数:OSStartHighRdy()是运行优先级最高的就绪任务、OSCtxsw()是任务级的任务切换函数、OSIntC

8、txSw()是中断级的任务切换函数、OSTickISR()是系统时钟节拍中断效劳函数5 用C语言编写6个与操作系统相关的函数(OS_CPU_C.C)OSTaskInit:OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。在用户建立任务的时候,用户传递任务的地址,pdata指针,任务的堆栈栈顶和任务的优先级给OSTaskCreate()和OSTaskCreateExt()。一旦用户初始化了堆栈,OSTaskStkInit()就需要返回堆栈指针所指的地址。OSTaskCreate()和OSTaskCreateExt()会获

9、得该地址并将它保存到任务控制块(OS_TCB)中。OSTaskCreateHook:当用OSTaskCreate()和OSTaskCreateExt()建立任务时就会调用OSTaskCreateHook()。当C/OS-设置完自己内部结构以后,会在调用任务调度程序之前调用OSTaskCreateHook()。 当 OSTaskCreateHook()被调用时,会收到指向已建立任务的OS_TCB指针,这样可访问所有的结构成员。OSTaskDelHook:当任务被删除时会调用OSTaskDelHook()。该函数在任务从C/OS-的内部任务链表中解开之前被调用。当它被调用时,会收到指向正被删除任务

10、的OSJCB指针,这样可访问所有的结构成员。OSTaskSwHook:当发生任务切换的时候就会调用OSTaskSwHook()。OSTaskSwHook()可以直接访问OSTCBCur和OSTCBHighRdy,因为它们是全局变量。OSTCBCur指向被切换出去的任务的OS_TCB,而OSTCBHighRdy指向新任务 OS_TCB。OSTaskStatHook:OSTaskStatHook()每秒钟都会被OSTaskStat()调用一次。用户可以用OSTaskStatHook()来扩展统计功能。OSTimeTickHook:OSTimeTickHook()在每个时钟节拍都会被OSTaskTi

11、ck()调用。OSTimeTickHook()是在节拍被C/OS-真正处理并通知用户的移植实例或应用程序之前被调用的。完成了上述工作以后,C/OS-就可以正常的运行在ARM处理器上了结束语C/OS-II作为一个优秀的实时操作系统已经被移植到各种体系结构的微处理器上,而ARM体系结构在嵌入式领域也获得了广泛的应用和支持。将C/OS-II移植到ARM平台上,能够使我们更深入地了解实时操作系统的构造,加快在ARM平台上的应用和开发,并为更高层次上的扩展和改良打下根底。参考文献1Jean J, 邵贝贝译. Labrosse. 嵌入式实时操作系统C/OS-II. 北京 航空航天大学出版社. 2003.2田泽. 嵌入式系统开发与应用教程. 北京: 北京航空航天大学出版社, 2004.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 人事档案/员工关系

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号