嵌入式系统课设报告_第1页
嵌入式系统课设报告_第2页
嵌入式系统课设报告_第3页
嵌入式系统课设报告_第4页
嵌入式系统课设报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统设 计 报 告题 目 uCOSII的内核移植 学 院 信息科学与工程学院 专 业 通信工程 学 号 姓 名 、题目:uCOSII的内核移植、课程设计(论文)工作内容一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力;2、掌握把UCOSII移植到ARM7处理器上的基本步骤及方法;3、掌握运用ADS编译器编写UCOSII多任务应用程序的方法。二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、查阅书籍资料,参考相关程序编写过,找出核心模块,在其基础上进行相应修改;3、和其他组同学讨论,对各自实验存在问题讨论并交流经验。三、课程设计预期效果

2、1、完成实验环境搭建;2、完成移植UCOSII到三星的S3C44B0X ARM7TDMI处理器;3、编写多任务应用程序:一个熄灭D7、D8灯的任务,一个点亮D7熄灭D8的任务,一个熄灭D7点亮D8的任务,三个任务轮流输出。沈阳理工大学-嵌入式系统设计目 录前 言.1第一章 系统设计 3第一节 课题目标及总体方案.3第二节 UCOSII操作系统的移植概述介.3一、UCOSII操作系统的简.3二、UCOSII的内核结构.4三、S3C44B0X简介5四、可移植性分析6第三节 ARM ADS 2.0 开发环境简介.6第二章 实验(测试)结果及讨论.8第一节 UCOSII移植及测试果.8 第二节 UCO

3、SSII多任务测试结.9第三章 结论12参考文献 13 - 13-前 言近些年来,数字化技术高速发展,嵌入式产品已经出现在我们生活中的方方面面。嵌入式操作系统又作为嵌入产品的基石,在产业发展过来中扮演了越来越不可替代的角色。而在嵌入式技术的快速发展过程中,实时多任务操作系统作为一种软件平台已逐步成为国际嵌入式系统的主流。目前世界上已经有一大批成熟的实时嵌入式操作系统,通常,对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前,实时操作系统很多,如 VxWorks , Windows CE , pSOS , QNX , LynxOS 等,这些操作系统都具有高可靠性、强实时

4、性等特点,但他们都是商业操作系统,价格昂贵,人们往往很难接受, UC/OS- 操作系统的出现是对这些商业操作系统的一个很大的冲击。本次课设主要研究了嵌入式操作系统中应用较为广泛的、源代码开放的UCOSII在基于目前应用非常广泛的ARM7处理器体系结构上的移植,并在此基础上实现了简单的多任务应用程序的操作。第一章 系统设计第一节 课题目标及总体方案本次课程设计要将uCOSII移植到三星的S3C44B0X ARM7TDMI处理器上,并且编写多任务应用程序:一个熄灭D7、D8灯的任务,一个点亮D7熄灭D8的任务,一个熄灭D7点亮D8的任务。通过图1可以了解到uCOSII任务状态转换图,在我们的设计方

5、案中,主要在“等待消息”上进行操纵。我们创建三个不同的任务,每个任务都有一个相对应的信号量,在系统开始运作之初,我们发送一个信号量,让其中一个任务接收到而开始工作,而在每个任务的最后会发送另外一个任务所相对应的信号量,当另一个任务接收到时就开始运行。由此通过三个信号量发送与接收的循环往复,而实现三个任务的循环执行。图1 UCOSII任务状态转换第二节 UCOSII操作系统的移植概述一、 UCOSII操作系统的简介C/OS- 是源码公开的实时操作系统,是一个自由操作系统。程序开发人员可以改写源代码,使之符合自己的要求,裁减掉不需要的部分,使操作系统变得小巧、灵活、并且能满足用户特定操作系统的需要

6、。为了提高系统的实时能力, C/OS- 可以将一个复杂的应用划分为多个相互独立的任务,并根据任务的重要性来分配优先级。任务的调度完全由 C/OS- 的实时内核完成,主要包括任务的状态管理、选择最高优先级的任务、执行任务和撤销任务等, C/OS- 内核还负责 CPU 时间分配, CPU 时间总是优先分配给中断事件,其次是任务队列中当前优先级最高的任务,不同任务间的通信可以通过 C/OS- 提供的信号量、邮箱、信息队列等机制完成,他的绝大部分代码是用 C 语言编写的,可移植性强,因此 1997 年以后,在国际上逐渐被广泛采用。二、UCOSII的内核结构S-II的移植,首先得来看看它的内核结构2,现

7、在介绍各个方框内的部分。从上往下看,可以看到应用程序在整个C/OS-II的构架的最上方。这点也很容易理解,因为C/OS-II作为一个很优秀的嵌入式操作系统,它最基础的功能就在底层驱动支持下屏蔽硬件的差异性,来为用户提供一个不需要考虑硬件的多任务平台。因此和其他的操作系统一样,用户程序都是建立在C/OS-II内核基础之上的。这样非常方便应用程序的编写。 中间层左边方框内的这些代码是与处理器及其他硬件都无关的代码。可以看到,这些代码占了整个C/OS-II的绝大部分。作为嵌入式操作系统,易于移植是一个优秀操作系统必不可少的特性之一。为了使C/OS-II易于移植,它的创始人花费了大量的心血,力求与硬件

8、相关的代码部分占整个系统内核的比例降到最小。 中间层右边方框里列出的实际上是两个头文件。OS_CFG.H是为了实现C/OS-II内核功能的裁剪。通过配置这个头文件,C/OS-II可以方便的实现裁剪,以适应不同的嵌入式系统。而INCLUDES.H则包含了所有的头文件,这样在应用程序包含头文件时只需将此头文件包括进去就能包含C/OS-II所有的头文件了。 最下面的一个方框列出的是与处理器相关的代码,这部分是移植的主角,重头戏都在这里面。在这一部分里,主要是一些和处理器相关的函数 或者宏定义。整个移植的代码都在这几个文件中,大概几百行。移植需要几小时到几星期不等,主要取决于对C/OS-II和目标处理

9、器的了解程度。三、S3C44B0X简介S3C44B0X是Samsung公司推出的一款高性能的16/32位的RISC处理器。S3C44B0X提供了丰富的内置部件,包括:8KB cache,内部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- 核心代码很小,程序开发人员要把他移植到自己的目标板

10、中只需做少量的工作。虽然 C/OS- 大部分源代码是用 C 语言写的,但是完成和处理器有关的代码时,还是用汇编语言来实现的。从资料可以知道,C/OS- 的移植的主要工作是修改与处理器相关部分的代码 ,他们集中在3个文件中,其中,OS_CPU.H包含与处理器相关的常量、宏和结构体的定义; OS_CPU_C.C和OS_CPU_ASM中定义了用于底层的任务切换,退出中断服务程序,在CPU级屏蔽中断、打开中断、对任务栈初始化以及时钟的中断服务程序的函数等,为了使应用程序运行于C/OS- 上,还要相应地修改应用中使用的硬件和设备驱动。第三节 ARM ADS 2.0 开发环境简介ADS全称是ARM Dev

11、eloper Suite,它是由ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件。在功能和易用性上比SDT都有提高,是一款功能强大又易于使用的开发工具。ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。ADS可以安装在多种Windows操作系统上,其包括了一系列的应用,并有相关的文档和实例的支持。ADS可以用来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。第二章 实验(测试)结果及讨论第一节 UCOSII移植及测试(一)移植过程:移植就是让一个实时内核可以在某个微处理器或微控制器上运行。uC/OS-II在ARM处理器上的移植,需要完成的工作包括:修改

12、三个和体系结构相关的文件。这三个文件是: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()中,通过调用任务堆栈初始化

13、函数OSTaskStkInit()来初始化任务的堆栈结构,初始完毕后,堆栈看起来就像刚发生过中断并将所有的寄存器内容保存到该任务堆栈中的情形一样。3) OS_CPU_A.s:文件中主要包括5个函数: OSStartHighRdy()负责启动最高优先级任务;OSIntCtxSw()负责中断中的任务切换;OSCtxSw()负责任务切换;OSCPUSaveSR()负责保存中断前的寄存器状态;OSCPURestoreSR()负责中断完成后,恢复中断前的状态。主体移植过程: 1).设置与处理器及编译器相关的代码OS_CPU.H;2).用C语言实现与处理器任务相关的函数OS_CPU_C.C; 3).处理器

14、相关部分汇编实现。(二)测试过程:做完移植工作以后,就要测试移植是否正确,这其实是移植过程的最后一步,应该首先不加任何用代码来测试移植好的 C/OS- ,即应该首先测试内核自身的运行状况,这样做的目的是如果有些部分未能正常工作,那就是移植本身的问题,而不是应用代码产生的问题,主要分为以下几个步骤来进行移植的测试:首先,必须了解处理器所使用的编译器系统,这个步骤取决于使用的编译器,在这期间是无代码的测试,其次,要验证 OSTaskStkInit ()和 OSStartHighRdy ()函数,在 OS_CFG.H 文件中设置 OS_TASK_STAT_EN 为 0 ,只让一个空闲任务 OS_Ta

15、skIdle ()运行,检查是否出错,然后需要验证任务级切换 OSCtxSw ()函数,在测试任务 TaskTest ()中加入 OSTimeDly ()函数, OSTimeDly ()函数接着调用 OS_Sched (), OS_Sched ()调用汇编语言编写的函数 OSCtxSw ()函数,如果是正确配置了 SWI , CPU 就会开始执行 OSCtxSw (),最后,需要验证 OSIntCtxSw ()和 OSTickISR()函数。当上述的这些测试步骤都成功后,可以尝试运行一些具体的任务,按照由简到繁的过程不断使测试变得复杂,来进一步验证内核的稳定性和系统性能。第二节 UCOSSII

16、多任务测试结果(一)ADS1.2下建立工程我们在ADS编译器中中进行了UCOSII系统移植并编写了应用程序后,得到如图4的目录,Application/INC目录下存放的是操作系统下的应用程序的头文件,Application/SRC目录下存放的是操作系统的应用程序;Startup44b0/INC目录下存放的是ARM的启动代码和CPU板初始化程序的头文件,Starup44b0/SRC目录下存放的是ARM的启动源代码文件44binit.s,库文件44blib.c,CPU板的初始化文件target.c,在这里我们没有串口初始化,主要是针对后面章节里有专门讲述如何填加串口驱动,如何利用串口收发的缘故。

17、在UCOSII/CPU目录下存放的是操作系统的移植文件,UCOSII/INC目录下存放的是和应用任务相关的头文件,UCOSII/SRC目录下存放的是UCOSII操作系统的源代码,它们是由Ucos_II.C文件嵌进来的。在UCOSII的正常运行之前,还必须进行硬件系统的初始化,这也就是需要文件夹Startup44b0的理由。图4(二)ADS1.2下仿真、调试紧接着我们在ADS1.2下进行仿真调试,首先要连接wigger调试电缆,然后,给实验箱上电,打开HJTAG程序,如图,自动连接实验箱(或点击第二个按钮detect target进行连接)。正确连接后出现图的界面。图图如不能正确连接请检查电源是

18、否打开和连线是否正确。当连上仿真器后,打开调试软件AXD Debugger,如图。点击File|load image 加载文件 .axf。图最后在实验箱上得到测试结果:一开始熄灭D7、D8灯,然后点亮D7熄灭D8的,最后熄灭D7点亮D8,并按此顺序循环执行。第三章 结 论1、 C/OS- 在 ARM7 上移植的通用方法,但针对不同的处理器还需要作适当的修改, RTOS 是当今嵌入式应用的热点,应用 RTOS ,可以提高产品的可靠性,降低研发周期,其中 C/OS- 具有很好的实时性和很小的代码量,占用空间少,执行效率高,移植方法相对简单,因此掌握 C/OS- 的移植方法是相当重要的。2、 uCOSII作

温馨提示

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

评论

0/150

提交评论