1、编号: 嵌入式系统设计与制作 (论文 )说明书 题 目: 基于嵌入式 ARM 的 C/OS-II 移植 院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 2012 年 12 月 29 日 嵌入式系统 设计与制作 实训任务书 年级: 09 级 面向专业 : 电子信息工程 学时 : 3 周 项目名称: 基于嵌入式 ARM 的 C/OS-II 移植 项目类型 硬件与软件制作 特殊要求 无 承担学生姓名 学号 专业 联系电话 电子信息工程 项目设计要求: 基本功能要求 : 1 移植目标芯片 ARM9 2 移植相关文件的程序注释 3 设计测试程序测试系统稳定性 参考
2、资料 : 1.谭浩强 . C 程序设计 .北京:清华大学出版社, 2005 2.Chris Wright 等 . ARM 嵌入式系 统开发 .北京:北京航空航天大学出版社, 2005 3.任哲 .嵌入式实时操作系统 C/OS-II 原理及应用 .北京 .北京航空航天大学出版社, 2005 4. JeanJ Labrosse. 嵌入式实时操作系统 C/OS-II .北京 .北京航空航天大学出版社, 2003 5.Norman Matloff 等 .软件调试的艺术 .北京:人民邮电出版社, 2010 完成形式 : 1. 设计与制作可供实际检测的实物样板; 2. 每 组 的 两位 同学完成一个作品,
3、作品的内容必须和 ARM 嵌入式相关; 3. 完成实训论文。 项目设计进度要求: 选题: 12 月 09 日 -12 月 10 日 查找资料 和 方案确定 : 12 月 11 日 -12 月 15 日 移植 ucosII: 12 月 16 日 -12 月 25 日 软件 和硬件 调试: 12 月 26 日 -12 月 27 日 论文: 12 月 28 日 验收: 12 月 29 日 项目验收方式: 1、在实训期间进行作品验收,验收后交实训论文及实训的资料打印稿及电子文稿。 2、设计报告要符合 桂林电子科技大学 毕业设计 论文统一格式 。 项目开始时间: 2012 年 12 月 09 日 项目结
4、束时间: 2012 年 12 月 29 日 任务下达: 2012 年 12 月 09 日 1 摘 要 以应用为中心、以计 算机为基础的嵌入式技术,是当今发展最快、应用最广、最有发展前景的主要技术之一。嵌入式技术已经被广泛应用于工业控制、移动通信、信息家电、医疗仪器、汽车电子、航空航天等各个领域 。 在各种嵌入式处理器中, ARM 以 体积小、低功耗、低成本、高性能 等优点,获得许多半导体厂商的支持,在嵌入式应用领域取得巨大的成功。软件方面, uC/OS 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统 ,因而被使用频繁。 本文主要研究了 C/OS-II 在 S3c2440 芯片
5、上的移植。本文通过对 S3c2440 硬件和源码公开的嵌入式 实时操作系统 C/OS-II 的分析,以 S3C2440 为例,阐述了在 ARM9上 移植 C/OS-II,来运行多个任务,用液晶显示来说明 C/OS-II 移植的优缺点,以及在移植中应注意的问题,启动代码的理解,解析代码的优化 。 关键词: 嵌入式 系统 ;实时; ARM9; C/OS-II 2 Abstract Application, embedded computer-based technology, is one of todays fastest-growing, most widely used, the most
6、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-p
7、erformance, 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 /
8、 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 weakness
9、es, 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 I 目 录 引言 . 1 1 S3C2440 系列微处理器简介 . 1 1.1ARM9 内核 .1 1.2ARM9 开发板 .3 2 C/OS-II . 4 2.1C/OS-II 分析 .4 2.1.1 任务运行 . 6
10、 2.1.2 任务通信 . 7 2.1.3 内存动态分配 . 8 3 C/OS-II 在 ARM9 上的移植 . 9 3.1 与 CPU 有关的文件 .9 3.1.1 OS_CPU.H . 9 3.1.2OS_CPU_C.C . 10 3.1.3OS_CPU_A.S . 12 3.2 移植代码实现 . 13 4 测试程序 . 23 4.1 整个测试程序的效果图 . 23 4.2 测试程序的功能 . 23 5 总结 . 24 谢 辞 . 25 参考文献 . 26 桂林电子科技大学实训说明书用纸 1 引言 早在 20 世纪 60 年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内
11、被越来越多 的提及,在通信、电子、自动化等需要实时处理的领域所曰益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如 VxWorks、 PSOS 等。这些商业内核性能优越,但价格昂贵,主要用于 16位和 32 位处理器中,针对国内大部分用户使用的 risc 系列 8/16/32 位单片机,可以选择免费的 ucos ii。通过在 LPC2132 上移植移植 ucosii,移植 bootload, ucosii 的远行原理。在原理的分析中,通过理论的学习,理论结合实际,通过制作和调试实验板,其中多次用到单一分析法,单一 调试各个分支,然后系统综合所有任务,完成
12、整个系统远行。论文第一章主要介绍 lpc2132 硬件结构和代码的编写; 第二章讨论 ucosii 代码结构; 第三章分析 ucosii在 arm板上的移植。 1 S3C2440 系列微处理器简介 1.1ARM9 内核 在 ARM9 系列处理器中 S3C2440A 是三星公司推出的一款功能强大,功耗极低的基于 ARM920T 核心的嵌入式处理器,它为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。为了降低整体系统成本, S3C2440A 还提供了丰富的内部设备,其基本特征如下: 基 于 ARM920T 内核,支持 JTAG 仿真调试; 具备 16KB 的指令缓存和 16KB
13、 的数据缓存; 具有 MMU,支持 Windows CE、 PalmOS、 Symbian OS、 Linux 等操作系统; 有外部存储控制器( SDRAM 控制和片选逻辑); LCD 控制器(最大支持 4K 色 STN 和 256K 色 TFT)提供 1 通道 LCD 专用 DMA; 4 通道 DMA 有外部请求引脚; 3 通道 UART( IrDA1.0, 64 字节发送 FIFO 和 64 字节接收 FIFO); 2 通道 SPI; 1 通道 IIC 总线接口(支持多主机); 1 通道 IIS 总线音频编码 器接口; AC97 编解码器接口; 兼容 SD 主接口协议 1.0 版和 MMC
14、 卡协议 2.11 兼容版; 2 通道 USB 主机 /1 通道 USB 设备( 1.1 版); 4 通道 PWM 定时器和 1 通道内部定时器 /看门狗定时 桂林电子科技大学实训说明书用纸 2 8 通道 10 位 ADC 和触摸屏接口; 具有日历功能的 RTC; 摄像头接口(最大支持 40964096 像素输入; 20482048 像素输入支持缩放); 130 个通用 I/O 口和 24 通道外部中断源; 具有普通、慢速、空闲和掉电模式; 具有 PLL 片上时钟发生器; 图 1.1 ARM 模块示图 桂林电子科技大学实训说明书用纸 3 1.2ARM9 开发板 基于 S3C2440A 的 AR
15、M9 开发板在目前市场上 有 很多如友善之臂的 mini2440、飞凌的 TE2440 开发板和 OK2440 开发板、天嵌科技的 TQ2440 开发板等等。在众多知名的开发板中它们都包含了丰富的硬件资源及参考资料。在这些开发板中都包含了电源电路、系统复位电路、系统时钟电路、 JTAG 接口、串行接口、按键输入接口、 IIC 接口、USB 接口、 IIS 音频数据接口电路、以太网接口、 ADC 输入接口、摄像头接口、液晶接口等电路。 本文选用 Micro2440 开发板, 采用 底板与核心板分离设计,核心板 6 层布线 系统运行 相对比较稳定 ,底板预留了各个接口及总线的排针接口非常方便二次开
16、发,对于液晶屏接口它采用的是 24 位,比其 它 非 24 位的要好得多。在技术售后方面该公司还专门建立了 BBS, 对使用中遇到的难题会 有热心人士解答 或 有公司专 业 人士解答。目前使用TQ2440 开发板在车载手持设备、 GIS 平台、 Data Servers、 VOIP、网络终端、工业控制、检测设备、仪器仪表、智能终端、医疗器械、安全监控等产品中均有应用。 本设计 使 用TQ2440 开发板作为硬件平台, 其中它的 板载存储器资源有:一片 2MB 的 Nor Flash( EN29LV160AB)一片 256MB 的 Nand Flash (K9F2G08U0A) 及用 2 片 S
17、DRAM (MT48LC16M16A2)组成 32 位总线宽度构成 64MB32bit 的 SDRAM,供系统使用。从性能及 板载资源来看它完成胜任于 本 设计。 桂林电子科技大学实训说明书用纸 4 2 C/OS-II 随着嵌入式技术的快速发展,实时多任务操作系统作为一种软件平台已逐步成为国际嵌入式系统的主流,目前世界上已经有一大批成熟的实时嵌入式操作系统,通常,对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前,实时操作系统很多,如 VxWorks, WindowsCE, pSOS, QNX, LynxOS 等,这些操作系统都具有高可靠性、强实时性等特点,但他们都是
18、商业操作系统,价格昂贵,人们往往很难接受, C/OS-操作系统的出现是对这些商业操作系统的一个很大的冲击。C/OS-是源码公开的实时操作系统,是一个自由操作系统。程序开发人员可以改写源代码,使之符合自己的要求,裁减掉不需要的部分,使操作系统变得小巧、灵活、并且能满足用户特定操作系统的需要。为了提高系统的实时能力, C/OS-可以将一个复杂的应用划分为多个相互独立的任务,并根据任务的重要性来分配优 先级。任务的调度完全由 C/OS-的实时内核完成,主要包括任务的状态管理、选择最高优先级的任务、执行任务和撤销任务等, C/OS-内核还负责 CPU 时间分配, CPU 时间总是优先分配给中断事件,其
19、次是任务队列中当前优先级最高的任务,不同任务间的通信可以通过C/OS-提供的信号量、邮箱、信息队列等机制完成,他的绝大部分代码是用 C 语言编写的,可移植性强,因此 1997 年以后,在国际上逐渐被广泛采用。 2.1 C/OS-II 分析 实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。有两种类型的实时系 统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成。 在硬实时系统中,各任务不仅要执行无误而且要做到准时。大多数实时系统是二者的结合。实时系统的应用涵盖广泛的领域,而多数实时系统又是嵌入式的。这意味着计算机
20、建在系统内部,用户看不到有个计算机在系统里面。以下是一些嵌入式系统的例子: 实时应用软件的设计一般比非实时应 用软件设计难。 不复杂的小系统一般设计成如 过程控制 : 药品加工 化工厂 汽车业 : 发动机控制 防抱死系统 (ABS) 通讯类 : Switch Hurb 路由器 机器人 : 航空航天 飞机管理系统 桂林电子科技大学实训说明书用纸 5 图 2.1 ucosii 工作原理简图 上图所示的那样 时间相关性很强的关 键操作 (Criticaloperation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差。这个指标称作任务级响应时间。最坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能确定的。进而,如果程序修改了,循环的时序也会受到影响。