基于嵌入式ARM9的μCOS-II移植
- 格式:docx
- 大小:94.13 KB
- 文档页数:14
ARM9数据采集平台的设计和μC/OS-Ⅱ操作系统的移植
无线通信是军事通信的重要手段。
由于跳频通信技术具有抗干扰性、低截获概率、多址组网、抗衰落性以及易兼容等优点,目前已成为战术通信领域应用最广泛的一种通信手段。
不少专家预言,未来的战术通信设备非跳频电台莫属。
现代化军队不仅要求无线电台具备传统的通话能力,还要求具备数据传输功能用以支撑C4 I系统的运转。
因此具备数据传输功能的跳频电台已成为军事通信领域里的一个研
究热点。
本文结合了ARM和μC/OS-II操作系统的优点实现了跳频电台的数据采集和数据传输功能。
首先给出了系统的体系结构并根据硬件平台的特点设计了系统的软件平台,接着设计与实现了系统启动代码并完成了μC/OS-II操作系统在AT91RM9200微处理器上的移植,然后在μC/OS-II操作系统下开发了跳频电台中模拟话音及数字话音的数据采集功能和数据传输功能,并实现了PC数据终端中链路控制层
的功能,最后完成了用户代码的固化。
室内中频连接条件下的测试表明,该系统具有良好的数据采集和数据传输效果。
基于ARM9EJ-S嵌入式μCOS-Ⅱ系统开发平台的构建和应
用
向平;陈方;程建民;毕玉庆
【期刊名称】《机械与电子》
【年(卷),期】2008(000)011
【摘要】介绍了AT91SAM9261处理器和μCOS-Ⅱ操作系统的特点,构建了一个以AT91SAM9261为核心的嵌入式系统平台,完成μCOS-Ⅱ在AT91SAM9261上的移植,并且在平台上完成了血氧饱和度监测项目的开发.
【总页数】3页(P48-50)
【作者】向平;陈方;程建民;毕玉庆
【作者单位】西北工业大学机电学院,陕西,西安,710072;西北工业大学机电学院,陕西,西安,710072;西北工业大学机电学院,陕西,西安,710072;西北工业大学机电学院,陕西,西安,710072
【正文语种】中文
【中图分类】TP368.2
【相关文献】
1.基于嵌入式Linux的风力发电监控系统开发平台的构建 [J], 房若民;陈国定
2.嵌入式实时操作系统μ COS-Ⅱ在电力系统状态监控中的应用 [J], 熊志金;陈三宝;郭洪娜
3.一种基于stm32+μCOS-Ⅱ+μCGUI的嵌入式控制系统的构建 [J], 方华;龚望宜;
陈韶飞
4.基于Linux嵌入式系统开发平台的构建及应用 [J], 林继民;吴怡;林萧
5.嵌入式实时操作系统μCOS-Ⅱ基于ARM9移植 [J], 廖临光;纪金水;杨筱平因版权原因,仅展示原文概要,查看原文内容请购买。
摘要随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。
由于嵌入式设备的智能型,使得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。
本文通过ADS1.2和JLink的软件平台,以及芯片为S3C2440的ARM9开发板,成功进行微型嵌入式操作系统μC/OS-Ⅱ在开发板上的移植。
在此过程中对于μC/OS-Ⅱ进行了较为全面的学习,对于移植操作也有了深刻的认识。
关键词:μC/OS-Ⅱ;Arm9;移植AbstractWith the development of computer and electronic technology, more and more embedded in people's daily life and industrial production. Intelligent embedded devices, making life extremely convenient and production, which also brought the rapid development of embedded operating system.This article by ADS1.2 and JLink, software platforms, and chip S3C2440 ARM9 development board, the success of micro embedded operating system OS-II development board transplantation. In this process, the OS-II for a more comprehensive learning, have a deep understanding for the transplant operation.Key words: u C/OS - Ⅱ; Arm9; transplant目录第一章嵌入式系统基础 (1)1.1 嵌入式系统概述 (1)1.2 嵌入式体系硬件基础 (1)1.3 嵌入式体系软件基础 (2)第二章μC/OS-II介绍 (3)第三章ARM9介绍 (4)第四章μC/OS-Ⅱ在S3C2440上的移植 (5)4.1移植环境简介 (5)4.2 移植条件 (5)4.3 移植内容 (5)4.3.1 INCLUDES.H (5)4.3.2 OS_CFG.H (6)4.3.3 OS_CPU.H (6)4.3.4 OS_CPU_C.C (6)4.3.5 OS_CPU_A.ASM (8)第五章实例移植 (10)5.1 函数配置 (10)5.2 工程创建 (12)5.3 工程设置 (13)5.4 实例调试 (17)第六章结束语 (19)[参考文献] (20)附录1 (21)OS_CPU.H 文件函数: (21)OS_CPU_A.ASM文件函数 (21)第一章嵌入式系统基础1.1 嵌入式系统概述与一般的计算机系统不同,嵌入式系统的功能性、可靠性和安全性以及成本、体积、功耗都有严格的要求,并且在以应用为中心的前提下,能够进行软硬件的裁剪。
uCOS-II在ARM上的移植uCOS-II在ARM上的移植详细方法:/space.php?uid=170730&do=blog&id=4847移植工作介绍实际上uC/OS-II可以简单地看作是一个多任务调度器,在这个任务调度器上完善地添加了与多任务操作系统相关的一些系统服务,如信号量、邮箱等。
其90%的代码是用C语言写的,可以直接移植到有C语言编译器的处理器上。
移植工作主要都集中在多任务切换的实现上,因为这部分代码用来保存和恢复CPU现场(即写/读相关寄存器),不能用C语言,只能使用汇编语言完成。
uC/OS-II的全部源代码量大约是6000-7000行,共15个文件。
将 uC/OS-II 移植到ARM处理器上,需要修改三个与ARM体系结构相关的文件,代码量大约是500行。
以下分别介绍这三个文件的移植工作。
OS_CPU.H OS_CPU_A.ASMOS_CPU_C.COS_CPU.H 文件图1 ARM体系结构的寄存器位置·1----数据类型定义数据类型的修改与所用的编译器相关,不同的编译器使用不同的字节长度表示同一数据类型,比如int,同样在x86平台上,GNU的gcc编译为4 bytes,而MS VC++则编译为2 bytes。
·2-----堆栈单位在任务切换时,CPU现场的寄存器将保存在当前运行任务的堆栈中,所以OS_STK 数据类型应该与CPU的寄存器长度一致。
typedef unsigned int os STK;typedef unsigned char BOOLEAN; /* 布尔变量 */typedef unsigned char INT8U; /* 无符号8位整型变量 */typedef signed char INT8S; /* 有符号8位整型变量 */typedef unsigned short INT16U; /* 无符号16位整型变量 */typedef signed short INT16S; /* 有符号16位整型变量 */typedef unsigned int INT32U; /* 无符号32位整型变量 */typedef signed int INT32S; /* 有符号32位整型变量 */typedeffloat FP32; /* 单精度浮点数(32位长度) */typedefdouble FP64; /* 双精度浮点数(64位长度) */typedefINT32U OS_STK; /* 堆栈是32位宽度 */#define BYTE INT8S#define UBYTE INT8U#define WORD INT16S#define UWORD INT16U#define LONG INT32S#define ULONG INT32U·3-----堆栈增长方向void OS_TASK_SW(void; /* 任务级任务切换函数 */void OSStartHighRdy(void; /* 运行优先级最高的任务 */void OS_ENTER_CRITICAL(void; /* 关中断 */void OS_EXIT_CRITICAL(void; /* 开中断 */#defineOS_STK_GROWTH 1 /* 堆栈是从上往下长的 */#define USR32Mode 0x10/* 用户模式 */#define SYS32Mode 0x1f/* 系统模式 */#define NoInt 0x80#ifndef USER_USING_MODE#define USER_USING_MODE SYS32Mode /* 任务缺省模式 */#endif#ifndef OS_SELF_EN#defineOS_SELF_EN 0 /* 允许返回OS与任务分别编译、固化*/#endifOS_CPU_A用汇编编写任务开始函数OSStartHighRdyMSR CPSR_c,#(NoInt | SYS32ModeLDR R1,=OSRunningMOV R2,#1STRB R2,[R1] ;OSRunning=1BL OSTaskSwHook ;调用OSTaskSwHook(B __OSStartHighRdy ;运行最高优先级任务任务切换函数OS_TASK_SWSTMFD SP!,{LR} ;保存当前任务的PCSTMFD SP!,{R0-R12,LR} ;依次保存R0-R12、LR MRS R0,CPSRSTMFD SP!,{R0} ;保存CPSRLDR R1,=OSTCBCurLDR R1,[R1]STR SP,[R1] ;OSTCBCur->OSTCBStkPtr = SP(在当前任务控制块中保存当前任务的堆栈指针BL OSTaskSwHook ;调用OSTaskSwHook(LDR R3,=OSPrioCurLDR R4,=OSPrioHighRdyLDRB R4,[R4]STRB R4,[R3] ;OSPrioCur=OSPrioHighRdy 中断任务切换函数OSIntCtxSwBL OSTaskSwHook ;调用钩子函数OSTaskSwHook(MSR CPSR_c, #(NoInt | IRQ32ModeLDR R0, =OSTCBHighRdyLDR R0, [R0]LDR R1, =OSTCBCurSTR R0, [R1] ;OSTCBCur=OSTCBHighRdyLDR R0,=OSPrioCurLDR R1,=OSPrioHighRdyLDRB R1,[R1]STRB R1,[R0] ;OSPrioCur=OSPrioHighRdyLDR R0,=IRQStackLDR R0,[R0]SUB R0,R0,#4 ;MOV SP,R0 ;IRQ模式堆栈保留一个字MSR CPSR_c, #(NoInt | SYS32Mode ;进入系统模式LDR R2, =OSTCBHighRdyLDR R2, [R2]LDR R2, [R2] ;取得新任务堆栈指针OSTCBHighRdy->OSTCBStkPtr并存入R2中LDR R1,[R2] ;取得新任务的CPSR存入R1中LDR R3,[R2,#15*4] ;取得新任务的PC存入R3中STR R3,[R0] ;把新任务的PC存入IRQ 模式的堆栈中MSR CPSR_c, #(NoInt | IRQ32Mode ;进入IRQ模式MSR SPSR_cxsf,R1 ;把新任务的CPSR保存到IRQ模式的SPSR中MSR CPSR_c, #(NoInt | SYS32Mode ;进入系统模式ADD R2,R2,#4 ;调整新任务堆栈指针MOV SP,R2 ; 系统模式SP→|R0 |LDMFD SP!,{R0-R12,LR} ;恢复新任务的R0-R12,LR,系统模式SP→|PC |ADD SP,SP,#4 ;调整系统模式堆栈指针MSR CPSR_c, #(NoInt | IRQ32Mode ;进入IRQ模式LDMFD SP!,{PC}^ ;恢复新任务的CPSR、PC和IRQ 模式SP中断禁止和允许函数OS_ENTER_CRITICALSTMFD SP!,{R0}MRS R0,CPSRORR R0,R0,#NoIntMSR CPSR_cxsf,R0LDMFD SP!,{R0}MOV PC,LROS_EXIT_CRITICALSTMFD SP!,{R0}MRS R0,CPSRBIC R0,R0,#NoIntMSR CPSR_cxsf,R0LDMFD SP!,{R0}MOV PC,LR节拍中断函数OS_CPU_C.C 文件·1-------任务堆栈初始化在此讨论任务初始化时的堆栈设计,也就是在堆栈增长方向上如何定义每个需要保存的寄存器位置。
嵌入式实时操作系统μCOS-Ⅱ的移植1、引言嵌入式系统由于它具有软件代码小、高度自动化、响应速度快等特点已经使它在许多领域得到广泛的应用[3]。
从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等。
嵌入式系统通常由硬件环境和操作系统构成。
在嵌入式操作系统的统一调度管理下实现对所有系统资源的合理利用和分配,达到提高系统性能和有效利用有限资源的目的。
μCOS-Ⅱ作为一个源码开放的嵌入式实时操作系统,同时具有良好的可移植性、可裁剪性、可剥夺性、稳定性和可靠性等优点,使其成为许多嵌入式操作系统的首选。
本文将μCOS-Ⅱ在Freescale的8位处理器芯片HC9S08上移植实现。
2、μCOS-Ⅱ系统结构μCOS-Ⅱ是一个完整的可移植可固化可裁剪的抢占式实时多任务内核。
可以在不需要做很大修改的基础上方便的移植到多种处理器上。
条件是:该处理器要具有一定数量的堆栈,能够使用软件中断,产生定时器中断,此外,编译器要支持可重入代码,并且要能使用汇编实现对处理器内部寄存器的相关操作[2][4]。
通过μCOS-Ⅱ的管理,使多个任务之间相互协调,分时的占用CPU,实现充分利用资源和实时等相应的功能。
任务通常是一个死循环,用来完成某一特定的功能;一个任务相当于一个线程。
μCOS-Ⅱ可以管理多达64个任务,每个任务都具有一个唯一的合法优先级。
但是,优先级最低的那个任务已经被系统定义为空闲任务,用户不能使用。
用户可以通过函数OSTaskCreate()来创建任务,通过OSTaskDel()来删除任务。
任务可能有以下五种状态:睡眠态、就绪态、运行态、等待状态、中断服务态。
利用不同的系统函数可以实现任务在各状态之间的转换。
μCOS-Ⅱ通过对就绪表的操作总是选择在就绪任务中优。
编号:嵌入式系统设计与制作(论文)说明书题目:基于嵌入式ARM的μC/OS-II移植院〔系〕:信息与通信学院专业:电子信息工程学生:学号:指导教师:2012年12月29日嵌入式系统设计与制作实训任务书以应用为中心、以电脑为基础的嵌入式技术,是当今发展最快、应用最广、最有发展前景的主要技术之一。
嵌入式技术已经被广泛应用于工业控制、移动通信、信息家电、医疗仪器、汽车电子、航空航天等各个领域。
在各种嵌入式处理器中,ARM以体积小、低功耗、低成本、高性能等优点,获得许多半导体厂商的支持,在嵌入式应用领域取得巨大的成功。
软件方面,uC/OS是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,因而被使用频繁。
本文主要研究了μC/OS-II在S3c2440芯片上的移植。
本文通过对S3c2440硬件和源码公开的嵌入式实时操作系统μC/OS-II的分析,以S3C2440为例,阐述了在ARM9上移植μC/OS-II,来运行多个任务,用液晶显示来说明μC/OS-II移植的优缺点,以及在移植中应注意的问题,启动代码的理解,解析代码的优化。
关键词:嵌入式系统;实时;ARM9;μC/OS-IIApplication, embedded computer-based technology, is one of today's fastest-growing, most widely used, the most promising technologies. Embedded technology has been widely used in industrial control, mobile communications, information appliances, medical equipment, automotive electronics, aerospace and other fields.In a variety of embedded processors, ARM advantages of small size, low-power, low-cost, high-performance, get the support of many semiconductor manufacturers, achieved great success in the field of embedded applications. Software, u C / OS is a free, open-source, compact structure, can be deprived of a real-time operating system for real-time kernel, thus frequent.This paper studies the μC / OS-II in the S3c2440 chip transplant. This article by S3c2440 hardware and open source embedded real-time operating system μC / OS-II analysis, for example, described to S3C2440 ARM9 on transplantation μC / OS-II to run multiple tasks to illustrate with LCD transplant μC / OS-II strengths and weaknesses, as well as the transplant should pay attention to the problem of understanding of the startup code, the parsing code optimization.Key words: embedded system; real-time; ARM9; μC / OS-II目录引言 (1)1S3C2440系列微处理器简介 (1)内核 (1)开发板 (3)2μC/OS-II (4)分析 (4)任务运行 (6)任务通信 (7)内存动态分配 (8)3μC/OS-II在ARM9上的移植 (9)与CPU有关的文件 (9) (9) (10) (12)移植代码实现 (13)4测试程序 (23)整个测试程序的效果图 (23)测试程序的功能 (23)5总结 (24)谢辞 (25)参考文献 (26)引言早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。
实验六 uC/OS-II在ARM上的移植一、实验目的1.了解UC/OS-II内核的主要结构。
2.掌握将UC/OS-II内核移植到ARM9处理器上的基本方法。
二、预备知识1.掌握在ADS1.2集成开发环境中编写和调试程序的基本过程。
2.会使用UltraEdit编辑C语言源程序。
3.了解ARM9处理器的结构。
4.了解UC/OS-II系统结构。
三、 uc/os简介uC/OS-II是支持微处理器和微控制器的具有可移植性,可剪裁,抢先实时,多任务管理的微内核实时操作系统。
z可移植性体现在绝大部分的uC/OS-II的源代码是用移植性很强的标准C语言写的;源程序中只有和微处理器硬件相关的那部分使用汇编语言写,并且这些汇编代码已经压缩到最低限度;uC/OS-II可在绝大多数8位、16位、32位、64位微处理器、微控制器、数字信号处理器(DSP上运行。
z可剪裁当用户不需要使用uC/OS-II的全部功能模块时,可以在应用程序中通过语句来定义所需的uC/OS-II功能模块,以减少不必要的存储器空间的开支。
z抢先实时总是运行就绪条件下优先级最高的任务。
大多数商业操作系统内核都是占先式的。
z多任务管理uC/OS-II可以管理64个任务,其中8个系统任务,应用程序最多可以有56个任务。
它的每个任务的优先级都不相同。
z中断管理中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。
除以上介绍的特点外,uC/OS-II还包括其它一些特点,如:公开源代码、可固化、可确定性、任务栈、提供很多系统服务、稳定性和可靠性强等。
四、uC/OS-II的体系结构uC/OS-II包括三个部分,应用软件基于uC/OS-II之上,uC/OS-II的第一部分是核心代码部分,这部分代码与处理器无关,包括七个源代码文件和一个头文件,七个源代码文件分别是核心部分,包括事件的管理,消息队列的管理,存储管理,消息管理,信号量处理,任务调度和定时管理。
图1pc/os-u抢占式内核在/.tC/OS—II多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。
内核提供的基本服务是任务切换。
/xC/OS—II可以管理多达64个任务。
由于设计者建议用户保留8个任务,所以留给用户应用程序最多可有56个任务。
赋予各个任务的优先级必须是不相同的。
/xC/OS—II为每个任务设置独立的堆栈空间,可以快速实现任务切换。
/【上C/OS—II近似地每时每刻总是让优先级最高的就绪任务处于运行状态,为了保证这一点,它在调用系统API函数、中断结束、定时中断结束时总是执行调度算法,IzCIOS—II通过事先计算好数据简化了运算量,通过精心设计就绪表结构使得延时可预知。
/.tC/OS—II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。
实际上,I上C/OS-II已经通过了非常严格的测试,并且得到了美国航空管理局(FederalAviationAdministration)的认证,可以用在飞行器上。
这说明p.C/OS—II是稳定可靠的。
除此以外,gC/OS-II的鲜明特点就是源码公开,便于移植和维护。
3ttC/OS-H在¥3C2410上移植可行性分析所谓移植。
就是使这个实时内核能在某个微处理器上运行。
pC/OS—II的框架结构如图2所示。
II处理器无关oSOOREC0SMBoXC0S^伍MCOS_Q.COSSEM.CoSTASKCoSTI朋叵CpC/OS-II.Cla,C/0S-11.HI一一顼厍一一Im.-●…·一·-_I一一覆厍一一l图2i上c./os—II硬件和软件结构图l鳘I4趟缴终端监,J‘在上图可以看出,2个用户任务被建立,高优先级任务先运行,当高优先级任务被挂起时,系统自动切换低优先级任务运行。
显示多任务调度正常运行,从而验证移植成功。
6结束语采用基于ARM9的¥3C2410嵌入式微处理器具备高性能的运算处理能力。
大庆师范学院本科生毕业基于ARM9的μC/OS-Ⅱ嵌入式系统移植院(系)物理与电气信息工程专业电子信息工程研究方向嵌入式技术学生姓名钮佳楠学号20XX01071677指导教师姓名成宝芝指导教师职称讲师20XX年5 月15 日摘要随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。
由于嵌入式设备的智能型,使得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。
本文通过ADS1.2和JLink的软件平台,以及芯片为S3C2440的ARM9开发板,成功进行微型嵌入式操作系统μC/OS-Ⅱ在开发板上的移植。
在此过程中对于μC/OS-Ⅱ进行了较为全面的学习,对于移植操作也有了深刻的认识。
关键词:μC/OS-Ⅱ;Arm9;移植AbstractWith the development of puter and electronic technology, more and more embedded in people's daily life and industrial production. Intelligent embedded devices, making life extremely convenient and production, which also brought the rapid development of embedded operating system.This article by ADS1.2 and JLink, software platforms, and chip S3C2440 ARM9 development board, the success of micro embedded operating system OS-II development board transplantation. In this process, the OS-II for a more prehensive learning, have a deep understanding for the transplant operation.Key words: u C/OS - Ⅱ; Arm9; transplant目录第一章嵌入式系统基础1.1 嵌入式系统概述与一般的计算机系统不同,嵌入式系统的功能性、可靠性和安全性以及成本、体积、功耗都有严格的要求,并且在以应用为中心的前提下,能够进行软硬件的裁剪。
嵌入式系统原理与设计目录一、简介1.1 ARM9与S3C2440简介 (1)1.2μCOS-II简介 (3)二、μCOS-II在ARM9上移植2.1移植的可行性分析 (5)2.2移植过程 (6)2.3移植测试 (11)一、简介1.1 ARM9与S3C2440简介1.ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI 和ARM9E-S等系列。
ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。
在流水线上,ARM7是三级流水线,ARM9是五级流水线。
由于结构不同,ARM7的执行效率低于ARM9。
平时所说的ARM7、ARM9实际上指的是ARM7TDMI、ARM9TDMI软核,这种处理器软核并不带有MMU和cache,不能够运行诸如linux这样的嵌入式操作系统。
而ARM公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T 等带有MMU和cache的处理器内核。
2.在ARM9系列处理器中S3C2440A是三星公司推出的一款功能强大,功耗极低的基于ARM920T核心的嵌入式处理器,它为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。
S3C2440A采用ARM920T内核,集成如下片上功能:● 1.2V内核,1.8V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache(I-Cache)/16KB数据Cache(D-Cache)●外部储存控制器(SDRAM控制盒片选逻辑)●集成LCD专用DMA的LCD控制器(支持最大4K色STN和256K色TFT)● 4路拥有外部请求引脚的DMA控制器● 3路URAT(IrDA1.0,64-Byte Tx FIFO,64Byte Rx FIFO)● 2路SPI● IIC总线接口(多主支持)● IIS音频编解码器接口● AC`97编解码器接口● 1.0版SD主接口,兼容2.11版MMC接口● 2路USB主机控制/1路USB期间控制(ver1.1)● 4路PWM定时器/1路内部定时器/看门狗定时器● 8路10位ADC和触摸屏接口●具有日历功能的RTC●摄像头接口(支持最大4096x4096的输入,2048x2048缩放输入)● 130个通用I/O,24个外部中断源●电源控制:正常,慢速,空闲,睡眠模式●带PLL的片上时钟发生器工作电压:内核: 300MHZ@1.20V400MHZ@1.30V储存器:1.8V/2.5V/3.0V/3.3VI/O: 3.3V操作频率:Fclk: 400MHZHclk: 136MHZPclk: 68MHZ接下来的Table1-1位管脚的位置及名称,在Figure1-2管脚分配图上横坐标为数字,纵坐标为字母,交叉点坐标为PinNumber,在表中被分配了不同的名字。
Table1-2为引脚在CPU各状态下所处的状态与功能。
表1-2的说明:1、@BUS REQ显示了管脚在外部总线时的状态,此时总线被其他总线控制器控制。
2、'-'表示在总线请求状态中无变化。
3、Hi-z或Pre表示高阻或先前的状态,由设置MISCCR决定。
4、AI/AO表示模拟输入/模拟输出。
5、P,I,O分别表示电源,输入和输出。
6、‘I/O state @nRESET’表示nRESET处于低电平下管脚状态1.2μCOS-II简介μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。
它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。
μC /OS-II是一个完整的、可移植、可固化、可裁剪的抢占式实时多任务内核。
μC/OS-II绝大部分的代码是用ANSII的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
至今,从8位到64位,μC/OS-II已在超过40种不同架构上的微处理器上运行。
μC/OS-II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。
µC/OS-II的特点:1、源代码:µC/OS-II全部以源代码的方式提供给使用者(约5500行)。
该源码清晰易读,结构协调,且注解详尽,组织有序;2、可移植(portable):µC/OS-II的源代码绝大部分是用移植性很强的ANSI C 写的,与微处理器硬件相关的部分是用汇编语言写的。
µC/OS-II可以移植到许许多多不同的微处理器上,条件是:该微处理器具有堆栈指针,具有CPU内部寄存器入栈、出栈指令,使用的C编译器必须支持内嵌汇编,或者该C语言可扩展和可链接汇编模块,使得关中断和开中断能在C语言程序中实现;3、可固化(ROMable):µC/OS-II是为嵌入式应用而设计的,意味着只要具备合适的系列软件工具(C编译、汇编、链接以及下载/固化)就可以将µC/OS-II嵌入到产品中作为产品的一部分;4、可裁减(scalable):可以只使用µC/OS-II中应用程序需要的系统服务。
可裁减性是靠条件编译实现的,只需要在用户的应用程序中定义那些µC/OS-II中的功能应用程序需要的部分就可以了;5、可抢占性(preemptive):µC/OS-II是完全可抢占型的实时内核,即µC/OS-II 总是运行就绪条件下优先级最高的任务;6、多任务:µC/OS-II可以管理64个任务。
赋予每个任务的优先级必须是不相同的,这就是说µC/OS-II不支持时间片轮转调度法(该调度法适用于调度优先级平等的任务);7、可确定性:绝大多数µC/OS-II的函数调用和服务的执行时间具有可确定性。
也就是说用户能知道µC/OS-II的函数调用与服务执行了多长时间。
进而可以说,除了函数OSTimeTick()和某些事件标志服务,µC/OS-II系统服务的执行时间不依赖于用户应用程序任务数目的多少;8、任务栈:每个任务都有自己单独的栈。
µC/OS-II允许每个任务有不同的栈空间,以便降低应用程序对RAM的需求;9、系统服务:µC/OS-II提供许多系统服务,比如信号量、互斥信号量、事件标志、消息邮箱、消息队列、时间管理等等;10、中断管理:中断可以使正在执行的任务暂时挂起。
如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可以达255层;11、稳定性和可靠性:µC/OS-II的每一种功能、每一个函数以及每一行代码都经过了考验和测试,具有足够的安全性与稳定性,能用于与人性命攸关、安全性条件极为苛刻的系统中。
二、μCOS-II在ARM9上移植2.1移植的可行性分析所谓操作系统的移植,是指使一个实时操作系统能够在某个微处理器平台上运行。
uC/OS-II其90%的代码是由标准的C语言写成的,移植方便。
移植的主要工作是修改部分与处理器硬件相关的代码。
而移植uC/OS-II满足的条件有:1)处理器的C编译器能产生可重入代码可重入的代码指的是一段代码(比如:一个函数)可以被多个任务同时调用,而不必担心会破坏数据。
也就是说,可重入型函数在任何时候都可以被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据。
2)在程序中可以打开或者关闭中断在uC/OS-II中,可以通过:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。
这需要处理器的支持,而在ARM7的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。
3)处理器支持中断,并且能产生定时中断(通常在10—100Hz之间)uC/OS-II是通过处理器产生的定时器的中断来实现多任务之间的调度的,ARM7的处理器上可以产生定时器中断。
4)处理器支持能够容纳一定量数据的硬件堆栈uC/OS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。
所以,寄存器的入栈和出栈是uC/OS-II多任务调度的基础。
ARM7处理器中有专门的指令处理堆栈,可以灵活的使用堆栈。
5)处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令综上所述,ARM9符合uC/OS-II操作系统的移植条件,可以在ARM9上实现系统移植。
2.2移植过程将uC/OS-II 移植到ARM处理器上,需要修改三个与ARM9体系结构相关的文件。
它们是OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C。
以下分别介绍这三个文件的移植工作:1.OS_CPU.H文件中的主要内容包括:a)把编译器的数据类型重定义为uCOS-II内核所用的数据类型;b)编写相应的开关中断函数;c)定义单个堆栈的数据宽度;d)定义微处理器的堆栈的增长方向。
a)由于不同的微处理器有不同的字长,所以uCOS-II的移植工作包括了一系列的数据类型的重定义,以确保其可移植性。
虽然uCOS-II不用浮点数据,但仍定义了浮点数据类型。
typedef unsigned char BOOLEAN; //布尔变量typedef unsigned char INT8U; //无符号8位typedef signed char INT8S; //有符号8位typedef unsigned short INT16U; //无符号16位typedef signed short INT16S; //有符号16位typedef unsigned int INT32U; //无符号32位typedef signed int INT32S; //有符号32位typedef float FP32; //单精度浮点型typedef double FP64; //双精度浮点型#define BYTE INT8S //定义和以前兼容的数据类型#define UBYTE INT8U#define WORD INT16S#define UWORD INT16U#define LONG INT32S#define ULONG INT32Ub) 与所有的实时内核一样,uCOS-II需要先禁止中断,然后再访问代码的临界区,并在访问完成后重新允许中断。
这样,就使得uCOS-II能够保护临界区的代码免受多任务或中断服务子程序的侵扰。