1、大庆师范学院本科毕业论文(设计) 大庆师范学院 本科生毕业论文 基于 ARM9的 C/OS- 嵌入式系统移植 院 (系) 物理与电气信息工程 专 业 电子信息工程 研 究 方 向 嵌入式 技术 学 生 姓 名 钮佳楠 学 号 200901071677 指导教师姓名 成宝芝 指导教师职称 讲师 2013 年 5 月 15 日大庆师范学院本科毕业论文(设计) I 摘 要 随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。由于嵌入式设备的智能型,使得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。本文通过 ADS1.2和JLink的软件平台,以及芯片为
2、 S3C2440的 ARM9开发板,成功进行微型嵌入式操作系统 C/OS- 在开发板上的移植。在此过程中对于 C/OS- 进行了较为全面的学习,对于移植操作也有了深刻的认识。 关键词 : C/OS- ; Arm9;移植 大庆师范学院本科毕业论文(设计) II Abstract With the development of computer and electronic technology, more and more embedded in peoples daily life and industrial production. Intelligent embedded devices,
3、 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 transplantatio
4、n. 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 大庆师范学院本科毕业论文(设计) III 目 录 第一章 嵌入式系统基础 . 1 1.1 嵌入式系统概述 . 1 1.2 嵌入式体系硬件基础 . 1 1.3 嵌入式体系软件基础 . 2 第二章 C/OS-II 介绍 . 3 第三章 ARM9 介绍 . 4 第四章 C/OS- 在
5、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 附 录 . 21 OS_CPU.H 文件函数: . 21 OS_CPU_A.ASM 文件函数
6、. 21 大庆师范学院本科毕业论文(设计) 1 第一章 嵌入式系统基础 1.1 嵌入式系统概述 与一般的计算 机系统不同,嵌入式系统的功能性、可靠性和安全性以及成本、体积、功耗都有严格的要求,并且在以应用为中心的前提下,能够进行软硬件的裁剪。一般嵌入式系统的组成包括以下部分: 1. 嵌入式的微处理器 2. 硬件设备(外围) 3. 嵌入式的操作系统 4. 特定应用程序 嵌入式系统包含以下的特点: 1. 特定且广泛的应用 2. 密集的技术、知识、资金 3. 高效性 4. 较长生命周期 5. 高可靠性 6. 软硬件集于一体,以软件为主 嵌入式系统的应用领域十分广泛,主要包括交通管理、机器人、军事电子
7、、通信设备、网络设备、医疗仪器、环境监测、汽车电子、工控设备等。 嵌入式系统从上世 纪 60 年代中期开始,从无操作系统、简单操作系统、实时操作系统直至今日面向 Intenet 的阶段,历经 50 多年。嵌入式因为广泛应用性,巨大的创业型和广阔市场性,走进了千家万户。 1.2 嵌入式体系硬件基础 嵌入式系统的硬件核心是嵌入式微处理器,另外包括总线、存储器、输入 /输出接口和设备。 1. 微处理器:至少包含一个微处理器,采用的体系结构是冯诺依曼或哈佛结构。 2. 存储器:包括主存和外存。主存用于存数代码和数据;外存存放各种信息。 3. 总线:种类随处理器的不同而不同,有些处理器总线 32 位,有
8、些则是 26 位的。 4. 输入 /输出接口 和设备:包含了串并口、中断处理器和 DMA 等设备。 大庆师范学院本科毕业论文(设计) 2 1.3 嵌入式体系软件基础 同 WINDOWS 类似,嵌入式软件系统一般由操作系统( RTOS)、图形界面( GUI)、网络以及一些通用的模块组成。 随着科技和技术的发展,已经推出了嵌入式产品的成功应用,且从单功能向专业化发展。在除了任务调度,同步机制的一些基本功能外,嵌入式系统还具备有以下优点: 1. 可装载卸载性。开放性、可伸缩性体系结构。 2. 极强的实时性。 EOS 实时性较强,可用于各种设备的控制当中。 3. 统一的接口。提供了各种设备驱动接口。
9、4. 方便操作、简单、提供图形 GUI,图形的界面,追求的是易学易用性。 5. 强大的网络支持功能,提供各种网络协议的接口。强稳定性和弱交互性。 6. 固化的代码,系统和应用软件固化在 ROM 中。 7. 更好的适应硬件,具有良好的移植性。大庆师范学院本科毕业论文(设计) 3 第二章 C/OS-II 介绍 Real Time Operating System,简称 RTOS,是实时操作系统的英文缩写。所谓实时,就是在外界中断或事件发生的时候,能够快速接受并进行处理,同时在规定时间内控制相应的过程作出响应。 20 世纪 90 年代初期,美国人 Jean J.Labrosse 在 Embedded
10、 SystemProgramming杂志上最先发表了 RTOS,名为 C/OS,从而为实时操作系统掀开了崭新的篇章。微型内核的 C/OS源码开发,稳定性强,作为 C/OS升级版本的 C/OS-II,主要有ANSI C,以及少量的汇编代码构成,全部代码不超过 5000 行,正因为占用空间的小巧,结构的简洁,基于实时性强的优点, C/OS-II 能在多重不同位数的处理器上运行。大到航空航天,小至手持设备, C/OS-II 已经成功应用诸多领域,为人们的生活带来了极大的便利。 C/OS-II 体系结构如图 2.1 所示 图 2.1 C/OS-II 体系结构大庆师范学院本科毕业论文(设计) 4 第三章
11、 ARM9 介绍 ARM9 是 32 位通用微处理器 ARM( Advanced RISC Machine)家族中的一员,具有比较低的电源消耗和良好的性价比,由此广泛应用于工业生产和日常生活中。基于 RISC(精简指令)的结构,较微程序的控制复杂指令系统的计算机相对简单,使得它用有较高的中断响应和指令处理的能力。 ARM9 的指令集共包含了 11 种基本类型: 1. 桶式的移位器及乘法器和偏上算术的逻辑单元(两种); 2. 指令控制数据传送 :用在弹性地址,高速内容切换,和交换数据(三种); 3. 控制流程和特权级执行的指令(三种); 4. 专门用在能够扩展到片外的协处理器中(三种)。 ARM
12、9 的指令集比较适用不同的高级语言编译器,但需要临界代码段,汇编语言编程也比较简单,不像其它的需要复杂的编译器来管理指令。 ARM9 的流水线技术可以连续运行指令的处理和系统存储的各个部分。 在存储的系统中, ARM9 存储接口的设计能够以低代价发挥最大限度性能。 ARM9 有 32 位地址总线,也可以配制成 26 位的地址线,使早期版本的处理器能够被它兼容。 全静态 CMOS 的 ARM9,允许时钟停止循环,并保存当前状态。 基于上述的优势, ARM9 适用于一些需要紧凑且功能强大的 RISC 处理器系统,包括电子通讯、数据通信、信息存储、图像处理、 JOEG 控制器等,为人们的日常生活和工
13、业生产带来了极大的便利。大庆师范学院本科毕业论文(设计) 5 第四章 C/OS- 在 S3C2440 上的移植 4.1 移植环境简介 保证一个系统的内核保证能够在多个微处理器或微控制器上,同时保持了它的实时性和稳定性操作过程,就是移植。本文硬件平台选择的是 S3C2440 芯片,软件开发环境应用 ADS1.2,再通过 JLink-H 进行调试,基本满足了移 植的需求。 ARM9 的 S3C2440,能够在 ARM920T 核心的基础上,对系统内存进行高效的管理;基于 ARBA 总线和哈佛结构高速缓冲,使其具备了独立的 16KB 指令和数据高速缓存的体系结构。 4.2 移植条件 由于 CPU 版
14、本的不同, C/OS-II 可能会出现不兼容的问题,这时需要对操作系统进行移植,使它能够在使用的 CPU 上运行。在 C/OS-II 移植必须满足以下要求: 1. 处理器的 C 编译器可产生可重入代码; 2. 进入和退出临界区代码用 C 进行调用; 3. 处理器必须支持具有定时中断源的硬件中断处理器必须能够容纳 一定的数据硬件堆栈; 4. 处理器需要有交换数据的指令,使其能够在 CPU 的寄存器和内核及堆栈间进行数据的交换。 4.3 移植内容 针对 C/OS- 的移植操作看似复杂,其实过程并不困难,在理解处理器位数和操作系统位数的前提下,只需要改写几个与处理器硬件相关的函数就能够保证移植操作的
15、成功。一般而言, C/OS- 的移植工作只需要做到以下几点: 1. 用 #define 设置一些常量的值 (OS_CPU.H) 2. 声明 10 个指定的数据类型 (OS_CPU.H) 3. 用 #define 声明 2 个宏 (OS_CPU.H) 4. 用 C 语言编写 6 个简单函数 (OS_CPU_C.C) 5. 根据硬件编写了 4 个函数 (OS_CPU_ A.ASM) 4.3.1 INCLUDES.H 在移植初期,需要写入一个被包含在所有 .C 文件中的头文件,其中包含了可能用到的头文件和一些可能与实际应用不相关的头文件。由于头文件的增加,导致了大庆师范学院本科毕业论文(设计) 6
16、编译时间变长,但是避免了在编译过程中头文件丢失的风险,大大增强了移植性。由于 includes.h文件,我们在增加需要的头文件时,只需写入这个头文件中即可。为了避免在编译过程中将已编译的内容重新编译,必须把需要增加的头文件加在includes.h列表的最后。 4.3.2 OS_CFG.H 内核是一个系统的核心,而 OS_CFG.H 就是用来配置内核的头文件,根据不同的需要和应用,我们可以对内核进行定制和裁剪,从而提高了实时性。 4.3.3 OS_CPU.H OS_CPU.H 文件中主要是用 #define 重新定义一些与处理器相关的常量,宏和数据类型。 众所周知,处理器有 8 位到 64 位甚
17、至 128 之分,不同的处理器对应操作系统的位数也是不尽相同,否则会发生无法兼容的问题,在 C 中使用频繁的 short(短整),int(整型)和 long(长整)等数据类型,在 C/OS- 是不使用的。所以为了能够与处理器的字长相匹配,需要对 C/OS- 中的数据类型进行重新的定义。 在任何的操作系统中,中断都是必不可少的,否则在更高优先级的任务发生时,无法对其进行处理,可能导致系统的崩溃。 C/OS- 在访问临界代码段的时候需要将中断禁止,并且在代码段访问完毕之后重新置中断为允许状态,所以 C/OS- 中有 两 个 宏 对 中 断 进 行 禁 止 和 允 许 : OS_ENTER_CRIT
18、ICAL() 和OS_EXIT_CRITICAL()。 不同的处理器的堆栈生长方式不同,在移植过程中需要对堆栈生产方式进行改变, C/OS- 定义了结构常量 OS_STK_GROWTH,将其置 1 时生长方式是从上往下,置 0 则相反。 在执行中断,或者任务优先级变化的时候,需要任务的切换(低任务优先级级到最高优先级任务)。任务切换简而言之就是将当前任务的寄存器和状态字保存到堆栈中并把更高优先级任务从堆栈中恢复出来。在任务切换的时候就需要调用OS_TASK_SW()宏,在移植过程中需要对这个宏进行定义。 4.3.4 OS_CPU_C.C C/OS- 的移植中需要用 C 语言编写六个简单的函数: 1. OSTaskStkInit()