嵌入式系统课设报告.docx
- 文档编号:27256163
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:12
- 大小:181.52KB
嵌入式系统课设报告.docx
《嵌入式系统课设报告.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课设报告.docx(12页珍藏版)》请在冰豆网上搜索。
嵌入式系统课设报告
嵌入式系统
设计报告
题目uCOSII的内核移植
学院信息科学与工程学院
专业通信工程
学号
姓名
Ⅰ、题目:
uCOSII的内核移植
Ⅱ、课程设计(论文)工作内容
一、课程设计目标
1、培养综合运用知识和独立开展实践创新的能力;
2、掌握把UCOSII移植到ARM7处理器上的基本步骤及方法;
3、掌握运用ADS编译器编写UCOSII多任务应用程序的方法。
二、研究方法及手段应用
1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;
2、查阅书籍资料,参考相关程序编写过,找出核心模块,在其基础上进行相应修改;
3、和其他组同学讨论,对各自实验存在问题讨论并交流经验。
三、课程设计预期效果
1、完成实验环境搭建;
2、完成移植UCOSII到三星的S3C44B0XARM7TDMI处理器;
3、编写多任务应用程序:
一个熄灭D7、D8灯的任务,一个点亮D7熄灭D8的任务,一个熄灭D7点亮D8的任务,三个任务轮流输出。
目录
前言………………………………………………………………………………………………..1
第一章系统设计…………………………………………………………………………………3
第一节课题目标及总体方案…………………………………………………………………..3
第二节UCOSII操作系统的移植概述介……………………………………………………...3
一、UCOSII操作系统的简………………………………………………………………….3
二、UCOSII的内核结构…………………………………………………………………….4
三、S3C44B0X简介…………………………………………………………………………5
四、可移植性分析……………………………………………………………………………6
第三节ARMADS2.0开发环境简介…………………………………………………………..6
第二章实验(测试)结果及讨论……….………………………………………………………….8
第一节UCOSII移植及测试果………………………………………………………………...8
第二节UCOSSII多任务测试结.................................................................................................9
第三章结论………………………………………………………………………………………12
参考文献……………………………………………………………………………………13
前言
近些年来,数字化技术高速发展,嵌入式产品已经出现在我们生活中的方方面面。
嵌入式操作系统又作为嵌入产品的基石,在产业发展过来中扮演了越来越不可替代的角色。
而在嵌入式技术的快速发展过程中,实时多任务操作系统作为一种软件平台已逐步成为国际嵌入式系统的主流。
目前世界上已经有一大批成熟的实时嵌入式操作系统,通常,对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前,实时操作系统很多,如VxWorks,WindowsCE,pSOS,QNX,LynxOS等,这些操作系统都具有高可靠性、强实时性等特点,但他们都是商业操作系统,价格昂贵,人们往往很难接受,UC/OS-Ⅱ操作系统的出现是对这些商业操作系统的一个很大的冲击。
本次课设主要研究了嵌入式操作系统中应用较为广泛的、源代码开放的UCOSII在基于目前应用非常广泛的ARM7处理器体系结构上的移植,并在此基础上实现了简单的多任务应用程序的操作。
第一章系统设计
第一节课题目标及总体方案
本次课程设计要将uCOSII移植到三星的S3C44B0XARM7TDMI处理器上,并且编写多任务应用程序:
一个熄灭D7、D8灯的任务,一个点亮D7熄灭D8的任务,一个熄灭D7点亮D8的任务。
通过图1可以了解到uCOSII任务状态转换图,在我们的设计方案中,主要在“等待消息”上进行操纵。
我们创建三个不同的任务,每个任务都有一个相对应的信号量,在系统开始运作之初,我们发送一个信号量,让其中一个任务接收到而开始工作,而在每个任务的最后会发送另外一个任务所相对应的信号量,当另一个任务接收到时就开始运行。
由此通过三个信号量发送与接收的循环往复,而实现三个任务的循环执行。
图1UCOSII任务状态转换
第二节UCOSII操作系统的移植概述
一、UCOSII操作系统的简介
μC/OS-Ⅱ是源码公开的实时操作系统,是一个自由操作系统。
程序开发人员可以改写源代码,使之符合自己的要求,裁减掉不需要的部分,使操作系统变得小巧、灵活、并且能满足用户特定操作系统的需要。
为了提高系统的实时能力,μC/OS-Ⅱ可以将一个复杂的应用划分为多个相互独立的任务,并根据任务的重要性来分配优先级。
任务的调度完全由μC/OS-Ⅱ的实时内核完成,主要包括任务的状态管理、选择最高优先级的任务、执行任务和撤销任务等,μC/OS-Ⅱ内核还负责CPU时间分配,CPU时间总是优先分配给中断事件,其次是任务队列中当前优先级最高的任务,不同任务间的通信可以通过μC/OS-Ⅱ提供的信号量、邮箱、信息队列等机制完成,他的绝大部分代码是用C语言编写的,可移植性强,因此1997年以后,在国际上逐渐被广泛采用。
二、UCOSII的内核结构
S-II的移植,首先得来看看它的内核结构[2],
现在介绍各个方框内的部分。
从上往下看,可以看到应用程序在整个μC/OS-II的构架的最上方。
这点也很容易理解,因为μC/OS-II作为一个很优秀的嵌入式操作系统,它最基础的功能就在底层驱动支持下屏蔽硬件的差异性,来为用户提供一个不需要考虑硬件的多任务平台。
因此和其他的操作系统一样,用户程序都是建立在μC/OS-II内核基础之上的。
这样非常方便应用程序的编写。
中间层左边方框内的这些代码是与处理器及其他硬件都无关的代码。
可以看到,这些代码占了整个μC/OS-II的绝大部分。
作为嵌入式操作系统,易于移植是一个优秀操作系统必不可少的特性之一。
为了使μC/OS-II易于移植,它的创始人花费了大量的心血,力求与硬件相关的代码部分占整个系统内核的比例降到最小。
中间层右边方框里列出的实际上是两个头文件。
OS_CFG.H是为了实现μC/OS-II内核功能的裁剪。
通过配置这个头文件,μC/OS-II可以方便的实现裁剪,以适应不同的嵌入式系统。
而INCLUDES.H则包含了所有的头文件,这样在应用程序包含头文件时只需将此头文件包括进去就能包含μC/OS-II所有的头文件了。
最下面的一个方框列出的是与处理器相关的代码,这部分是移植的主角,重头戏都在这里面。
在这一部分里,主要是一些和处理器相关的函数
或者宏定义。
整个移植的代码都在这几个文件中,大概几百行。
移植需要几小时到几星期不等,主要取决于对μC/OS-II和目标处理器的了解程度。
三、S3C44B0X简介
S3C44B0X是Samsung公司推出的一款高性能的16/32位的RISC处理器。
S3C44B0X提供了丰富的内置部件,包括:
8KBcache,内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,I/O端口,RTC,8通道10位ADC,IIC-BUS接口,IIS-BUS接口,同步SIO接口和PLL倍频器。
芯片支持ICE能,可直接通过芯片上的JTAG口与计算机通信,从而实现JTAG仿真功能和FLASH程序存储器的烧写。
图3基于S3C44B0X的嵌入式硬件平台
四、可移植性分析
μC/OS-Ⅱ核心代码很小,程序开发人员要把他移植到自己的目标板中只需做少量的工作。
虽然μC/OS-Ⅱ大部分源代码是用C语言写的,但是完成和处理器有关的代码时,还是用汇编语言来实现的。
从资料可以知道,μC/OS-Ⅱ的移植的主要工作是修改与处理器相关部分的代码,他们集中在3个文件中,其中,OS_CPU.H包含与处理器相关的常量、宏和结构体的定义;OS_CPU_C.C和OS_CPU_ASM中定义了用于底层的任务切换,退出中断服务程序,在CPU级屏蔽中断、打开中断、对任务栈初始化以及时钟的中断服务程序的函数等,为了使应用程序运行于μC/OS-Ⅱ上,还要相应地修改应用中使用的硬件和设备驱动。
第三节ARMADS2.0开发环境简介
ADS全称是ARMDeveloperSuite,它是由ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件。
在功能和易用性上比SDT都有提高,是一款功能强大又易于使用的开发工具。
ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。
ADS可以安装在多种Windows操作系统上,其包括了一系列的应用,并有相关的文档和实例的支持。
ADS可以用来开发、编译、调试采用包括C、C++和ARM汇编语言编写的程序。
第二章实验(测试)结果及讨论
第一节UCOSII移植及测试
(一)移植过程:
移植就是让一个实时内核可以在某个微处理器或微控制器上运行。
uC/OS-II在ARM处理器上的移植,需要完成的工作包括:
修改三个和体系结构相关的文件。
这三个文件是:
OS_CPU_C.c、OS_CPU.h、OS_CPU_A.s。
它们的作用是把μC/OS-II操作系统紧紧的附着在ARM处理器上,实现软件与硬件的协同。
1)OS_CPU.h:
a.把编译器类型数据重定义为UCOS-II内核所用的数据类型;
b.编写相应ADS或SDT编译器的开关中断的函数;
c.定义单个堆栈的数据宽度;
d.定义微处理器的堆栈的增长方向;
2)OS_CPU_C.c:
文件中主要包括10个函数,其中一个是任务堆栈初始化函数,其他九个为操作系统扩展的钩子函数。
在OSTaskCreate()和OSTaskCreateExt()中,通过调用任务堆栈初始化函数OSTaskStkInit()来初始化任务的堆栈结构,初始完毕后,堆栈看起来就像刚发生过中断并将所有的寄存器内容保存到该任务堆栈中的情形一样。
3)OS_CPU_A.s:
文件中主要包括5个函数:
OSStartHighRdy()负责启动最高优先级任务;OSIntCtxSw()负责中断中的任务切换;OSCtxSw()负责任务切换;OSCPUSaveSR()负责保存中断前的寄存器状态;OSCPURestoreSR()负责中断完成后,恢复中断前的状态。
主体移植过程:
1).设置与处理器及编译器相关的代码[OS_CPU.H];
2).用C语言实现与处理器任务相关的函数[OS_CPU_C.C];
3).处理器相关部分汇编实现。
(二)测试过程:
做完移植工作以后,就要测试移植是否正确,这其实是移植过程的最后一步,应该首先不加任何用代码来测试移植好的μC/OS-Ⅱ,即应该首先测试内核自身的运行状况,这样做的目的是如果有些部分未能正常工作,那就是移植本身的问题,而不是应用代码产生的问题,主要分为以下几个步骤来进行移植的测试:
首先,必须了解处理器所使用的编译器系统,这个步骤取决于使用的编译器,在这期间是无代码的测试,其次,要验证OSTaskStkInit()和OSStartHighRdy()函数,在OS_CFG.H文件中设置OS_TASK_STAT_EN为0,只让一个空闲任务OS_TaskIdle()运行,检查是否出错,然后需要验证任务级切换OSCtxSw()函数,在测试任务TaskTest()中加入OSTimeDly()函数,OSTimeDly()函数接着调用OS_Sched(),OS_Sched()调用汇编语言编写的函数OSCtxSw()函数,如果是正确配置了SWI,CPU就会开始执行OSCtxSw(),最后,需要验证OSIntCtxSw()和OSTickISR()函数。
当上述的这些测试步骤都成功后,可以尝试运行一些具体的任务,按照由简到繁的过程不断使测试变得复杂,来进一步验证内核的稳定性和系统性能。
第二节UCOSSII多任务测试结果
(一)ADS1.2下建立工程
我们在ADS编译器中中进行了UCOSII系统移植并编写了应用程序后,得到如图4的目录,Application/INC目录下存放的是操作系统下的应用程序的头文件,Application/SRC目录下存放的是操作系统的应用程序;Startup44b0/INC目录下存放的是ARM的启动代码和CPU板初始化程序的头文件,Starup44b0/SRC目录下存放的是ARM的启动源代码文件44binit.s,库文件44blib.c,CPU板的初始化文件target.c,在这里我们没有串口初始化,主要是针对后面章节里有专门讲述如何填加串口驱动,如何利用串口收发的缘故。
在UCOSII/CPU目录下存放的是操作系统的移植文件,UCOSII/INC目录下存放的是和应用任务相关的头文件,UCOSII/SRC目录下存放的是UCOSII操作系统的源代码,它们是由Ucos_II.C文件嵌进来的。
在UCOSII的正常运行之前,还必须进行硬件系统的初始化,这也就是需要文件夹Startup44b0的理由。
图4
(二)ADS1.2下仿真、调试
紧接着我们在ADS1.2下进行仿真调试,首先要连接wigger调试电缆,然后,给实验箱上电,打开H-JTAG程序,如图5,自动连接实验箱(或点击第二个按钮detecttarget进行连接)。
正确连接后出现图6的界面。
图5
图6
如不能正确连接请检查电源是否打开和连线是否正确。
当连上仿真器后,打开调试软件AXDDebugger,如图7。
点击File|loadimage加载文件.axf。
图7
最后在实验箱上得到测试结果:
一开始熄灭D7、D8灯,然后点亮D7熄灭D8的,最后熄灭D7点亮D8,并按此顺序循环执行。
第三章结论
1、μC/OS-Ⅱ在ARM7上移植的通用方法,但针对不同的处理器还需要作适当的修改,RTOS是当今嵌入式应用的热点,应用RTOS,可以提高产品的可靠性,降低研发周期,其中μC/OS-Ⅱ具有很好的实时性和很小的代码量,占用空间少,执行效率高,移植方法相对简单,因此掌握μC/OS-Ⅱ的移植方法是相当重要的。
2、uCOSII作为一个源代码公开的操作系统,在具体应用中稳定可靠,并且支持uIPTCP/IP协议栈、ucGUI等,可扩展性强,功能强大。
本系统采ARM9+uCOSII开发设计,具有精度高、运行稳定、实时性好、抗干扰能力强、性价比高的特点,可以在各种工业场合中广泛应用,达到了设计的初衷。
3、uCOSII作为一个嵌入式实时操作系统,自1992年以来,因其源代码的完全公开和优越性能,已为众多的爱好者和开发人员所了解并得到了广泛应用。
uCOSII是一个占先式内核,执行时间可确定(即函数的调用与服务的时间是可知的,不依赖于应用程序的大小),目前最多支持64个任务(8个为系统保留),总是执行处于就绪态的优先级最高的任务。
目前,51系列及其扩展型单片机仍在单片机应用系统占较大比重,因而详细介绍uCOSII在AT89C51上的移植实现过程,解决移植过程中出现的问题,有很大的实用意义。
参考文献
[1]王勇,何立民.嵌入式系统原理与设计.杭州:
浙江大学大学出版社,2007.
[2]邵贝贝等译.嵌入式实时操作系统uCOSII(第2版).北京:
北京航空航天大学出版社,2003年5月.
[3]王田苗.嵌入式系统设计与实例开发[M].北京:
清华大学出版社,2003.1-10
[4]杨宗德.uCOSII标准教程.北京:
人民邮电出版社,2007.
[5]任哲.嵌入式实时操作系统uCOSII原理及应用(第2版).北京:
北京航空航天大学出版社,2005.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)