μCOS-II嵌入式操作系统内核移植研究及其实现_第1页
μCOS-II嵌入式操作系统内核移植研究及其实现_第2页
μCOS-II嵌入式操作系统内核移植研究及其实现_第3页
μCOS-II嵌入式操作系统内核移植研究及其实现_第4页
μCOS-II嵌入式操作系统内核移植研究及其实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C/OS-II嵌入式操作系统内核移植研究及其实现嵌入式操作系统内核移植研究及其实现研究背景、目的、意义研究背景、目的、意义研究现状研究现状存在的问题存在的问题研究内容与方法研究内容与方法论文基础工作论文基础工作光电技术与智能控制教育部重点实验室 研究背景研究背景 目前许多目前许多32位微控制器都可以同步使用位微控制器都可以同步使用(S)DRAM,极大地降低了使用更大容量数,极大地降低了使用更大容量数据存储器的成本。此外,除了处理应用控制功能之外,需要支持互联网接入的应用在据存储器的成本。此外,除了处理应用控制功能之外,需要支持互联网接入的应用在MCU运行运行TCP/IP或者其他通信协议的情况下

2、,要求系统建立在或者其他通信协议的情况下,要求系统建立在RTOS上也就必然成为上也就必然成为一种现实需求。一种现实需求。光电技术与智能控制教育部重点实验室 研究背景研究背景 另一方面,另一方面,32位位ARM体系结构已经成为一种事实上的标准,随着高端体系结构已经成为一种事实上的标准,随着高端32位位CPU价价格的不断下降和开发环境的成熟,促使格的不断下降和开发环境的成熟,促使32位嵌入式处理器日益挤压位嵌入式处理器日益挤压8位微控制器主导位微控制器主导的应用空间而且高端芯片高价位的困扰也已经成为历史,的应用空间而且高端芯片高价位的困扰也已经成为历史,32位位ARM芯片的价格在持续芯片的价格在持

3、续下降。同时,随着第三方开发工具价格的降低和灵活性以及智能化程度的提高,使得下降。同时,随着第三方开发工具价格的降低和灵活性以及智能化程度的提高,使得基于嵌入式基于嵌入式RTOS的专用系统开发变得不再困难。的专用系统开发变得不再困难。光电技术与智能控制教育部重点实验室 研究背景研究背景 C/OS-II 在一个航空项目中得到符合美国联邦航空管理局在一个航空项目中得到符合美国联邦航空管理局(FAA)对用于商业飞机)对用于商业飞机的、符合的、符合RTCA DO-178B标准的认证,这就说明标准的认证,这就说明C/OS-II 可以在绝大多数场合应用,可以在绝大多数场合应用,再加上再加上C/OS-II

4、的开源性、可移植性、可裁剪性、任务可剥夺性、系统服务等多项特的开源性、可移植性、可裁剪性、任务可剥夺性、系统服务等多项特征使得将征使得将C/OS-II 移植到移植到ARM芯片并基于此开发具体应用成为高性价比的选择。芯片并基于此开发具体应用成为高性价比的选择。光电技术与智能控制教育部重点实验室 研究背景研究背景光电技术与智能控制教育部重点实验室 研究目的研究目的 随着高端芯片价格的走低以及对随着高端芯片价格的走低以及对扩展传统单片机控制系统功能扩展传统单片机控制系统功能需求的不断增加,需求的不断增加,在当下主流的在当下主流的ARMARM芯片上移植实时操作系统、配套相关服务并在此基础上建立紧密依赖

5、芯片上移植实时操作系统、配套相关服务并在此基础上建立紧密依赖于行业背景的专用系统日益成为嵌入式系统应用开发的主流趋势。研究并掌握一种嵌于行业背景的专用系统日益成为嵌入式系统应用开发的主流趋势。研究并掌握一种嵌入式操作系统,并熟练掌握将其移植到不同硬件平台的关键技术具有重要的意义。入式操作系统,并熟练掌握将其移植到不同硬件平台的关键技术具有重要的意义。 CC/OS-II /OS-II 源代码开放、具有良好可裁剪性、源程序结构的清晰以及良好的稳定源代码开放、具有良好可裁剪性、源程序结构的清晰以及良好的稳定性和可靠性,决定了性和可靠性,决定了CC/OS-II /OS-II 具备非常好的可移植性。此外

6、,具备非常好的可移植性。此外,ARMARM处理器以其优良的处理器以其优良的性能和准确的市场定位使得关于性能和准确的市场定位使得关于ARMARM的资源非常丰富,这也加速了基于的资源非常丰富,这也加速了基于ARMARM的、面向各的、面向各种应用的系统开发,确立了种应用的系统开发,确立了ARMARM技术的市场领先地位。技术的市场领先地位。 为了使应用程序的开发能够避为了使应用程序的开发能够避开底层硬件细节、系统能够多任务并发、系统资源得到统一管理、系统具备接口函数开底层硬件细节、系统能够多任务并发、系统资源得到统一管理、系统具备接口函数调用等功能,将调用等功能,将C/OS-II C/OS-II 移植

7、到移植到ARMARM芯片上就显得十分必要。芯片上就显得十分必要。光电技术与智能控制教育部重点实验室 研究意义研究意义 阅读阅读C/OS-II内核源码,研究内核源码,研究C/OS-II 内核移植技术以及使用嵌入式系统开发工内核移植技术以及使用嵌入式系统开发工具,对于实时系统内核设计、嵌入式软件具,对于实时系统内核设计、嵌入式软件/硬件协同设计方法以及嵌入式系统开发环境硬件协同设计方法以及嵌入式系统开发环境的设计实现等都有着重要的意义。由此而延伸开来,面向多目标、多任务的微内核嵌的设计实现等都有着重要的意义。由此而延伸开来,面向多目标、多任务的微内核嵌入式系统设计,分布式嵌入式系统的实时性问题以及

8、嵌入式系统的多目标交叉编译和入式系统设计,分布式嵌入式系统的实时性问题以及嵌入式系统的多目标交叉编译和交叉调试工具的研究都已经成为了非常重要的理论研究课题。交叉调试工具的研究都已经成为了非常重要的理论研究课题。理论意义:理论意义: 2、掌握、掌握C/OS-II 内核移植技术,扩展内核移植技术,扩展C/OS-II 的应用功能,依靠行业背景,在的应用功能,依靠行业背景,在移植了移植了C/OS-II 的的ARM平台上做应用开发是性价比很高的选择。平台上做应用开发是性价比很高的选择。实践意义:实践意义: 1、C/OS-II 是学习实时操作系统绝佳教材。可以在是学习实时操作系统绝佳教材。可以在上免费上免

9、费下载很多的移植范例而且不用花什么钱。下载很多的移植范例而且不用花什么钱。 3、CC/OS-II /OS-II 已经在诸如手机、路由器、集线器、不间断电源、飞行器、医疗设已经在诸如手机、路由器、集线器、不间断电源、飞行器、医疗设备以及工业控制等领域得到广泛应用。并且备以及工业控制等领域得到广泛应用。并且CC/OS-II /OS-II 已经通过了非常严格的测试,已经通过了非常严格的测试,得到了得到了FAAFAA的认证。这决定了基于的认证。这决定了基于CC/OS-II /OS-II 开发的应用因为系统问题而失败的概率很开发的应用因为系统问题而失败的概率很小,用户尽可以专注于自己的应用而不必担心因为

10、小,用户尽可以专注于自己的应用而不必担心因为CC/OS-II /OS-II 的问题而导致程序失败的问题而导致程序失败。研究背景、目的、意义研究背景、目的、意义研究现状研究现状存在的问题存在的问题研究内容与方法研究内容与方法论文基础工作论文基础工作光电技术与智能控制教育部重点实验室 研究现状研究现状1、针对、针对C/OS-II 内核本身的研究。比如研究并改进其时间管理机制、中断机制、内内核本身的研究。比如研究并改进其时间管理机制、中断机制、内存管理方案、内核任务调度算法等。存管理方案、内核任务调度算法等。 就当前而言,针对嵌入式操作系统就当前而言,针对嵌入式操作系统 C/OS-II 的研究主要体

11、现出三大趋势:的研究主要体现出三大趋势:2、针对、针对C/OS-II 设备驱动的研究。严格意义上来说,设备驱动的研究。严格意义上来说, C/OS-II 仅仅是一个实时系统仅仅是一个实时系统内核,像文件系统、网络协议栈、用户图形界面等高层驱动程序的研究也一直是研究内核,像文件系统、网络协议栈、用户图形界面等高层驱动程序的研究也一直是研究人员关注的热点。值得注意的是,也有人借鉴人员关注的热点。值得注意的是,也有人借鉴Linux、VxWroks 和和WinCE等操作系统等操作系统的驱动程序架构,着手从事基于的驱动程序架构,着手从事基于C/OS-II 的驱动程序框架的研究的驱动程序框架的研究(不再停留

12、于针对具不再停留于针对具体设备驱动程序设计的层面体设备驱动程序设计的层面)。3、 结合行业背景,移植结合行业背景,移植C/OS-II 内核并配套相关服务、开发相关应用的研究是目前内核并配套相关服务、开发相关应用的研究是目前所占比重较大的研究方向。由行业需求拉动的所占比重较大的研究方向。由行业需求拉动的 C/OS-II 内核移植和应用开发研究从内核移植和应用开发研究从过去到现在一直在如火如荼地进行着。涉及航空航天、工业控制、电力系统、通信设过去到现在一直在如火如荼地进行着。涉及航空航天、工业控制、电力系统、通信设备、医疗器械、资源侦测等诸多领域。发表的论文数量较之于前两个研究领域也遥遥备、医疗器

13、械、资源侦测等诸多领域。发表的论文数量较之于前两个研究领域也遥遥领先。领先。研究背景、目的、意义研究背景、目的、意义研究现状研究现状存在的问题存在的问题研究内容与方法研究内容与方法论文基础工作论文基础工作光电技术与智能控制教育部重点实验室 存在的问题存在的问题1 1、尽管、尽管C/OS-II 的作者提供了一些驱动程序如的作者提供了一些驱动程序如C/GUI, C/FS, C/TCP-IP, C/FLASH等,但是这些驱动的获得需要许可证。到目前为止,针对等,但是这些驱动的获得需要许可证。到目前为止,针对C/OS-II 通用框通用框架的研究相对滞后,尤其是驱动程序框架的研究,架的研究相对滞后,尤其

14、是驱动程序框架的研究, C/OS-II 内核至今没有一个完整内核至今没有一个完整的设备驱动框架。这也使得使用的设备驱动框架。这也使得使用C/OS-II 进行开发时感觉到的与其他嵌入式操作系统进行开发时感觉到的与其他嵌入式操作系统相比差距最大的地方。当系统复杂性提升或者希望不同产品线保持体系结构上的一致相比差距最大的地方。当系统复杂性提升或者希望不同产品线保持体系结构上的一致时,这个问题就比较显著。特别是在嵌入式系统的复杂度越来越高的前提下时,这个问题就比较显著。特别是在嵌入式系统的复杂度越来越高的前提下( (例如支例如支持网络协议栈已经非常普及持网络协议栈已经非常普及) ),这方面的问题明显影

15、响,这方面的问题明显影响C/OS-II 的推广和应用。的推广和应用。2 2、许多论文、许多论文( (尤其是期刊、会议论文尤其是期刊、会议论文) )尽管在理论上针对尽管在理论上针对C/OS-II 内存管理以及任务内存管理以及任务调度方面的问题提出了可行的办法,但是并没有予以实现,或者说理论上的方案在实调度方面的问题提出了可行的办法,但是并没有予以实现,或者说理论上的方案在实施起来难度很大,可行性较差。施起来难度很大,可行性较差。研究背景、目的、意义研究背景、目的、意义研究现状研究现状存在的问题存在的问题研究内容与方法研究内容与方法论文基础工作论文基础工作光电技术与智能控制教育部重点实验室 研究内

16、容与方法研究内容与方法-目标目标 为了能够顺利实现为了能够顺利实现C/OS-II 在在ARM平台上的移植,首先需要认真研究嵌入式系统开平台上的移植,首先需要认真研究嵌入式系统开发的基础知识、发的基础知识、C/OS-II 内核和内核和ARM的基础知识,在此基础上掌握的基础知识,在此基础上掌握C/OS-II 内核移植的内核移植的关键技术并针对关键技术并针对C/OS-II 内存管理方案和内核任务调度的特点,提出相应的改进方案使内存管理方案和内核任务调度的特点,提出相应的改进方案使得改进后的得改进后的C/OS-II 能够在内存分配上更加灵活,在内核任务调度上支持同一优先级的能够在内存分配上更加灵活,在

17、内核任务调度上支持同一优先级的不同任务调度。不同任务调度。 整个课题的研究需要达到如下目标:整个课题的研究需要达到如下目标:光电技术与智能控制教育部重点实验室 1、熟悉嵌入式实时操作系统、熟悉嵌入式实时操作系统C/OS-II的数据结构的数据结构(内核结构、任务管理、时间管内核结构、任务管理、时间管 理以及事件控制块理以及事件控制块)。 7、熟悉、熟悉ARM体系结构,掌握相关开发工具的使用,能够在移植了体系结构,掌握相关开发工具的使用,能够在移植了C/OS-II的的ARM平台上开发具体应用。平台上开发具体应用。 2、熟练掌握、熟练掌握C/OS-II 源程序文件结构,熟悉源程序文件结构,熟悉C/O

18、S-II向向80 x86平台和平台和ARM平台平台移植的工作内容,掌握关键技术。移植的工作内容,掌握关键技术。必须达到的目标:必须达到的目标: 3、熟悉、熟悉C/OS-II的内存管理机制。的内存管理机制。 4、熟悉、熟悉C/OS-II的任务管理和调度算法。的任务管理和调度算法。 5、熟悉、熟悉C/OS-II任务间同步机制和通信机制。任务间同步机制和通信机制。 6、熟悉、熟悉C/OS-II中断处理机制。中断处理机制。研究内容与方法研究内容与方法-目标目标光电技术与智能控制教育部重点实验室 1、针对、针对C/OS-II 内存管理分配不灵活的瑕疵,欲借鉴其他操作系统的内存管理内存管理分配不灵活的瑕疵

19、,欲借鉴其他操作系统的内存管理机制,尝试提出一种新方案以增强机制,尝试提出一种新方案以增强C/OS-II 的内存管理机制。的内存管理机制。争取达到的目标:争取达到的目标: 2、 针对针对C/OS-II内核只支持不同优先级多任务抢占式调度,不支持同一优先级内核只支持不同优先级多任务抢占式调度,不支持同一优先级的多任务抢占式调度的问题(即不支持时间片轮转调度算法),欲改变数据结构,尝的多任务抢占式调度的问题(即不支持时间片轮转调度算法),欲改变数据结构,尝试改进其任务调度算法。试改进其任务调度算法。 3、在移植了、在移植了C/OS-II内核的基础上,整合并移植内核的基础上,整合并移植C/OS-II

20、操作系统的操作系统的GUI (Graphic User Interface)。 4、在移植了、在移植了C/OS-II内核的基础上,掌握移植内核的基础上,掌握移植C/TCP-IP协议栈的关键技术并予协议栈的关键技术并予以实现。以实现。研究内容与方法研究内容与方法-目标目标光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容(1) (1) 移植的原理以及条件移植的原理以及条件所谓移植,就是指一个操作系统可以在某个微处理器或者控制器上运行。然而,要所谓移植,就是指一个操作系统可以在某个微处理器或者控制器上运行。然而,要使使CC/OS-II/OS-II正常运行,处理器必须

21、满足如下要求:正常运行,处理器必须满足如下要求: 处理器的处理器的C编译器能产生可重入代码;编译器能产生可重入代码; 处理器支持中断,并且能产生定时中断,通常在处理器支持中断,并且能产生定时中断,通常在10Hz100Hz 之间;之间; 用用C语言就可以开语言就可以开/关中断;关中断; 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈;处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈; 处理器有将堆栈指针和其他处理器有将堆栈指针和其他CPU 寄存器读出和存储到堆栈或内存中的指令。寄存器读出和存储到堆栈或内存中的指令。1、C/OS-II 内核分析与移植内核分析与移植光电技术与智能控

22、制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容(2) (2) C/OS-II 内核内核移植过程移植过程 虽然虽然C/OS-在设计时,已经考虑到了在不同的处理器上的移植问题,但在移植在设计时,已经考虑到了在不同的处理器上的移植问题,但在移植过程中,用户仍需修改部分代码,这些代码主要是和处理器相关的文件,即过程中,用户仍需修改部分代码,这些代码主要是和处理器相关的文件,即OS_CPU.H ,OS_CPU _C.C和和OS_CPU_A .ASM 。 要在要在OS_CPU.H 中编写与处理器和编译器相关的代码,包括用中编写与处理器和编译器相关的代码,包括用#define语句定义语句

23、定义的,与处理器相关的常数、宏以及数据类型。的,与处理器相关的常数、宏以及数据类型。 在在OS_CPU _C.C 中,则需要进行堆栈初始化和相应函数的编写。共有中,则需要进行堆栈初始化和相应函数的编写。共有6 个函数个函数:OSTaskStkInit(), OSSTaskCreateHook(), OSTaskDelHook(), OSTaskSwHook(),OSTaskStatHook(),OSTimeTickHook()。其中后面。其中后面5个是个是Hook 函数,又称为钩子函数,主要是用来对函数,又称为钩子函数,主要是用来对C/OS- II进行功能扩展的。这些钩子函进行功能扩展的。这些

24、钩子函数为用户定义函数,由操作系统调用相应的数为用户定义函数,由操作系统调用相应的Hook 函数去执行,在一般情况下,它们函数去执行,在一般情况下,它们都可以不加代码都可以不加代码,实现为空函数即可。而函数实现为空函数即可。而函数OSTaskStkInit()要对堆栈进行初始化要对堆栈进行初始化, 在在进行堆栈初始化以后,进行堆栈初始化以后,OSTaskStkInit() 返回新的堆栈栈顶指针返回新的堆栈栈顶指针。 OS_CPU_A .ASM 中应编写中应编写4个函数:个函数:OS_StarHighRdy ();OSCtxSw();OSTick_ISR();OSIntCtsSw();光电技术与

25、智能控制教育部重点实验室 OS_StarHighRdy() 被多任务系统启动函数被多任务系统启动函数OS_Start()调用,负责获取新任务的堆栈指调用,负责获取新任务的堆栈指针针,并从堆栈指针中恢复新任务的所有处理器寄存器,运行优先级最高的就绪任务并从堆栈指针中恢复新任务的所有处理器寄存器,运行优先级最高的就绪任务。 OSCtxSw ()是任务级的任务切换函数,因此,中断服务子程序、陷阱或异常处理的向是任务级的任务切换函数,因此,中断服务子程序、陷阱或异常处理的向量地址都必须指向量地址都必须指向OSCtxSw()。OSCtxSw() 函数负责将当前任务对应的处理器的寄存器保函数负责将当前任务

26、对应的处理器的寄存器保存到堆栈中,并将任务中需要恢复的处理器的寄存器从堆栈中恢复出来存到堆栈中,并将任务中需要恢复的处理器的寄存器从堆栈中恢复出来。 OSTick_ISR() 是系统时钟节拍中断服务函数。它是由定时中断产生,主要负责在进入是系统时钟节拍中断服务函数。它是由定时中断产生,主要负责在进入时保存处理器的寄存器,完成任务时切换,退出时恢复寄存器并返回时保存处理器的寄存器,完成任务时切换,退出时恢复寄存器并返回。 OSIntCtsSw()是中断级的任务切换函数,它的绝大多数代码和是中断级的任务切换函数,它的绝大多数代码和OSCtxSw() 一样,区别一样,区别在于在于OSTick_ISR

27、() 中已经保存了处理数中保存处理器的寄存器中已经保存了处理数中保存处理器的寄存器。 完成上述工作后,完成上述工作后,C/O S-就可以运行在硬件开发平台上了。就可以运行在硬件开发平台上了。研究内容与方法研究内容与方法-关键内容关键内容光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容 C/OS-II 对内存进行两级管理对内存进行两级管理,即把一个连续的内存空间分为若,即把一个连续的内存空间分为若干个分区,每个分区又分为若干个干个分区,每个分区又分为若干个大小相等的内存块,操作系统以分大小相等的内存块,操作系统以分区为单位来管理动态内存,而任务区为单位来管理动态

28、内存,而任务以内存块为单位来获得和释放动态以内存块为单位来获得和释放动态内存。内存分区以及内存块的使用内存。内存分区以及内存块的使用情况则由内存控制块来记录。不同情况则由内存控制块来记录。不同的内存分区之间管理的内存块大小的内存分区之间管理的内存块大小没有限制,可以相同也可以不同。没有限制,可以相同也可以不同。内存控制块与内存分区与内存块的内存控制块与内存分区与内存块的关系如图关系如图1所示:所示:2、C/OS-II 内存管理机制分析内存管理机制分析及存在的问题及存在的问题图1 内存控制块与内存分区和内存块的关系光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容

29、 嵌入式操作系统嵌入式操作系统C/OS-II 的内存管理方案虽然简单易行,分配速度快,适合在嵌入式的内存管理方案虽然简单易行,分配速度快,适合在嵌入式系统中使用,但存在以下不足:系统中使用,但存在以下不足:(1)创建内存分区后内存块大小固定,使用要求严格。)创建内存分区后内存块大小固定,使用要求严格。 创建内存分区时采用了定义二维全局数组的方法,将数组名作为内存创建内存分区时采用了定义二维全局数组的方法,将数组名作为内存分区的首地址数组大小是固定的,生成映像后不可能在使用中动态地改变。生成的内存分区的首地址数组大小是固定的,生成映像后不可能在使用中动态地改变。生成的内存分区中内存块由于大小固定

30、,要求开发人员事先知道该分区中内存块的大小,并且在使用分区中内存块由于大小固定,要求开发人员事先知道该分区中内存块的大小,并且在使用时不能超过该内存块的长度,而且在释放内存块时,一定要确保该内存块释放到它原来所时不能超过该内存块的长度,而且在释放内存块时,一定要确保该内存块释放到它原来所属的内存分区中,否则会引起灾难性后果。属的内存分区中,否则会引起灾难性后果。(2)未提供内存分区的释放和合并功能)未提供内存分区的释放和合并功能 基于效率和简单性的考虑,基于效率和简单性的考虑,的内存块虽然可以释放,但没有提供内存的内存块虽然可以释放,但没有提供内存分区释放功能,造成这部分内存空间一旦被任务申请

31、使用后就无法再次回收利用。这对于分区释放功能,造成这部分内存空间一旦被任务申请使用后就无法再次回收利用。这对于一些稍微复杂一点应用环境来说是一种比较苛刻的条件,可能会导致产品对内存需求增大一些稍微复杂一点应用环境来说是一种比较苛刻的条件,可能会导致产品对内存需求增大,从而引起成本的增加。,从而引起成本的增加。 的内存分配方案使系统失去了灵活性,要求必须在设计阶段就预先知道的内存分配方案使系统失去了灵活性,要求必须在设计阶段就预先知道所需要的内存并对之作出分配。这样的分配方案必然导致很大的浪费,因为内存分配必须所需要的内存并对之作出分配。这样的分配方案必然导致很大的浪费,因为内存分配必须按照最坏

32、情况进行最大的配置,而实际运行时很可能只使用其中的一小部分,而且在硬件按照最坏情况进行最大的配置,而实际运行时很可能只使用其中的一小部分,而且在硬件平台不变的情况下不可能灵活地为系统添加功能,从而使得系统的升级变得困难。平台不变的情况下不可能灵活地为系统添加功能,从而使得系统的升级变得困难。光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容初步的解决思路:初步的解决思路: 为了提高分配内存块的效率且减少碎片的产生,对不同大小的内存分配请求使用不同为了提高分配内存块的效率且减少碎片的产生,对不同大小的内存分配请求使用不同的策略。大多数系统中,小内存块的分配请求远多

33、于大内存块的分配请求,因此针对小内的策略。大多数系统中,小内存块的分配请求远多于大内存块的分配请求,因此针对小内存块的分配请求应该采用高效、快速分配的方法。存块的分配请求应该采用高效、快速分配的方法。 (1) 小块内存管理方案小块内存管理方案 当需要的内存块较小时(不大于当需要的内存块较小时(不大于1KB),使用一级位图索引,把内存按),使用一级位图索引,把内存按2的幂次分为固的幂次分为固定大小的块。由于在很多定大小的块。由于在很多32位的嵌入式系统中内存是位的嵌入式系统中内存是8Byte对齐,因此最小的内存块为对齐,因此最小的内存块为8Byte,然后依次递增,即然后依次递增,即8Byte,1

34、6Byte,1KB,一共一共8组。组。(2)大内存管理方案)大内存管理方案 固定大小的内存分配方式对小块内存申请是合适的,但对大块内存()申请固定大小的内存分配方式对小块内存申请是合适的,但对大块内存()申请则不合适。因为采用固定大小的内存分配方案其内存利用率不高,固定内存块越大,内存则不合适。因为采用固定大小的内存分配方案其内存利用率不高,固定内存块越大,内存利用率越低,因此对大块内存申请应考虑用另外的分配方案。利用率越低,因此对大块内存申请应考虑用另外的分配方案。光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容3、 C/OS-II 内核任务调度简述内核任务

35、调度简述 C/OS-是一个具有基本功能的操作系统内核,包括基于优先级的可剥夺式任务调度是一个具有基本功能的操作系统内核,包括基于优先级的可剥夺式任务调度和简单的内存管理等。和简单的内存管理等。C/OS-内核支持内核支持64 种不同优先级的任务,不支持同级任务,不种不同优先级的任务,不支持同级任务,不支持时间片轮询任务调度。支持时间片轮询任务调度。这样的系统完全为硬实时环境而设计这样的系统完全为硬实时环境而设计,在某些实际应用中局限,在某些实际应用中局限了系统的灵活性和应用范围。了系统的灵活性和应用范围。可供借鉴的解决思路:可供借鉴的解决思路: 针对上述问题,内核研究者们在文献中提供了多种方案:

36、有人提出了一种将针对上述问题,内核研究者们在文献中提供了多种方案:有人提出了一种将8个优先级个优先级的任务转换为相同优先级任务,并基于时间片轮转调度的方法;也有研究者提出一种将任的任务转换为相同优先级任务,并基于时间片轮转调度的方法;也有研究者提出一种将任务调度在优先级抢占与时间片轮转之间轮流选用的策略;更有研究者提出将单一优先级任务调度在优先级抢占与时间片轮转之间轮流选用的策略;更有研究者提出将单一优先级任务扩展为优先级任务链表,从而达到添加同级任务的目的。上述方法都从不同的技术角度务扩展为优先级任务链表,从而达到添加同级任务的目的。上述方法都从不同的技术角度为为C/OS-添加了添加了同级任

37、务调度,尽管有的方法理论上符合逻辑,但是实际操作较为复杂同级任务调度,尽管有的方法理论上符合逻辑,但是实际操作较为复杂,实现起来的难度也比较大。本人试图在在借鉴其他研究者研究成果的基础上,努力做到,实现起来的难度也比较大。本人试图在在借鉴其他研究者研究成果的基础上,努力做到扩展扩展C/OS-内核任务优先级数量,并尽最大努力使内核任务优先级数量,并尽最大努力使C/OS-支持支持时间片轮转调度算法时间片轮转调度算法。光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容 C/OS-C/OS-作为一种代码公开的嵌入式实时操作系统很有特色,在规模不大的代码内实作为一种代码公

38、开的嵌入式实时操作系统很有特色,在规模不大的代码内实现了抢占式任务调度、多任务间通信等功能。其内核裁剪到最小状态后编译出来只有现了抢占式任务调度、多任务间通信等功能。其内核裁剪到最小状态后编译出来只有8k8k左左右,资源消耗非常小。但是右,资源消耗非常小。但是C/OS-C/OS-仅仅只是一个内核,还不能直接用于一个复杂的工程仅仅只是一个内核,还不能直接用于一个复杂的工程项目,必须与其他一些模块如项目,必须与其他一些模块如TCP/IPTCP/IP、文件系统(、文件系统(FSFS)、图形界面()、图形界面(GUIGUI)等整合,其中图)等整合,其中图形界面(形界面(GUIGUI)是一个成熟的工程产

39、品不可缺少的部分。国外的嵌入式)是一个成熟的工程产品不可缺少的部分。国外的嵌入式GUIGUI系统发展较早,系统发展较早,较为著名的有较为著名的有QTQT库库开发商面向嵌入式系统的开发商面向嵌入式系统的QT/EmbeddedQT/Embedded,还有开放源码的项目,还有开放源码的项目MicroWindowsMicroWindows、OpenGUIOpenGUI等等等等。C/GUIC/GUI是由是由Micrium Micrium 公司专门针对嵌入式应用所设计的一公司专门针对嵌入式应用所设计的一款图形支持系统。它适用于单任务或是多任务系统环境,可以为任何使用款图形支持系统。它适用于单任务或是多任务

40、系统环境,可以为任何使用LCD LCD 图形显示的图形显示的应用提供高效的独立于处理器及应用提供高效的独立于处理器及LCD LCD 控制器的图形用户接口,也可以用于任意控制器的图形用户接口,也可以用于任意LCDLCD控制器和控制器和处理器下任何尺寸的真实显示或虚拟显示。处理器下任何尺寸的真实显示或虚拟显示。4、C/GUI 分析与移植分析与移植光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容 具体移植时首先在具体移植时首先在ADS1.2ADS1.2开发环境下添加开发环境下添加C/GUI 的源代码。为了完成的源代码。为了完成C/GUI移植,移植,要修改其源代码中的

41、几个文件,即要修改其源代码中的几个文件,即LCDConfig.h, GUIConfig.h 和和LCDDriver.c LCDConfig.h:包含:包含#define定义的具体所用定义的具体所用LCD 相关的配置信息,如显示的水平分辨率相关的配置信息,如显示的水平分辨率、垂直分辨率、每像素位数等。、垂直分辨率、每像素位数等。#define LCD _X SIZE (320) /LCD 显示的水平分辨率显示的水平分辨率#define LCD _Y SIZE (240) /LCD 显示的垂直分辨率显示的垂直分辨率#define LCD _BITSPERPIXEL (16) /1个像素用个像素用1

42、6位表示位表示#define LCD _BUSWIDTH (16) /总线的位宽总线的位宽#define LCD _CONTROLLER (1375) /控制器型号控制器型号#define LCD _FIXEDPALETTE (565) /调色板模式调色板模式光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容 GUIConfig.h主要对一些高级选项进行控制和定义。其中定义了对操作系统的有关配主要对一些高级选项进行控制和定义。其中定义了对操作系统的有关配置、动态内存空间、默认字体以及是否支持触摸屏、窗口管理和存储设备等选项。置、动态内存空间、默认字体以及是否支持

43、触摸屏、窗口管理和存储设备等选项。#define GUI_OS (1) /支持多任务操作系统支持多任务操作系统#define UI_WINSUPPORT (1) /使用窗口管理器使用窗口管理器#define GUI_SUPPORT_UNICODE (1) /支持支持UNICODE在在LCDDriver.c中需要编写中需要编写C/GUI和和LCD 的硬件接口函数。如:的硬件接口函数。如:void LCD_Init(void) /初始化初始化void Lcd_EnvidOnOff(intonoff) /LCD 视频和控制信号输出或者停止视频和控制信号输出或者停止void WriteLcdMems(

44、U32off ,U16c )/LCD 上的显示函数上的显示函数 到这里到这里C/GUI的移植基本完成,在操作系统的移植基本完成,在操作系统C/OS-中就可以使用中就可以使用C/GUI了。当然了。当然这里只提供了移植的关键部分,更多更完整的移植还需要做不少的工作。在移植好这里只提供了移植的关键部分,更多更完整的移植还需要做不少的工作。在移植好的的C/OS-和和C/GUI上建立应用程序,编译生成上建立应用程序,编译生成system.bin文件,通过文件,通过JTAG 在线调试在线调试,成功后通过,成功后通过USB 口直接下载到口直接下载到Nand Flash,程序就可以在硬件平台上正常运行了。,程

45、序就可以在硬件平台上正常运行了。光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容(1 1)LwIPLwIP概述概述 LwIPLwIP(light weight IPlight weight IP)是瑞士计算机科学院的)是瑞士计算机科学院的Adam Adam DunkelsDunkels等开发的一套用于等开发的一套用于嵌入式系统的开放源代码嵌入式系统的开放源代码TCP/IPTCP/IP协议栈。协议栈。LwIPLwIP既可以移植到操作系统上,又可以在无既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。操作系统的情况下独立运行。LwIPLwIP实现的重点是

46、在保持实现的重点是在保持TCP/IPTCP/IP协议主要功能的基础上协议主要功能的基础上减少对减少对RAMRAM的占用,一般它只需要几十的占用,一般它只需要几十K K的的RAMRAM和和40K40K左右的左右的ROMROM就可以运行,这使就可以运行,这使LwIPLwIP适适合在低端嵌入式系统中使用。合在低端嵌入式系统中使用。LwIPLwIP具有如下特性:具有如下特性: 支持多网络接口下的支持多网络接口下的IPIP转发。转发。 支持支持ICMPICMP协议;协议; 包括实验性扩展的包括实验性扩展的UDP(UDP(用户数据报协议用户数据报协议) ); 包括阻塞控制,包括阻塞控制,RTTRTT估算和

47、快速恢复和快速转发的估算和快速恢复和快速转发的TCPTCP; 提供专门的内部回调接口提供专门的内部回调接口(RAW API(RAW API)用于提高应用程序性能;)用于提高应用程序性能; 可选择的可选择的BerkeleyBerkeley接口接口APIAPI(多线程情况下);(多线程情况下); 在最新的版本中支持在最新的版本中支持PPPPPP; 新版本中增加的新版本中增加的IP fragmentIP fragment的支持;的支持; 支持支持DHCPDHCP协议,动态分配协议,动态分配IPIP地址。地址。5、LwIP分析与移植分析与移植光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与

48、方法-关键内容关键内容(2 2)LwIPLwIP移植移植( (非常具有挑战性的工作非常具有挑战性的工作) ) CPU或编译器相关的部分或编译器相关的部分 LwIP中有一些与中有一些与CUP或编译器相关的定义,如数据长度,大小端等。这应该与用或编译器相关的定义,如数据长度,大小端等。这应该与用户实现户实现C/OS-II时定义的数据长度等参数是一致的。此外还有一点,一般情况下时定义的数据长度等参数是一致的。此外还有一点,一般情况下C语言语言的结构体是的结构体是4字节强制对齐的,但是在处理数据包的时候,字节强制对齐的,但是在处理数据包的时候,LwIP需要按字节来读取,不需要按字节来读取,不希望强制对

49、齐。这样,就一定要在定义结构体的时候使用希望强制对齐。这样,就一定要在定义结构体的时候使用_pakced关键字,让编译器放关键字,让编译器放弃结构体的对齐。所以在移植的时候我们要根据自己的编译器添加弃结构体的对齐。所以在移植的时候我们要根据自己的编译器添加_packed关键字。最关键字。最后还需要我们实现一些特定的函数,比如数据高低字节交换后还需要我们实现一些特定的函数,比如数据高低字节交换htons()、ntohs()等,实现等,实现主机字序和网络字序之间的转换。主机字序和网络字序之间的转换。 操作系统仿真层操作系统仿真层 LwIP为了适应不同的操作系统,在代码中没有使用和某一个操作系统相关

50、的系统为了适应不同的操作系统,在代码中没有使用和某一个操作系统相关的系统调用和数据结构。而是在调用和数据结构。而是在LwIP和操作系统之间增加了一个操作系统仿真层和操作系统之间增加了一个操作系统仿真层(Opetation System Emulation Layer)。操作系统仿真层为操作系统服务。操作系统仿真层为操作系统服务(定时、任务同步、消息定时、任务同步、消息传递传递)提供了统一的接口。当移植提供了统一的接口。当移植LwIP到其它操作系统时,仅仅需要实现特定操作系统到其它操作系统时,仅仅需要实现特定操作系统的操作系统仿真层就可以了。的操作系统仿真层就可以了。光电技术与智能控制教育部重点

51、实验室 研究内容与方法研究内容与方法-关键内容关键内容 LwIP的定时机制的定时机制 TCP/IP协议栈很多时候都要用到定时,比如协议栈很多时候都要用到定时,比如ARP高速缓存表的维护,高速缓存表的维护,ARP求返回求返回响应的等待,响应的等待,IP分片的组装,分片的组装,TCP连接中的等待确认以及超时重传等需要用到定时。定连接中的等待确认以及超时重传等需要用到定时。定时的实现是时的实现是TCP/IP协议栈中一个重要的部分。协议栈中一个重要的部分。LwIP为了少对操作系统的依赖,内部实为了少对操作系统的依赖,内部实现了事件的定时机制现了事件的定时机制。 LwIP的网络接口的网络接口 在在LwI

52、P中可以有多个网络接中可以有多个网络接口,每个网络接口都对应了一个口,每个网络接口都对应了一个netif结构,包含了相结构,包含了相应网络接口的属性、收发函数。应网络接口的属性、收发函数。LwIP调用了调用了netif的方法的方法netifinput()及及netif output()进行以太网进行以太网packet的收、发等操作。在驱动中主要完成的就是实现网络接口的收、发等操作。在驱动中主要完成的就是实现网络接口的收、发、初始化以及中断处理函数。驱动的收、发、初始化以及中断处理函数。驱动程序工作在程序工作在IP协议模型的网络接口层,它提协议模型的网络接口层,它提供给上层供给上层(IP层层)的

53、接口函数如下的接口函数如下:光电技术与智能控制教育部重点实验室 研究内容与方法研究内容与方法-关键内容关键内容网络初始化函数网络初始化函数:ethernetif_init()网络接收函数网络接收函数:ethernetif_input()。作为一个任务,从网络接口接收以太网数据报并把。作为一个任务,从网络接口接收以太网数据报并把其中的其中的IP报文向报文向IP层发送,在中断方式下由网络层发送,在中断方式下由网络ISR触发该任务执行触发该任务执行。网络发送函数网络发送函数:ethernetif_output()。给。给IP层传过来的层传过来的IP报文加上以太网帧头并发送报文加上以太网帧头并发送。网

54、络中断处理函数网络中断处理函数ISR:ethernetif_isr(void)。以上函数都可以分为协议栈本身的处理和对网络接口硬件的操作两部分,底层的硬件以上函数都可以分为协议栈本身的处理和对网络接口硬件的操作两部分,底层的硬件操作是对上层屏蔽的操作是对上层屏蔽的。 网络芯片的选择与驱动程序开发网络芯片的选择与驱动程序开发 驱动程序的开发需要充分了解所选网络芯片的内部结构,工作原理,难度较大。驱动程序的开发需要充分了解所选网络芯片的内部结构,工作原理,难度较大。光电技术与智能控制教育部重点实验室 研究方法与内容研究方法与内容-参考文献参考文献1 田泽田泽.嵌入式系统开发与应用教程嵌入式系统开发

55、与应用教程M.北京:北京航空航天大学出版社,北京:北京航空航天大学出版社,2005.2 (美美)Jean J.Labrosse著,邵贝贝等译著,邵贝贝等译. 嵌入式实时操作系统嵌入式实时操作系统C/OS-II(第二版第二版)M.北京北京:北京航北京航 空航天大学出版社,空航天大学出版社,2003.3 任哲任哲. 嵌入式实时操作系统嵌入式实时操作系统C/OS-II原理及应用原理及应用M.北京北京:北京航空航天大学出版社北京航空航天大学出版社,2009.4 李平勇李平勇,游磊游磊. 嵌入式操作系统嵌入式操作系统C/OS-II的一种内存管理算法的一种内存管理算法J.微电子学与计算机微电子学与计算机

56、,2011,11(11):98-101.5 国庆波国庆波,郭兵郭兵,沈艳沈艳. Buddy算法的算法的C/OS-II高可靠内存管理方案高可靠内存管理方案J.技术纵横技术纵横 ,2011,2(7):30_336 王劲松王劲松.基于基于C/OS-II的嵌入式操作系统关键技术的研究与改进的嵌入式操作系统关键技术的研究与改进:硕士学位论文硕士学位论文.北京邮电大学北京邮电大学 电路与系统专业电路与系统专业,2008.7 成后发,杨春金成后发,杨春金. C/OS-II操作系统内核改进操作系统内核改进J. 通讯和计算机通讯和计算机, 2006, 19(6) : 52-55.8 邹航邹航, 李小文李小文. C/OS-II

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论