基于STM32的嵌入式操作系统程序设计及实现本科毕业论文(30页).doc
《基于STM32的嵌入式操作系统程序设计及实现本科毕业论文(30页).doc》由会员分享,可在线阅读,更多相关《基于STM32的嵌入式操作系统程序设计及实现本科毕业论文(30页).doc(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-基于STM32的嵌入式操作系统程序设计及实现本科毕业论文-第 22 页 本科毕业论文(设计)论文题目:基于STM32的嵌入式操作系统程序设计及实现 姓 名:郝宇学 号:093001020144班 级:01班年 级:2009级专 业:电子信息工程学 院:信息工程学院指导教师:丁光哲 讲师完成时间:2013年5月20日作者声明本毕业论文(设计)是在导师的指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。因本毕业论文(设计)引起的法律结果完全由本人承担。毕业论文(设计)成果归武昌工学院所有。
2、特此声明作者专业:电子信息工程作者学号:093001020144作者签名:年 月 日基于STM32的嵌入式操作系统程序设计及实现郝宇The Design and Implementation of embedded operating system program based on STM32Hao, Yu2013年 5月 20日摘 要随着科学技术不断的进步,工业生产越来越先进复杂,操作系统C/OS-II是高效、稳定、可靠、节能的系统,广泛应用安防,消费电子中。而基于Cortex-M3架构下的STM32是一款性价比优越新型微处理器,将C/OS-II移植到STM32上能够发挥其高效的性能,从而投
3、入社会生产,制造出很多有用又实惠的电子产品,为我们的生活带来便利。本文主要的研究内容是C/OS-II操作系统理论分析、移植方法、应用程序设计及调试仿真实现。首先,对C/OS-II的理论分析,研究其实际应用及系统结构;其次,分析STM32硬件平台及C/OS-II的移植需求;最后,在C/OS-II上开发LCD,LED,按键KEY等应用程序,并对多任务系统调试分析。主要研究结论如下:(1)C/OS-II操作系统主要分为任务管理、内存管理和时间管理三大部分,其间通信是通过消息队列和消邮箱。(2)C/OS-II移植主要在OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM三个文件中,涉及到数
4、据类型、堆栈、中断定义和任务切换等。(3)应用程序设计优先级分配要合理,硬件平台初始化模块化处理。关键词:嵌入式系统;C/OS-II;移植AbstractWith the progress of science and technology constantly, advanced industrial production to more complex, the operating system C/OS-II is efficient, stable, reliable, energy saving system, widely used in the security, and con
5、sumer electronics. And based on the STM32 architecture Cortex-M3 framework is a superior cost-effective new microprocessor, C/OS-II transplantation to STM32 can play its efficient performance, thus in social production and create a lot of useful and affordable electronic product, bring convenience t
6、o our lives. This article main research content is C/OS-II operating system theory analysis, method of transplantation, application design and debugging of the simulation implementation. First of all, the theoretical analysis of C/OS-II, research the actual application and system structure; Second,
7、analysis of STM32 hardware platform and the demand C/OS-II transplantation. Finally, on the C/OS-II development of LCD, LED, button KEY applications, and analysis of multitasking system debugging. Main research conclusion is as follows: (1) C/OS-II operating system consists of three major task manag
8、ement, memory management and time management, in which communication is through the message queue and email. (2) C/OS-II transplantation mainly in OS_CPU_C.C, OS_CPU_A.ASM file, OS_CPU.H, three involves the data type definition and task switching etc, stack, interrupt. (3)The application design to t
9、he allocation of priorities, initialize the modular processing hardware platform. Key words: embedded system; C/OS-II; transplant目 录1 概 述11.1 研究的目的及意义11.2 国内外研究状况综述11.3 研究的主要内容22 C/OS-II的理论介绍32.1 C/OS-II各模块的基本功能32.2 STM32上移植方法73 LCD屏程序设计及调试123.1 工具概述123.2 硬件结构133.3 C程序设计153.4 调试16结 语18主要参考文献19附 录20附
10、录1 主程序代码201 概 述1.1 研究的目的及意义C/OS-II是由美国工程师Jean Labrosse编写的嵌入式多任务的实时操作系统,包括实时内核、任务管理、时钟管理、任务间通信同步(信号量、邮箱、消息队列)和内存管理。除了有上面的优点外,C/OS-II它具有别的操作系统没有的优点,具体如下:(1)源代码开放:C/OS-II的源代码可以免费获取,且标有清晰的注释,可读性好。(2)可移植性好:C/OS-II的源代码90以上是用C语言编写的,可以很容易地把它移植到各类8位、16位和32位处理器上。(3)稳定性高:C/OS-II已得到FAA的标准认证,且目前已有上百个商业应用实例,其稳定性和
11、可靠性是经过实践验证的。因此,C/OS-II广泛的应用于控制系统中,如在衍射仪高压控制系统中使用C/OS-II操作系统是一种很好的选择。控制系统是一个复杂的系统,它需要多个系统协同工作。传统的系统开发我们往往使用前后台的方式,但是这种开发方式在任务较简单的开发中比较适用,对于任务比较复杂的系统往往力不从心。对于任务较多而且复杂的情况我们就要引入实时操作系统RTOS。RTOS体现了一种新的应用程序设计思想和开放的框架,用户在编写程序时,可以分别编写各个任务,不必同时将所有任务运行的各种可能情况记在心中,大大减小了程序编写的工作量,而且减小了出错的可能,保证最终程序具有高可靠性,从而降低程序的复杂
12、度和开发周期。由于控制系统功能较复杂,诸多的功能可以划分成许多不同的模块,模块之间既彼此联系又相对独立,可以当作不同的任务来进行处理。所以,使用实时操作系统,将不同的功能划分成不同的任务进行处理使得设计大大简化。1.2 国内外研究状况综述嵌入式系统是继IT网络技术之后,又一个新的技术发展方向。中国单片机二十年论坛总结出,我国嵌入式起步较早,但总体来说发展缓慢,和国外的开发应用具有很大的差距,造成这一局面的原因是多方面的。在国内嵌入式系统开发方面,多是一些低层次的应用,停留在以前老的技术基础之上。例如,经典51系列单片机在上世纪我国的工业信息化改造过程中发挥了重要的作用,渗透到生产生活的各个方面
13、。与此同时在大学电类相关的工科单片机教学中,依然是经典的51,微机原理依然是8086/88,这显然体现不了最新的技术特征,造成了大学教育与实际社会需要的脱节。国外的大部分高校和国内的极少数大学相继开设嵌入式微处理器设计等相关的前沿性的课程,可见基于STM32技术将是未来微控制开发的主流方向。由于C/OS-II系统具有体积小、性能强、功耗低、可靠性高以及面向行业应用的突出特征,目前已经被广泛的应用于军事国防、消费电子、网络通信、工业控制等各个领域。今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,
14、未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的计算能力已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女娲计划”一度闹得沸沸扬扬,机顶盒、信息加电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内,虽然嵌
15、入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。由此可见,嵌入式系统技术发展的空间真是无比广大。1.3 研究的主要内容本文是在基于32位的ARM微处理器STM32和嵌入式实时操作系统C/OS-II上进行嵌入式操作系统的移植和功能实现。通过将嵌入式实时操作系统C/OS-II移植到STM32微处理器上,并对其进行软件功能的扩展和硬件扩展,实现了一个基本完整的嵌入式实时操作系统。建立了基于嵌入式ARM处理器的应用软件体系;将C/OS-II移植到STM32,建立了嵌入式操作系统研究及C/OS-II下的开发环境体系。包括C/OS-II系统配置、C/OS-II下的移
16、植、启动、测试和功能实现等。完成了基于STM32的C/OS-II的应用设计。本文主要分为4章,章节安排如下: (1)绪论。主要介绍了开题的背景和研究意义,以及C/OS-II的国内外研究现状。(2)C/OS-II的理论介绍。主要介绍C/OS-II各模块的基本功能和在STM32上移植方法。(3)硬件平台介绍及LCD屏程序设计及调试。多任务的建立并实现基本功能。(4)结语。主要介绍本论文中的优点和不足之处。2 C/OS-II的理论介绍2.1 C/OS-II各模块的基本功能2.1.1 C/OS-II内核结构应用软件(用户代码)C/OS-II内核文件(与处理器类型无关的代码)OS_CORE.C OS_T
17、ASK.COS_FLAG.C OS_TIME.COS_MBOX.C COS-II.COS_MEM.C COS-II.HOS_MUTEX.C OS_SEM.COS_Q.CC/OS-II 配置文件(与应用程序有关)OS_CFG.HINCLUDES.H移植C/OS-II(与处理器类型有关的代码)OS_CPU.H OS_CPU_C.C OS_CPU_A.ASM CPU 定时器图2.1 C/OS-II内核结构软件硬件(1)C/OS-II是以源代码形式提供的实时操作系统内核,其包含的文件结构如图2.1所示:基于C/OS-II操作系统进行应用时,设计时的主要任务是将系统合理划分成多个任务,并由RTOS进行调
18、度,任务之间使用C/OS-II提供的系统服务进行通信,以配合实现应用系统的功能。与前后台系统一样,基于C/OS-II的多任务系统也有一个main主函数,main函数由编译器所带的C启动程序调用。在main主函数中主要实现C/OS-II的初始化OSInit()、任务创建、一些任务通信方法的创建、C/OS-II的多任务启动OSStart()等常规操作。另外,还有一些应用程序相关的初始化操作,例如:硬件初始化、数据结构初始化等。 (2)OSInit()初始化C/OS-II所有的变量和数据结构,并建立空闲任务OS_TaskIdle(),这个任务总是处于就绪态。2.1.2 C/OS-II内核体系结构图C
19、/OS-II内核主要对用户任务进行调度和管理,并为任务间共享资源提供服务。包含的模块有任务管理、任务调度、任务间通信、时间管理、内核初始化等。C/OS-II内核体系结构如图2.2所示:图2.2 内核结构图2.1.3 任务状态及其转换关系在多任务系统中,任务是设计者实现应用系统的基本形式,也是C/OS-II系统进行调度的基本单元。任务可以是一个无限的循环,也可以在一次执行后被操作系统删除。任务函数和任何C函数一样,具有一个返回类型和一个参数,但是它决不返回。任务控制块(TCB)是一个数据结构OS_TCB,一旦一个任务创建,就有一个和它关联的TCB被赋值。当任务的CPU使用权被剥夺时,它用来保存该
20、任务的状态。这样,当任务重新获得CPU使用权时,可以从TCB中获取任务切换前的信息,准确的继续运行。2.1.4 任务调度器 C/OS-II总是运行进入就绪态的优先级最高的任务。任务调度器的功能是:在就绪表中查找最高优先级的任务,然后进行必要的任务切换,运行该任务。C/OS-II的任务调度有两种情况:任务级的任务调度由OS_Sched()完成;中断级的任务调度由OSIntExt()完成。这两种任务调度情况调用的任务切换函数不同:任务级的任务调度OS_Sched()调用了任务切换函数 OS_TASK_SW(),而中断级的调度OSIntExt()调用了任务切换函数OSIntCtxSw()。任务级的任
21、务调度是由于有更高优先级的任务进入就绪态,当前的任务的CPU使用权被剥夺,发生了任务到任务的切换;中断级的调度是指当前运行的任务被中断打断,由于ISR运行过程中有更高优先级的任务被激活进入就绪态。而中断返回前ISR调用OSIntExt()函数,该函数查找就绪表发现有必要进行任务切换,从而被中断的任务进入等待状态,运行被激活的高优先级的任务。(1)任务切换任务切换有两种:OS_TASK_SW()和OSIntCtxSw()。任务级的任务切换OS_TASK_SW()是宏调用,通过软中断指令来实现CPU寄存器内容切换。例如:#define OS_TASK_SW() asm(“int #32”)。任务级
22、的任务切换过程:保存当前运行的任务的CPU寄存器值到该任务的堆栈。如:堆栈指针,程序计数器,状态寄存器等。将要运行的高优先级的任务的寄存器值从堆栈恢复到CPU寄存器。进行TCB的切换,并运行任务。中断级的任务切换OSIntCtxSw()是在OSIntExt()中调用的,我们一般在用户ISR中调用OSIntExt()以实现中断返回前的任务调度。由于ISR已经将CPU寄存器的值存入被中断的任务的堆栈中,所以OSIntCtxSw()的实现和OS_TASK_SW()不一样,具体参见移植文档。(2)就绪表每个就绪的任务都放在就绪表中,就绪表有两个变量:OSRdyGrp和OSRdyTbl。OSRdyGrp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 嵌入式 操作系统 程序设计 实现 本科毕业 论文 30
限制150内