基本信息·出版社:北京航空航天大学出版社 ·页码:259 页 ·出版日期:2005年08月 ·ISBN:7810777211 ·条形码:9787810777216 ·版本:第1版 ·装帧: ...
商家名称 |
信用等级 |
购买信息 |
订购本书 |
|
|
嵌入式实时操作系统μC/OS-2原理及应用 |
|
|
|
嵌入式实时操作系统μC/OS-2原理及应用 |
|
基本信息·出版社:北京航空航天大学出版社
·页码:259 页
·出版日期:2005年08月
·ISBN:7810777211
·条形码:9787810777216
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:高等院校通用教材
内容简介 《嵌入式实时操作系统μC\OS-2原理及应用》可作为高等院校计算机、电子技术、自动化技术、仪器仪表等信息类专业的教材,也可供对嵌入式操作系统感兴趣的工程技术人员参考。μC/OS-2是一个源码开放的嵌入式实时操作系统内核。《嵌入式实时操作系统μC\OS-2原理及应用》详细介绍了式实时操作系统μC/OS-2内核任务管理和调度、系统时钟和节拍服务、时间管理、中断、任务的通信和同步、内在的简单管理原理,同时给出了大量的实例以帮助读者学习和理解。
最后,以在51单片机和ARM上移植μC/OS-2了移植方法。
目录 第1章 嵌入式实时操作系统的基本概念
1.1 计算机操作系统1
1.1.1 什么是计算机操作系统1
1.1.2 操作系统的作用和功能2
1.2 嵌入式系统和嵌入式操作系统3
1.2.1 嵌入式系统的基本概念4
1.2.2 嵌入式操作系统7
1.2.3 实时操作系统需要满足的条件9
1.2.4 嵌入式系统的任务及嵌入式实时操作系统11
1.3 嵌入式实时操作系统μC/OS-II简介12
1.4 小结13
1.5 练习题14
第2章 μC/OS-II中的任务
2.1 任务的基本概念15
2.1.1 任务的状态17
2.1.2 用户任务代码的一般结构18
2.1.3 系统任务20
2.1.4 任务的优先权及优先级别21
2.2 任务堆栈21
2.2.1 任务堆栈的创建22
2.2.2 任务堆栈的初始化24
2.3 任务控制块及任务控制块链表25
2.3.1 任务控制块的结构25
2.3.2 任务控制块链表26
2.3.3 任务控制块的初始化28
2.4 任务就绪表及任务调度29
2.4.1 任务就绪表的结构29
2.4.2 对任务就绪表的操作31
2.4.3 任务的调度32
2.5 任务的创建37
2.5.1 用函数OSTaskCreate()创建任务37
2.5.2 用函数OSTaskCreateExt()创建任务39
2.5.3 创建任务的一般方法39
2.6 任务的挂起和恢复46
2.6.1 挂起任务46
2.6.2 恢复任务47
2.7 其他任务管理函数53
2.7.1 任务优先级别的修改53
2.7.2 任务的删除53
2.7.3 查询任务的信息60
2.8 μC/OS-II的初始化和任务的启动60
2.8.1 μC/OS-II的初始化60
2.8.2 μC/OS-II的启动62
2.9 一个示例64
2.10 小结72
2.11 练习题73
第3章 μC/OS-II的中断和时钟
3.1 μC/OS-II的中断74
3.1.1 μC/OS-II的中断过程74
3.1.2 中断级任务切换函数78
3.1.3 应用程序中的临界段78
3.2 μC/OS-II的时钟80
3.3 时间管理88
3.3.1 任务的延时88
3.3.2 取消任务的延时89
3.3.3 获取和设置系统时间93
3.4 小结96
3.5 练习题97
第4章 任务的同步与通信
4.1 任务间的同步和事件控制块98
4.1.1 任务间的同步98
4.1.2 事件99
4.1.3 事件控制块112
4.1.4 操作事件控制块的函数113
4.1.5 空事件控制块链表115
4.2 信号量及其操作115
4.2.1 信号量115
4.2.2 信号量的操作116
4.3 互斥型信号量和任务优先级反转124
4.3.1 任务优先级的反转现象124
4.3.2 互斥型信号量130
4.4 消息邮箱及其操作133
4.4.1 消息邮箱133
4.4.2 消息邮箱的操作133
4.5 消息队列及其操作139
4.5.1 消息队列139
4.5.2 消息队列的操作142
4.6 小结148
4.7 练习题149
第5章 信号量集
5.1 信号量集的结构150
5.1.1 信号量集的标志组150
5.1.2 等待任务链表152
5.1.3 对等待任务链表的操作154
5.2 信号量集的操作155
5.2.1 创建信号量集155
5.2.2 请求信号量集156
5.2.3 向信号量集发信号157
5.2.4 查询信号量集的状态163
5.2.5 删除信号量集166
5.3 小结167
5.4 练习题167
第6章 内存的动态分配
6.1 内存控制块168
6.1.1 可动态分配内存的划分168
6.1.2 内存控制块OS_MEM的结构169
6.1.3 空内存控制块链表170
6.2 动态内存的管理170
6.2.1 创建动态内存分区171
6.2.2 请求获得一个内存块173
6.2.3 释放一个内存块175
6.2.4 查询一个内存分区的状态179
6.3 小结184
6.4 练习题184
第7章 在51单片机上移植μC/OS-II
7.1 μC/OS-II移植的一般性问题185
7.1.1 可重入函数185
7.1.2 时钟节拍的产生186
7.1.3 任务堆栈的设计186
7.2 在51系列单片机上移植μC/OS-II187
7.2.1 改写文件OS_CPU.H187
7.2.2 任务堆栈的设计188
7.2.3 文件OS_CPU_C.C的改写194
7.2.4 几点必须注意的事项196
7.3 应用举例196
7.3.1 LED数码显示器的驱动程序196
7.3.2 51单片机串行接口的应用198
7.4 小结206
7.5 练习题206
第8章 在ARM7上移植μC/OS-II
8.1 移植规划207
8.1.1 编译器的选择207
8.1.2 ARM7工作模式的选择207
8.2 移植208
8.2.1 文件OS_CPU.H的编写208
8.2.2 文件OS_CPU_C.C的编写210
8.2.3 文件OS_CPU_A.S的编写216
8.2.4 关于中断及时钟节拍219
8.3 移植μC/OSII到LPC2000221
8.3.1 挂接SWI软件中断222
8.3.2 中断及时钟节拍中断222
8.3.3 一个基于μC/OSII和ARM的应用程序实例223
8.4 小结225
8.5 练习题225
第9章 μC/OS-II可剪裁性的实现
9.1 文件OS_CFG.H中用于系统裁剪的常量226
9.2 配置常量的解释228
9.2.1 OS_MAX_EVENTS228
9.2.2 OS_MAX_MEM_PARTS229
9.2.3 OS_MAX_QS229
9.2.4 OS_MAX_MEM_TASKS229
9.2.5 OS_LOWEST_PRIO229
9.2.6 OS_TASK_IDLE_STK_SIZE230
9.2.7 OS_TASK_STAT_EN230
9.2.8 OS_TASK_STAT_STK_SIZE230
9.2.9 OS_CPU_HOOKS_EN230
9.2.10 OS_MBOX_EN231
9.2.11 OS_MEM_EN231
9.2.12 OS_Q_EN231
9.2.13 OS_SEM_EN231
9.2.14 OS_TASK_CHANGE_PRIO_EN231
9.2.15 OS_TASK_CREATE_EN231
9.2.16 OS_TASK_CREATE_EXT_EN232
9.2.17 OS_TASK_DEL_EN232
9.2.18 OS_TASK_SUSPEND_EN232
9.2.19 OS_TICKS_PER_SEC232
附录A文件PC.C中的函数
A.1 字符显示函数233
A.1.1 显示一个字符的函数PC_DispChar()233
A.1.2 清屏幕一列显示的函数PC_DispClrCol()233
A.1.3 清屏幕一行显示的函数PC_DispClrRow()233
A.1.4 清屏函数PC_DispClrScr()234
A.1.5 显示字符串函数PC_DispStr()234
A.1.6 颜色常量的定义234
A.2 保存和恢复DOS环境的函数235
A.2.1 保存DOS环境的函数PC_DOSSaveReturn()235
A.2.2 恢复DOS环境的函数PC_DOSReturn()235
A.3 设置和获取中断向量的函数235
A.3.1 设置中断向量的函数PC_VectSet()235
A.3.2 获取中断向量的函数PC_VectGet()235
附录BμC/OS-II中使用的数据类型
附录CμC/OS-II在80x86上的移植
C.1 任务切换函数OSCtxSw()238
C.1.1 任务切换函数OSCtxSw() 238
C.1.2 任务切换宏OS_TASK_SW()239
C.1.3 中断级任务切换函数OSIntCtxSw()240
C.2 μC/OS-II的系统时钟242
C.2.1 PC中DOS的系统时钟242
C.2.2 PC中μC/OS-II的系统时钟242
C.2.3 μC/OS-II系统时钟中断服务程序244
C.2.4 在任务中安装μC/OS-II系统时钟的中断向量244
C.2.5 在任务中由μC/OS-II返回DOS环境245
附录DC51开发工具μVision2简介
D.1 C51语言的扩展246
D.1.1 数据类型246
D.1.2 存储器类型247
D.1.3 存储模式248
D.1.4 指针248
D.1.5 可重入函数250
D.1.6 与汇编语言的接口251
D.1.7 库函数251
D.2 创建项目252
D.2.1 启动μVision2并创建一个项目252
D.2.2 新建一个源文件252
D.2.3 增加和配置初始化代码253
D.2.4 为目标设置工具选项254
D.2.5 创建项目并生成HEX文件254
D.3 常用的菜单选项254
D.3.1 视图菜单View254
D.3.2 项目菜单Project255
D.3.3 调试菜单Debug255
D.3.4 外围器件菜单Peripherals256
附录EMagicARM2200教学实验开发平台简介
附录F光盘上例题代码的使用方法
F.1 光盘上的文件260
F.2 光盘上的文件使用方法260
参考文献
……
序言 有人说,嵌入式系统的应用和发展是计算机技术自桌面系统和网络技术之后,IT产业和IT技术的又一个新的重大进展。
事实的确如此。就现在的情况来看,在当今人们的生产和生活中,嵌入式系统的应用和影响无处不在。暂且不论火箭、地球卫星、汽车生产线,也不论先进的武器装备系统,就是在日常生活中人们几乎天天离不开的移动电话、空调器、数码相机、洗衣机、电饭锅、电热水器等装置和设备中,都有嵌入式系统暗暗地在发挥着控制作用,从而使这些装置和设备具有了较高的自动化水平,甚至体现出了某种智能性,为人们提供了更为体贴、更为周到的服务。可以期望,就在不远的将来,普通百姓还会用到地球卫星定位系统、高级音像系统、智能可视电话、智能采暖设备、个人医疗保健设备、家用机器人等更为人性化的装置和设备,从而使人们的生活更舒适,工作效率更高。然而,这一切无不依赖于嵌入式系统技术的发展和应用。
众所周知,我国经济建设正处在一个高速发展时期,我国正在成为世界电子制造业的重要基地之一,从而形成了对嵌入式系统技术及相关技术人才的巨大需求。面对这种日益广泛而迫切的需求,各高等院校和培训机构都纷纷开设了与嵌入式系统技术相关的专业和课程,以期学生在校学习期间就能受到嵌入式系统技术方面的教育和训练。
但是,如何进行这方面的工作却遇到了挑战。从目前的情况来看,至少有两个主要的困难:一是不论哪个专业都不可能投入较大量的教学时数来专门用于嵌入式系统的教学;二是掌握嵌入式系统的技术和设计方法对学生的基础要求较高,任何一个专业都不可能以嵌入式系统为培养目标设置该专业的基础课程(至少目前是这样)。因此作者认为,在目前的情况下,嵌入式系统的教学应该依托于各专业的现有课程体系,选准切入点,以学生初步掌握嵌入式系统的基本概念、基本理论、基本应用、基本设计方法和基本特点为教学目标,设置1~2门小型课较为合适。
作为嵌入式系统这种比较特殊的计算机系统,其基本构成仍然是硬件和软件两部分。对于硬件部分的教学,各专业可在原教学内容基础上根据嵌入式系统的硬件特点加以适当的修改和补充(这样不会增加过多的课时)。而软件部分(主要是嵌入式操作系统),作为计算机专业可以把原有的操作系统课程在内容上进行延伸,比如把一个实际的嵌入式操作系统(例如μC/OS-II)当作一个实例来介绍,同时也避免了原来操作系统课程过于空洞的弊端。当然,也可以把嵌入式操作系统单独作为一门小课来讲授。因为计算机专业学生已学过操作系统课程,所以单独设置的这门小课的内容就可以适当丰富一些(比如,μCLinux和μC/OS-II)。由于非计算机专业原来就没有操作系统课程,于是就应该单独设置一门嵌入式操作系统的课程。课程的内容应以系统简单、概念清晰且有较强实用性的嵌入式操作系统为宜。
本书就是为使学生了解和初步掌握嵌入式操作系统特点、体系结构及实际应用而编写的教学用书。
本书的特点及内容如下:
以源码公开的嵌入式实时操作系统μC/OS-II为核心,介绍了嵌入式操作系统在任务、任务的调度和管理、任务之间的通信和同步、内存管理等方面的实现和应用特点。
语言文字通俗易懂,尽量避免了大量程序源代码的剖析讲解,而代之以插图和例题,力求重点突出。
在μC/OS-II系统的移植的讲解方面,尽量避免读者可能不太熟悉的计算机硬件系统,从而冲击读者学习的重点,而以大多数读者都比较了解和熟悉的51系列单片机为硬件系统(尽管μC/OS-II在51单片机上应用有些嫌大),以使读者可以集中精力学习和掌握系统移植方面的知识和方法。另外,鉴于基于ARM核的嵌入式处理器在国内嵌入式系统应用占有相当大的份额,并且发展态势也越来越猛,因此本书也单独用了一章的篇幅介绍了μC/OS-II在ARM上的移植。
由于实验条件的限制,也为了学习操作系统这类软件的方便,大多数读者通常还是要以PC机为学习工具的,因此本书的例题几乎都可在PC机中调试和运行。另外,为了使读者更好地使用例题代码和了解μC/OS-II在PC机中的移植,作者把相关内容作为附录收到本书中。
本书的教学时数以不超过30学时为宜,其中应有6学时左右的实验和8学时左右的大型作业。
本书是为教学目的编写的教材,适用于高等院校计算机技术及应用、自动化、生产过程控制、仪器仪表、电子技术等专业高年级的教学,同时也可用于工程技术人员的自学和培训。
阅读和学习本书的内容,须在C语言程序设计、汇编语言程序设计和微型计算机原理(最好学习过单片机原理)等方面具有一定的基础。
全书共9章。参加本书编写的有房红征、李益民、刘德华、胡晓红和任哲。由任哲担任主编并负责全书的统稿工作。
在本书的策划和编写过程中,得到了很多同仁的关心、指导和帮助。特别是本书有关μC/OS-II移植的第7章和第8章分别采用了杨屹先生和周立功先生的方法和程序代码,另外本书还用到了JeanJ.Labrosse先生书中的部分例题代码。为此,向为本书做过贡献的人们表示衷心的感谢!
由于作者在嵌入式系统知识方面的欠缺,尤其是在嵌入式系统教学经验方面的不足,因此本书无论是在教学内容的选取编排上、例题的选用上,还是对于难点、重点的讲解上,一定会有很多不足甚至错误,在此诚挚希望读者批评指正。作者的电子邮箱为renzhe71@sina.com。另外,对μC/OS-II在51单片机上的移植感兴趣的读者可与杨屹先生沟通探讨,其网址为www.armecos.com,电子邮箱为asdjf@163.com。对μC/OS-II在ARM核上的移植感兴趣的读者可与周立功先生联系,其电子邮箱为zlg3@zlgmcu.com。
文摘 插图: