基于S3C2440平台的μCOS实时操作系统的移植.docx
《基于S3C2440平台的μCOS实时操作系统的移植.docx》由会员分享,可在线阅读,更多相关《基于S3C2440平台的μCOS实时操作系统的移植.docx(49页珍藏版)》请在冰豆网上搜索。
基于S3C2440平台的μCOS实时操作系统的移植
摘要
μC/OS-II操作系统是专门为计算机的嵌入式应用设计的,μC/OS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
因而广泛应用于各种嵌入式控制系统中。
本设计论文阐述了μC/OS-II操作系统在S3C2440硬件平台上移植的实现方法,分析了其基本原理,给出了实现过程。
随着ARM技术的广泛应用,建立基于ARM构架的嵌入式操作系统已成为当前的研究热点。
本课题的研究内容就是将μC/OS-II移植到S3C2440平台。
本设计研究的关键在于如何改写μC/OS-II操作系统的低层移植代码,改写的主要文件包括包括2个头文件,用来配置事件控制块的数目以及是否包含消息管理相关代码.而与处理器相关的移植代码部分则是进行移植过程中需要更改的部分,包括1个头文件OSCPU.H,1个汇编文件OS_CPU_A.S和1个C代码文件.实际上将μC/OS-II移植到ARM处理器上,需要完成的工作主要是以下三个与体系结构相关的文件:
OS_CPU.H,OS_CPU.C以及OS_CPU_A.S。
本设计在ADS1.2编程环境中编译μC/OS-II操作系统在S3C2440硬件平台上运行成功。
最后编写了多线程测试程序进行测试。
关键词:
μC/OS-II;S3C2440;ADS1.2;系统移植;多线程
ABSTRACT
μC/OS-IIoperatingsystemisdesignedspecificallyforembeddedcomputerapplicationsdesign,μC/OS-IIhastheimplementationofhighefficiency,smallfootprint,real-timeperformanceandscalability,strong.Thuswidelyusedinavarietyofembeddedcontrolsystems.ThisdesignintroducesS3C2440hardwareplatformtransplantμC/OS-IIoperatingsystemimplementations,analysisofitsbasicprinciples,giventherealizationoftheprocess.
WiththewideapplicationofARMtechnology,theestablishmentoftheARMarchitecture-basedembeddedoperatingsystemhasbecomeahotspotofthecurrentstudy.ThistopicistheuseoftransplantationtechnologyuC/OS-IIportedtoARMsystem.UC/OS-IIportedtoARMsystemcanbecombinedwiththeadvantagesofboth.ThekeytothedesignofthestudyistorewritetheμC/OS-IIoperatingsystemcode,includingrewritingthemainfileincluding2headerfilesusedtoconfigurethenumberofeventcontrolblockandwhetheritcontainsthemessagemanagementcode.Associatedwiththeprocessorthetheportingcodepartneedtochangeinthetransplantprocess,includingaheaderfileOSCPU.HoftheassemblyfileOS_CPU_A.SandaCcodefile.actuallyuC/OS-IIportedtoARMprocessingontheneedtocompletetheworkisthethethreearchitecturefile:
OS_CPU.H,OS_CPU.C,aswellasOS_CPU_A.S.
ThisdesignbasedonADS1.2programmingenvironmentbasedonthebasicprinciplesofμC/OS-IIoperatingsystem,thedesignS3C2440hardwareplatformsuccessfultransplant,thelastofthetransplantsystemandplatformtowriteamulti-threadedtestprogramfortesting.
Keywords:
μC/OS-II;S3C2440;ADS1.2;systemtransplant;Multithreading
目录
1引言1
2概述3
2.1基于mini2440开发板μCOS-II移植概述3
2.2本设计方案思路3
2.3研发方向和技术关键4
2.4主要技术指标4
3总体设计5
3.1ARM处理器的介绍5
3.2S3C2440处理器结构5
3.3S3C2440的中断处理6
3.3.1S3C2440中断流程分析6
3.3.2S3C2440中断优先级7
3.3.3S3C2440中断寄存器8
3.4Mini2440开发板硬件平台8
3.4.1Mini2440LED硬件电路9
3.4.2Mini2440蜂鸣器硬件电路10
3.4.3Mini2440串口硬件电路10
3.5Mini2440开发板启动过程的分析11
4硬件设计13
4.1μCOS-II特点13
4.2μCOS-II内核架构14
4.3μCOS-II任务调度15
4.4μCOS-II工作流程16
4.5ADS1.2介绍17
5软件设计22
5.1移植相关预备知识22
5.2移植第一步:
获取源码,建立工程23
5.3移植第二步:
修改与处理器相关的代码24
5.3.1OS_CPU.H的修改24
5.3.2OS_CPU_C.C的修改25
5.3.3OS_CPU_A.S的修改26
5.4移植第三步:
修改与处理器无关的代码30
5.5移植第四步:
修改main.c30
6仿真和测试32
6.1编写多线程测试程序32
6.2测试结果32
结论33
致谢34
参考文献35
1引言
随着电子信息技术的发展,嵌入式系统成为了最重要的IT技术产业之一。
无论在工业上,还是在日常生活中,许多电器设备上都有嵌入式系统的应用,这使设备具有高自动化性能和智能性。
可以说嵌入式系统的应用为提高人们的生活质量做出了很大的贡献。
再者嵌入式系统开发的核心技术之一就是嵌入式操作系统。
因此研究基于ARM处理器平台的嵌入式操作系统的移植有着相当重要的意义。
1.国内外嵌入式操作系统研究现状
嵌入式系统的广泛应用,使得各大软件公司开发出各具特色的操作系统。
也有一些组织和个人开发了免费的,源代码开放的操作系统。
现在常见的国外开发的有风河公司的VxWorks操作系统;微软公司的WindowsCE操作系统;开源的Linux操作系统和μC/OS-II操作系统。
国内的开发则有中科院的EEOS,凯思集团的HOPENOS等。
嵌入式操作系统提供三项功能来辅助程序员:
1.内存管理;2.多任务管理;3.外围设备管理。
以上的嵌入式操作系统主要特点有:
1.可定制性,操作系统需要提供可裁剪和添加的内核和其他功能,让用户自行配置。
2.可移植性,也是本课题的重要研究对象,由于嵌入式的处理器多种多样,为使操作系统支持尽可能多的微处理器,就必须从硬件支持和应用程序接口两方面来实现。
3.实时性,如果设计的操作系统不具备实时性就无法再具有实时性的嵌入式环境中运行。
4.低资源占有性,处理器配置资源少决定操作系统也要减少资源占有率。
3.国内外嵌入式系统发展趋势
嵌入式系统是桌面计算机的微型化,它的特点决定了嵌入式操作系统的与众不同,在设计操作系统之初就要考虑本身的移植性,使其跨平台运行。
嵌入式系统缺乏应用的高效性,网络连接功能较差,对应用程序开发支持较弱,因此,需要面向应用的,专用的新一代嵌入式操作系统(例如,ASOS)。
4.选题依据和意义
本次毕业设计的题目为“基于S3C2440平台的μCOS实时操作系统的移植”,涉及到μCOS实时操作系统的概念,并采用Samsung公司的S3C2440为微处理器。
μC/OS-II是由JeanJ.Labrosse于1992年编写的一个嵌入式多任务实时操作系统。
μC/OS系统的应用面非常广泛,如照相机,医疗器械,音响设备,自动提款机,工业机器人等。
μC/OS不但提供了完整的嵌入式实时内核源代码,而且进行了详尽的解释,绝大部分是用C语言编写的,可移植性很强,经过简单编译,就可在目标板上运行了。
同时μC/OS还具有可固化,可剪裁,可剥夺性,多任务,可确定性,任务栈,系统服务,中断管理,稳定性与可靠性的特点。
相比较上面提及的各种嵌入式操作系统,μC/OS具有较低成本,易控制,规模小,性能高,有着相当好的发展前景。
2概述
2.1基于mini2440开发板μCOS-II移植概述
本设计是基于μCOS-II开放源码在mini2440开发板上的移植,μCOS-II是源码公开的实时操作系统,是一个自由操作系统。
我们可以改写源代码,使之符合自己的要求,裁减掉不需要的部分,使操作系统变得小巧、灵活、并且能满足用户特定操作系统的需要。
为了提高系统的实时能力,μCOS-II可以将一个复杂的应用划分为多个相互独立的任务,并根据任务的重要性来分配优先级。
任务的调度完全由μCOS-II的实时内核完成,主要包括任务的状态管理、选择最高优先级的任务、执行任务和撤销任务等,μCOS-II内核还负责CPU时间分配,CPU时间总是优先分配给中断事件,其次是任务队列中当前优先级最高的任务,不同任务间的通信可以通过μCOS-II提供的信号量、邮箱、信息队列等机制完成,他的绝大部分代码是用C语言编写的,可移植性强,因此我们可以方便在自己所需要的平台进行移植并运行相应的任务。
本设计采用的核心板采用的是广州友善之臂计算机科技有限公司生产的mini2440开发板。
mini2440开发板是一款ARM9开发板,它以低价实用、性价比高等特点著称,得到了市场的高度认可。
mini2440的微处理器采用的是S3C2440微处理器,而且其CPU电源管理芯片与复位芯片更加专业与稳定,这使得该系统更加稳定。
PCB采用四层板设计布线专业,信号完整清晰,生产时使用机器贴片,进行批量生产。
mini2440开发板适用于嵌入式Linux和WinCE操作系统的学习与开发。
2.2本设计方案思路
本设计以实现μCOS-II移植到S3C2440开发板上稳定运行为目的,所以学习和了解S3C2440开发板的芯片主要架构和硬件外设以及开发板的启动流程,并且还要深入学习μCOS-II操作系统的任务管理,时钟中断管理为主要设计内容。
最后通过设计一个多线程程序对我们移植到开发板的μCOS-II系统进行检测。
具体思路如下:
(1)学习S3C2440芯片的体系架构,包括对S3C2440芯片中断的理解;
(2)对S3C2440芯片(mini2440开发板)的启动流程进行分析;
(3)深入学习μCOS-II操作系统,熟悉μCOS-II操作系统的任务管理,任务调度,时钟和多任务的编程;
(4)学习和使用编程开发软件ADS1.2;
(5)进行移植处理;
(6)编程多任务程序,对移植后的mini2440平台进行测试;
(7)总结体会,完成报告.
2.3研发方向和技术关键
(1)研究S3C2440芯片的体系架构;
(2)对μCOS-II操作系统的学习和运用;
(3)对ADS1.2的运用;
(4)设置与处理器及编译器相关的代码[OS_CPU.H];
(5)用C语言实现与处理器任务相关的函数[OS_CPU_C.C];
(6)处理器相关部分汇编实现[OS_CPU_A.S];
(7)多线程测试程序的编写;
2.4主要技术指标
(1)系统能否成功移植到mini2440的平台并运行稳定
(2)对于多线程测试程序,系统能否稳定的完成多任务之间的调度
3硬件平台的搭建
本设计所涉及的硬件平台为基于ARM公司设计的S3C2440为核心芯片mini2440的嵌入式开发板,具体介绍如下。
3.1ARM处理器的介绍
ARM是一个公司名称,ARM公司是全球领先的16/32位RISC微处理器知识产权设计供应商。
ARM公司通过转让高性能、低成本、低功耗的RISC微处理器、外围和系统芯片设计技术给合作伙伴,使他们能用这些技术来生产各具特色的芯片。
ARM已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。
ARM处理器有三大特点:
小体积、低功耗、低成本而高性能;16/32位双指令集。
ARM处理器主要的系列产品:
ARM7、ARM9、ARM9E、ARM10和SecurCore。
其中ARM7是低功耗的32位核,最适合应用于对价位和功耗敏感的产品,它又分为应用于实时环境的ARM7TDMI,ARM7TDMI-S,以及适用于开放平台的ARM720T和适用于DSP运算及支持Java的ARM7EJ等。
3.2S3C2440处理器结构
S3C2440是三星公司开发的一款基于ARM920T内核和0.18umCMOS工艺的16/32位RISC微处理器,适用于低成本、低功耗、高性能的手持设备或其它电子产品。
S3C2440A的杰出的特点是其核心处理器(CPU),是一个由AdvancedRISCMachines有限公司设计的16/32位ARM920T的RISC处理器。
ARM920T实现了MMU、AMBA、BUS和Harvard高速缓冲体系结构。
这一结构具有独立的16KB指令Cache和16KB数据Cache。
每个都是由具有8字长的行组成。
通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额外的组件。
S3C2440A集成了以下片上功能:
S3C2440内核电压为1.8V,3.3V存储电压,3.3VI/O电压。
包括16KB的I-Cache(指令高速缓存)、16KB的D-Cache(数据高速缓存)和MMU(存储管理单元)。
一路外部的存储控制器(SDRAM控制器和片选逻辑)。
一路LCD控制器(最高支持4K色的STN和16M色的TFT),包括一个LCDDMA。
4个带外部请求管脚的DMA。
3个UART、2个SPI。
1个IIC-BUS控制器、1个IIS-BUS控制器。
SD主机接口,兼容Multi-MediaCardProtocolV2.11。
2端口USB主设备接口、1端口USB从设备接口(V1.1)。
4个PWM时钟和1个内部时钟。
内部自带看门狗时钟。
117个GPIO、24个外部中断源。
其中功率控制:
Normal,Slow,Idle,Power-off四种模式。
8路10-bitADC和触摸屏接口。
带ALARM功能的RTC。
S3C2440带PLL的片上时钟发生器。
一路NANDFlash控制器,支持从NANDflash启动。
S3C2440的整机架构如下图所示:
图3-1S3C2440整机架构图
3.3S3C2440的中断处理
S3C2440中的中断控制器接受来自60个中断源的请求。
提供这些中断源的是内部外设,如DMA控制器、UART、IIC等等。
由于在μCOS-II系统移植到开发板并运行多线程测试程序的过程中涉及到S3C2440的中断处理,故将S3C2440的中断作为单独一节予以介绍。
3.3.1S3C2440中断流程分析
在S3C2440处理器中,有多种IRQ中断。
但无论哪种IRQ中断发生后,都将先跳到固定的地址,执行IRQ_Handler()函数进行现场保护,然后跳到中断处理函数进行相应的处理,中断产生的流程如下图所示:
FIQ
IRQ
图3-2S3C2440中断流程图
3.3.2S3C2440中断优先级
32个一级中断请求优先级逻辑通过7个仲裁器的选择,最终生成一个优先级最高的中断源,这7个仲裁器包括:
6个一级仲裁器和1个二级仲裁器。
先由一级仲裁器从各个分组中各选择一个优先级最高的中断,形成6个中断源,再通过二级仲裁器从这6个中断源中选择一个优先级最高的中断源进行触发,其仲裁过程如下图所示:
图3-2S3C2440中断优先级
3.3.3S3C2440中断寄存器
中断控制由以下几个寄存器来实现:
外部中断未决寄存器(EINTPEND)。
外部中断掩码寄存器(EINTMASK)。
内部子中断未决寄存器(SUBSRCPND)。
内部子中断掩码寄存器(SUBINTMSK)。
中断源未决寄存器(SRCPND)。
中断掩码寄存器(INTMASK)。
中断模式寄存器(INTMOD)。
中断优先级寄存器(PRIORITY)。
中断未决寄存器(INTPND)。
中断偏移寄存器(INTOFFSET)。
外部中断的触发方式寄存器(EXTINT0-EXTINT2)。
外部中断控制滤波时钟和滤波宽度寄存器(EINTFLT0-EINTFLT3)。
SRCPND源中断未决寄存器。
SRCPND寄存器包括32位,每位与一个中断源相关。
如果相应的中断源产生中断请求且等待中断服务,则每个位置1。
因此这个寄存器指出那个中断源在等待请求服务。
对于一个特定中断源的中断服务程序中,SRCPND寄存器的相应位必须被清除目的是下次能正确得到同一个中断源的中断请求。
如果你从中断服务程序返回却没有清除该位,中断控制器将操作好像又有同一个中断源的中断请求到来。
换言之,如果SRCPND的一个特殊位置1,其总是认为一个有效的中断请求等待服务。
清除相应位的时间依赖于用户的需求。
如果你想收到另一个来此同一个中断源的有效请求,你应该清除相应的位,然后使能中断。
3.4Mini2440开发板硬件平台
本文所设计使用的核心板采用的是广州友善之臂计算机科技有限公司生产的mini2440开发板。
mini2440开发板是一款ARM9开发板,它以低价实用、性价比高等特点著称,得到了市场的高度认可。
mini2440的微处理器采用的是S3C2440微处理器,而且其CPU电源管理芯片与复位芯片更加专业与稳定,这使得该系统更加稳定。
PCB采用四层板设计,布线专业,信号完整清晰,生产时使用机器贴片,进行批量生产。
mini2440开发板适用于嵌入式Linux和WinCE操作系统的学习与开发。
mini2440还配备了64M的SDRAM,采用32bit数据总线,时钟频率为100MHz。
还有64M的NANDFlash和2M的NorFlash,其中NorFlash已经安装了BIOS。
此外开发板还配备了两个USB接口,用于连接外部USB设备和与PC机进行USB通信。
Mini2440开发板的实物图如图3-3所示。
图3-3mini2440开发板
下面对本设计测试程序部分涉及的开发板上的硬件部分予以分析。
3.4.1Mini2440LED硬件电路
LED是开发中最常用的状态指示设备,Mini2440开发板具有4个用户可编程LED,它们直接与CPU的GPIO相连接,低电平有效(点亮),详细的资源占用如下表:
表3-4开发板LED对应管脚
LED1
LED2
LED3
LED4
GPIO
GPB5
GPB6
GPB7
GPB8
网络标号
nLED_1
nLED_2
nLED_3
nLED_4
在开发板中LED对应的电路图如图3-4所示。
图3-4mini2440LED部分
3.4.2Mini2440蜂鸣器硬件电路
开发板的蜂鸣器SPEAKER是通过PWM控制的,原理图如下所示,其中GPB0可通过软件设置为PWM输出。
对应的电路图如图3-5所示。
图3-5mini2440蜂鸣器部分
3.4.3Mini2440串口硬件电路
S3C2440本身总共有3个串口UART0、1、2,其中UART0,1可组合为一个全功能的串口,在大部分的应用中,我们只用到3个简单的串口功能(本开发板提供的Linux和WinCE驱动也是这样设置的),即通常所说的发送(TXD)和接收(RXD),它们分别对应板上的CON1、CON2、CON3,这3个接口都是从CPU直接引出的,是TTL电平。
为了方便用户使用,其中UART0做了RS232电平转换,它们对应于COM0,可以通过附带的直连线与PC机互相通讯。
CON1,CON2,CON3在开发板上的位置和原理图中的连接定义对应关系如下图所示。
图3-6mini2440串口部分
3.5Mini2440开发板启动过程的分析
由于μCOS-II系统可以移植到多种不同的平台上,对于不同硬件平台其启动原理和过程是不一样的,所以我们要想成功将μCOS-II操作系统移植到mini2440开发板上,首先必须理清mini2440的启动流程。
由于mini2440开发板已经烧入了U-Boot,所以开始上电的时候S3C2440会交给U-Boot去处理,下面我们简要地对U-Boot的启动流程予以分析。
U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:
第一阶段的功能,该阶段包括对硬件设备初始化,加载U-Boot第二阶段代码到RAM空间,设置好栈以便后面C程序的执行,然后跳转到第二阶段代码入口。
图3-7U-boot启动第一阶段
第二阶段的功能,该阶段包括初始化本阶段使用的硬件设备,检测系统内存映射,将内核从Flash读取到RAM中,为内核设置启动参数,最后调用内核。
图3-8U-boot启动第二阶段
4μCOS-II系统和ADS编程环境
4.1μCOS-II特点
μC/OS和μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。
CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。
用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。
μC/OS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
严格地说uC/OS-II只是一个实