嵌入式操作系统原理及应用
2012-6
严海蓉 电子工业出版社 (2012-06出版)
严海蓉
232
无
嵌入式系统与计算机系统的起源一样久远,由于嵌入式系统的硬件形形色色,软件也带着各个行业的不同特点,因此一直没有像计算机系统一样被大众普遍认识。尤其是嵌入式操作系统虽然也风风雨雨发展了很多年,但是由于应用的范围比计算机操作系统小,因此也不被大众所了解。 可是随着计算机系统发展受到了固有统一形态的限制,嵌入式系统在近几个世纪呈现出了蓬勃的发展势头。随着物联网的概念出现,嵌入式系统将成为这一轮科技革命的主力军。 嵌入式操作系统也随着要求软件的编写更加简单和实现多硬件平台的可跨越而逐渐成熟起来。 从想开设嵌入式操作系统的课程时苦寻教材而不见,到萌发了自己编写一本专门介绍嵌入式操作系统原理的教材的思想,不过一两年时间。在和学生们的探讨中,感到必须编写一本高水平的、内容新颖全面的教材,用于指导学生的学习。 本书重点讲述嵌入式操作系统原理,尤其是不同于计算机操作系统的一些原理。另外,由于有些嵌入式系统的规模较小,需要自己编写操作系统,因此侧重于介绍怎样编写嵌入式操作系统内核。同时,本书介绍了uCOS2在Xilinx FPGA 上的移植,让读者了解如何移植一个已有的嵌入式操作系统去某一个硬件平台。最后还介绍了各种常用的嵌入式操作系统,包括Linux、uClinux、Andriod、Windows CE等。这些常用的嵌入式操作系统的介绍,主要以编写某设备驱动为主线,让读者大略了解一个嵌入式操作系统的组织。 本书内容可分为两大部分。 第1~10章为第一部分,属于嵌入式操作系统原理。其中,第1章介绍嵌入式操作系统基础知识,如嵌入式操作系统的发展历史、分类、编写方式。第2章详细介绍本书嵌入式操作系统实验的运行平台,包括uCOS2和Xilinx公司的FPGA平台,以及uCOS2在FPGA平台上的移植,让读者体会嵌入式操作系统的具体硬件接口设计。第3章介绍嵌入式操作系统的体系结构和基本概念。第4章详细介绍嵌入式操作系统的构成元素——各种常用数据结构和其在嵌入式操作系统中的使用方式。第5章详细介绍嵌入式操作系统的一般启动方式,包括bootloader的编写方式,uCOS2、uClinux的启动方式和用到的数据结构。第6章详细介绍任务管理的各个组成模块及其实现方式。第7章详细介绍嵌入式操作系统中资源管理的各种方式及实现方式,并通过对uCOS2的改造,讲述如何在已有嵌入式操作系统中实现所需要功能模块做扩展。第8章详细介绍任务间通信方式及其实现。第9章详细介绍内存管理方式及其实现。第10章详细介绍中断与异步通信的方式及其实现。 第11~14章为第二部分,属于常用嵌入式操作系统的介绍和应用。其中,第11章介绍Linux内核及驱动编写。第12章介绍uClinux内核及驱动编写。第13章介绍Android体系结构及蓝牙驱动编写。第14章介绍Windows CE内核及驱动编写。 本书最后还提供了实验指导,供读者参考。 本书内容新颖,立足点高,同时力求重点突出,层次清晰,语言通俗易懂,内容覆盖面广。学习本书需要有一定的C语言阅读能力和硬件的入门知识。本书可作为高等院校本科、研究生各相关专业(如嵌入式系统、物联网、计算机、电子信息、通信)的程序设计教材,也适合于程序开发人员培训、广大嵌入式系统技术爱好者自学使用。 根据我们的教学体会,本书的教学可以安排为32~48学时。如果安排的学时较少,可以根据学生的水平适当删减第二部分的内容。 本书提供的实验实例全部在目标硬件上调试通过。 尽管我们在写作过程中投入了大量的时间和精力,但由于水平有限,错误和不足之处仍在所难免,敬请读者批评指正。我们会在适当时间对本书进行修订和补充。 本书第2章及实验指导由张川同学编写,第11章由陈连升同学组织内容,第13章由丁亚周同学组织部分内容,全书的实验要感谢Digilent公司的赵峰经理和戴硕先生。Digilent公司的赵峰经理审阅了本书并提供了宝贵的修改意见,Xilinx公司的谢凯年经理对本书结构提出了许多宝贵意见,在此一并表示感谢。还要感谢北京工业大学嵌入式系统与软件系的全体师生,本书的最终出版得到了他们的帮助。北京工业大学研究生教材建设基金对本书的编写进行了资助。最后还要感谢我的家人对我的支持,感谢电子出版社的董亚峰编辑为本书的编写和出版付出的辛勤劳动,以及感谢张杰、武翠梅同学的帮助。 严海蓉 2012年2月 于北京工业大学
《普通高等“十二五”规划教材·电子信息科学与工程类专业规划教材:嵌入式操作系统原理及应用》重点讲述嵌入式操作系统原理及应用。全书共分14章,包括嵌入式操作系统基础知识,μCOS-Ⅱ在FPGA平台上的移植,嵌入式操作系统的构成元素,嵌入式操作系统一般的启动方式,任务管理的各个组成模块及其实现方式,任务间通信方式及其实现,内存管理方式及其实现,中断与异步通信的方式及其实现,Linux内核及驱动编写,μClinux内核及驱动编写,Android体系结构及蓝牙驱动编写,Windows CE内核及驱动编写等内容。《普通高等“十二五”规划教材·电子信息科学与工程类专业规划教材:嵌入式操作系统原理及应用》最后还提供了实验指导,供读者参考。
第1章 绪论 11.1 嵌入式操作系统发展历史 11.2 嵌入式操作系统分类 21.3 嵌入式操作系统的组成 31.4 目前主流嵌入式操作系统概述 41.5 嵌入式操作系统的发展趋势 51.6 编写嵌入式操作系统的方法 6习题 7第2章 嵌入式操作系统的运行环境 82.1 运行平台介绍 82.2 嵌入式操作系统文件构成与接口定义 112.3 嵌入式操作系统下载与运行 13第3章 嵌入式操作系统 143.1 嵌入式操作系统的定义 143.2 嵌入式操作系统的体系结构 143.2.1 整体型 143.2.2 层次型 153.2.3 微内核 163.2.4 客户-服务器 163.3 嵌入式操作系统组成要素及概念 17习题 20第4章 嵌入式操作系统常用数据结构 214.1 数组 214.2 指针 224.3 结构体 224.4 链表 234.5 差分链表 294.6 树 304.7 位图 314.8 文件 324.9 内核线程 34习题 36第5章 嵌入式操作系统初始化 375.1 bootloader 375.1.1 bootloader装在哪里 375.1.2 bootloader的启动过程 375.1.3 基于MicroBlaze软核处理器的bootloader设计 465.2 嵌入式操作系统初始化数据结构及主要操作 485.2.1 uCOS主要数据结构及操作 485.2.2 uCOS系统初始化 525.2.3 uClinux的系统初始化 54习题 56第6章 任务管理 576.1 任务和任务优先级 576.2 任务状态 586.3 任务控制块链 596.4 任务的生成 596.5 任务的挂起 636.6 任务的唤醒 646.7 任务的删除 656.8 任务调度 676.9 任务编程 69习题 73第7章 资源管理 747.1 资源共享、互斥和任务同步 747.2 临界区 747.3 信号量 767.4 信号量的使用 817.5 优先级反转 847.6 优先级继承协议 857.7 在uCOS2上实现优先级继承协议 867.8 优先级天花板协议 887.9 在uCOS2上扩展优先级天花板协议 91习题 94第8章 任务间通信 958.1 通信实现的基本数据结构 968.2 信号量——资源 1018.3 消息队列 1028.4 邮箱 1078.5 管道 1108.7 事件集 112习题 120第9章 内存管理 1219.1 内存保护 1219.2 内存管理机制 1229.2.1 固定大小存储区管理 1229.2.2 可变大小存储区管理 1239.2.3 uCOS实现内存管理的方式 1269.2.4 Linux的内存机制 1359.2.5 uClinux下虚拟内存机制的屏蔽 137习题 137第10章 中断与异步信号 13810.1 中断 13810.2 中断向量表 13810.3 中断处理过程 14010.3.1 中断检测 14110.3.2 中断响应 14510.3.3 中断处理 14510.3.4 MicroBlaze中断管理 14710.3.5 uCOS2中断服务程序实现 15210.4 时钟中断和时钟管理 15410.5 软中断 15810.6 异步信号系统 16210.7 中断性能评价指标 163习题 166第11章 Linux 16711.1 Linux内核 16711.2 Linux文件结构模型 16911.3 Linux驱动编写 17711.4 Linux驱动的编写实例——字符设备驱动 17811.4.1 字符设备驱动原理分析 17911.4.2 字符设备驱动数据结构 18011.4.3 字符设备驱动的编写步骤 18211.4.4 驱动程序的编译与装载 186第12章 uClinux 18812.1 uClinux内核 18812.2 uClinux移植 18912.3 uClinux驱动编写 189第13章 Android 19413.1 Android系统构架 19413.2 Android SDK开发环境 19613.3 Android平台开发环境搭建 19713.4 Andriod蓝牙驱动编写 19913.5 Android平台蓝牙编程 202第14章 Windows CE 20414.1 内核与驱动 20514.2 Windows CE系统驱动简介 20614.3 Windows CE驱动程序实例 209实验指导 213实验一 移植uCOS2到FPGA上 213实验二 任务的建立与多任务的执行 220实验三 系统中断机制的建立与使用 220实验四 蓄水池综合实验 221
版权页:插图:3.3嵌入式操作系统组成要素及概念 嵌入式操作系统虽然各有不同,但是基本来讲,都是针对各类硬件资源管理的,包括针对分享MCU的任务管理、消息机制、同步机制等,针对接口硬件的中断处理,针对内存的内存管理、文件管理,针对网络的网络支持、网络管理等。在深入学习嵌入式操作系统之前,先介绍嵌入式操作系统组成要素及其概念,如任务、实时、内核、调度等。1.任务任务是一个抽象的概念,进程和线程都只是任务的一个特例。简单而言,嵌入式操作系统中的任务是一段无限循环的代码,在这段代码执行的过程中有相应的堆栈、内存的分配。每种特定的嵌入式操作系统都有自己的描述单位。例如,Windows CE中以进程为基本单位来描述资源,每个进程一旦运行,操作系统要为其开辟相应的内存空间,供其进行临时数据存储等操作。线程则被MCU实际调度,是调度的实体。一个进程创建之后,同时将创建一个主线程。可以在主线程中创建该进程的其他线程。进程可以被视为线程的容器。一个线程默认的栈大小为64KB,也可以在创建线程的时候自定义栈的大小。同一个进程中,一个线程分配的内存,可以被其他线程所访问。不同进程中的线程如要互相访问,则需要通过进程间通信来处理。在Symbian操作系统中,每个进程都有一个或多个线程。线程是执行的基本单位。Linux中线程和进程则更加含混,都使用任务这个结构来描述。比较线程和进程,总的来说,进程的描述粒度较大,涉及内存空间的划分,不涉及具体微处理器的寄存器等,离硬件的距离比线程远。线程在运行时涉及具体寄存器等保存和上下文环境切换,由微处理器进行调度,与微处理器的资源联系紧密。图3.7(a)是单线程进程的内存运行模式,图3.7(b)是多线程进程的内存运行模式。在图中,每个线程都拥有自己的寄存器和堆栈,而每个进程只拥有自己的代码、数据和文件。
《普通高等教育"十二五"规划教材•电子信息科学与工程类专业规划教材:嵌入式操作系统原理及应用》是由电子工业出版社出版。
无