基于嵌入式ARM9的μCOS-II移植

上传人:jiups****uk12 文档编号:40255899 上传时间:2018-05-25 格式:DOCX 页数:14 大小:94.13KB
返回 下载 相关 举报
基于嵌入式ARM9的μCOS-II移植_第1页
第1页 / 共14页
基于嵌入式ARM9的μCOS-II移植_第2页
第2页 / 共14页
基于嵌入式ARM9的μCOS-II移植_第3页
第3页 / 共14页
基于嵌入式ARM9的μCOS-II移植_第4页
第4页 / 共14页
基于嵌入式ARM9的μCOS-II移植_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《基于嵌入式ARM9的μCOS-II移植》由会员分享,可在线阅读,更多相关《基于嵌入式ARM9的μCOS-II移植(14页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统原理与设计嵌入式系统原理与设计题目:基于嵌入式 ARM9 的 COS-II 移植专业: 学号: 姓名: 目录一、简介1.1 ARM9 与 S3C2440 简介 .1 1.2COS-II 简介 .3二、COS-II 在 ARM9 上移植2.1 移植的可行性分析 .5 2.2 移植过程 .6 2.3 移植测试 .111一、简介一、简介1.11.1 ARM9ARM9 与与 S3C2440S3C2440 简介简介1.ARM9 系列处理器是英国 ARM 公司设计的主流嵌入式处理器,主要包括ARM9TDMI 和 ARM9E-S 等系列。ARM9 采用哈佛体系结构,指令和数据分属不同的总线,可以并

2、行处理。在流水线上,ARM7 是三级流水线,ARM9 是五级流水线。由于结构不同,ARM7 的执行效率低于 ARM9。平时所说的 ARM7、ARM9 实际上指的是 ARM7TDMI、ARM9TDMI 软核,这种处理器软核并不带有 MMU 和 cache,不能够运行诸如 linux 这样的嵌入式操作系统。而 ARM 公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T 等带有 MMU 和 cache 的处理器内核。2.在 ARM9 系列处理器中 S3C2440A 是三星公司推出的一款功能强大,功耗极低的基于 ARM920T 核心的嵌入式处理器,它为手持

3、设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。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 路 SP

4、I IIC 总线接口(多主支持) IIS 音频编解码器接口 AC97 编解码器接口 1.0 版 SD 主接口,兼容 2.11 版 MMC 接口 2 路 USB 主机控制/1 路 USB 期间控制(ver1.1) 4 路 PWM 定时器/1 路内部定时器/看门狗定时器 8 路 10 位 ADC 和触摸屏接口 具有日历功能的 RTC 摄像头接口(支持最大 4096x4096 的输入,2048x2048 缩放输入)2 130 个通用 I/O,24 个外部中断源 电源控制:正常,慢速,空闲,睡眠模式 带 PLL 的片上时钟发生器工作电压:内核: 300MHZ1.20V400MHZ1.30V 储存器:1

5、.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 表示

6、模拟输入/模拟输出。5、P,I,O 分别表示电源,输入和输出。6、I/O state nRESET表示 nRESET 处于低电平下管脚状态31.2COS-II1.2COS-II 简介简介C/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、 任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等 功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使 实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。 C /OS-II 是一个完整的、可移植、可固化、可裁剪的抢占式实时多任务内核。 C/OS-II 绝大部分的代码是用 AN

7、SII 的 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 写的,与微处理器硬件相关的部分是用汇

8、编语言写的。C/OS-II 可以移植到许许 多多不同的微处理器上,条件是:该微处理器具有堆栈指针,具有 CPU 内部寄存器 入栈、出栈指令,使用的 C 编译器必须支持内嵌汇编,或者该 C 语言可扩展和可链 接汇编模块,使得关中断和开中断能在 C 语言程序中实现; 3、可固化(ROMable): C/OS-II 是为嵌入式应用而设计的,意味着只要具 备合适的系列软件工具(C 编译、汇编、链接以及下载/固化)就可以将 C/OS-II 嵌入到产品中作为产品的一部分;4、可裁减(scalable): 可以只使用 C/OS-II 中应用程序需要的系统服务。 可裁减性是靠条件编译实现的,只需要在用户的应用

9、程序中定义那些 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()和某

10、些事件标志服务,C/OS-II 系统服务的执行时间不依赖 于用户应用程序任务数目的多少; 8、任务栈: 每个任务都有自己单独的栈。C/OS-II 允许每个任务有不同的栈 空间,以便降低应用程序对 RAM 的需求;49、系统服务: C/OS-II 提供许多系统服务,比如信号量、互斥信号量、事件 标志、消息邮箱、消息队列、时间管理等等; 10、中断管理: 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数 可以达 255 层; 11、稳定性和可靠性: C/OS-II 的每一种功能、每一个函数以及每一行代码都经过了考验和测试

11、,具有足够的安全性与稳定性,能用于与人性命攸关、安全性 条件极为苛刻的系统中。5二、COS-II 在 ARM9 上移植2.1 移植的可行性分析所谓操作系统的移植,是指使一个实时操作系统能够在某个微处理器平台上运 行。uC/OS-II 其 90%的代码是由标准的 C 语言写成的,移植方便。移植的主要工作 是修改部分与处理器硬件相关的代码。而移植 uC/OS-II 满足的条件有: 1)处理器的 C 编译器能产生可重入代码 可重入的代码指的是一段代码(比如:一个函数)可以被多个任务同时调用, 而不必担心会破坏数据。也就是说,可重入型函数在任何时候都可以被中断执行, 过一段时间以后又可以继续运行,而不

12、会因为在函数中断的时候被其他的任务重新 调用,影响函数中的数据 。 2)在程序中可以打开或者关闭中断 在 uC/OS-II 中,可以通过:OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()宏来 控制系统关闭或者打开中断。这需要处理器的支持,而在 ARM7 的处理器上,可以设 置相应的寄存器来关闭或者打开系统的所有中断。3)处理器支持中断,并且能产生定时中断(通常在 10100Hz 之间) uC/OS- II 是通过处理器产生的定时器的中断来实现多任务之间的调度的,ARM7 的处理器上 可以产生定时器中断。4)处理器支持能够容纳一定量数据的硬件堆栈 uC/OS-II

13、进行任务调度的时候,会把当前任务的 CPU 寄存器存放到此任务的堆 栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任 务。所以,寄存器的入栈和出栈是 uC/OS-II 多任务调度的基础。ARM7 处理器中有 专门的指令处理堆栈,可以灵活的使用堆栈。5)处理器有将堆栈指针和其他 CPU 寄存器存储和读出到堆栈(或者内存)的指 令 综上所述,ARM9 符合 uC/OS-II 操作系统的移植条件,可以在 ARM9 上实现 系统移植。 62.2 移植过程将 uC/OS-II 移植到 ARM 处理器上,需要修改三个与 ARM9 体系结构相关的文件。 它们是 OS_CPU.H,OS

14、_CPU_A.S,OS_CPU_C.C。 以下分别介绍这三个文件的移植工作:1.1. OS_CPU.HOS_CPU.H 文件中的主要内容包括:文件中的主要内容包括:a)把编译器的数据类型重定义为 uCOS-II 内核所用的数据类型;b)编写相应的开关中断函数;c)定义单个堆栈的数据宽度;d)定义微处理器的堆栈的增长方向。a)由于不同的微处理器有不同的字长,所以 uCOS-II 的移植工作包括了一系列的数据类型的重定义,以确保其可移植性。虽然 uCOS-II 不用浮点数据,但仍定义了浮点数据类型。typedef unsigned char BOOLEAN; /布尔变量typedef unsign

15、ed 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) 与所有的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号