嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版

编辑点评:高等院校计算机、电子技术、自动化技术、仪器仪表等信息类专业的教材

详细地介绍了嵌入式实时操作系结μC/OS-II内核的任务管理和调度、系统时钟和节拍服务、时间管理、中断、任务的通信和同步、内存的简单管理原理,同时给出了大量的实例以帮助读者学习和理解,最后,还介绍了μC/OS-II的移植方法。

嵌入式实时操作系统μC/OS-II电子版图片预览

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(1)

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(2)

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(3)

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(4)

目录大全

第1章 嵌入式实时操作系统的基本概念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/OSII简介12 

1.4 小结13 

1.5 练习题13 

第2章 预备知识14 

2.1 开发工具14 

2.1.1 Borland C 3.1及其精简版14 

2.1.2 多文件程序的编译和连接19 

2.2 工程管理工具make及makefile22 

2.3 复杂工程项目的管理30 

2.3.1 批处理文件与makefile的综合使用30 

2.3.2 复杂工程管理示例31 

2.4 常用数据结构35 

2.4.1 程序控制块35 

2.4.2 控制块的组织——链表39 

2.4.3 位图40 

2.5 小结40 

2.6 练习题41 

第3章 μC/OS-II中的任务42 

3.1 任务的基本概念42 

3.1.1 任务及其内存结构42

μC/OS-II的任务就是一个线程。

任务由任务控制块(保存任务属性)、任务堆栈(保存任务工作环境)、任务程序代码等三部分组成。

任务三要素:

1、任务代码(程序)——–功能部分(μC/OS-II任务的代码是可以带有临界段的无限循环。)

2、任务的私有堆栈(用以保护运行环境)——–对应”物理寄存器”

3、任务控制块(提供私有堆栈也是虚拟处理器的位置)—–主要包括栈顶指针,用于链表的前后链接指针,延时时间OSTCBDly,任务状态OSTCBStat;任务优先级OSTCBPrio。

3.1.2 任务的状态44

睡眠、就绪、运行、等待、中断服务等5个状态。 

3.1.3 用户任务代码的一般结构45

任务不是被主函数或其它函数调用的,主函数只负责创建和启动任务,而是由操作系统来调度运行任务。 

3.1.4 系统任务46

系统任务(空闲任务、统计任务)

1、空闲任务(只是做了一个计数工作)———–μC/OS-II规定,一个用户应用程序必须使用这个空闲任务,而且这个任务是不能用软件来删除的(使用最低优先级)。

2、统计任务OSTaskStat( ):统计任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage中,以便应用程序通过访问它来了解CPU的利用率(次最低优先级)。

3.1.5 任务的优先权及优先级别48

用户的优先级,0为最高,每个任务的优先级别都是唯一的。 

3.2 任务堆栈48 

3.2.1 任务堆栈的创建49

 typedef unsigned int OS_STK;//16位

定义一个OS_STK类型的数组,就完成了任务堆栈的创建。

注意检查处理器对堆栈增长方向的支持是向上或向下。

3.2.2 任务堆栈的初始化51

应用程序在 

3.3 任务控制块及其链表52

uc-os中用来记录任务的堆栈指针、任务的当前状态、任务的优先级等一些与任务管理的属性的表叫任务控制块。OS_TCB。 

3.3.1 任务控制块结构52 

3.3.2 任务控制块链表53 

3.3.3 任务控制块的初始化55 

3.4 任务就绪表及任务调度56

任务就绪表OSRdyTbl[]表示组(数组);OSRdyGrp表示组别(数组那些组有task就绪),从0到255:

即OSRdyTbl表示一个有八个元素的数组,每个元素的值为8位二进制数(INT8U),每一位表示一个优先级—-数组共有64个二进制位,表示64个优先级。

OSRdyGrp

OSTCBBitY保存的是组别,OSTCBBitX保存的是组内的偏移。

OSMapTbl:用于查找组别及在组内的偏移。

OSUnMapTbl:用于查找哪个组优先级最高及组内哪位(即task)优先级最高。

3.4.1 任务就绪表结构56 

3.4.2 对任务就绪表的操作58 

3.4.3 任务调度59

3.5 任务的创建65 

3.5.1 用函数OSTaskCreate()创建任务65

3.5.2 用函数OSTaskCreateExt()创建任务67 

3.5.3 创建任务的一般方法67 

3.6 任务的挂起和恢复74 

3.6.1 挂起任务74 

3.6.2 恢复任务74 

3.7 其他任务管理函数80 

3.7.1 任务优先级别的修改80 

3.7.2 任务的删除81 

3.7.3 查询任务的信息87 

3.8 μC/OSII的初始化和任务的启动87 

3.8.1 μC/OSII的初始化87 

3.8.2 μC/OSII的启动89 

3.9 小结91 

3.10 练习题92 

第4章 μC/OSII的中断和时钟93 

4.1 μC/OSII的中断93 

4.1.1 μC/OSII的中断过程93 

4.1.2 中断级任务切换函数97 

4.1.3 应用程序中的临界段97 

4.2 μC/OSII的时钟99 

4.3 时间管理106 

4.3.1 任务的延时106 

4.3.2 取消任务的延时107 

4.3.3 获取和设置系统时间112 

4.4 小结114 

4.5 练习题115 

第5章 任务的同步与通信116 

5.1 任务的同步和事件116 

5.1.1任务间的同步116 

5.1.2事件117 

5.2 事件控制块及事件处理函数129 

5.2.1 事件控制块的结构129 

5.2.2 操作事件控制块的函数131 

5.2.3 空事件控制块链表133 

5.3 信号量及其操作134 

5.3.1信号量134 

5.3.2信号量的操作135 

5.4 互斥型信号量和任务优先级反转144 

5.4.1任务优先级的反转现象145 

5.4.2互斥型信号量150 

5.5消息邮箱及其操作153 

5.5.1消息邮箱153 

5.5.2消息邮箱的操作154 

5.6 消息队列及其操作159 

5.6.1消息队列159 

5.6.2消息队列的操作162 

5.7小结168 

5.8练习题169 

第6章 信号量集170 

6.1信号量集的结构170 

6.1.1基本概念170 

6.1.2信号量集的结构171 

6.1.3 对等待任务链表的操作175 

6.1.4 空标志组链表175 

6.2 信号量集的操作176 

6.2.1创建信号量集176 

6.2.2 请求信号量集178 

6.2.3 向信号量集发送信号178 

6.2.4 查询信号量集的状态184 

6.2.5 删除信号量集187 

6.3 小结187 

6.4 练习题187 

第7章 动态内存管理188 

7.1 内存控制块188 

7.1.1 可动态分配内存的划分188 

7.1.2 内存控制块OS_MEM的结构189 

7.1.3 空内存控制块链表190 

7.2 动态内存的管理190 

7.2.1 创建动态内存分区191 

7.2.2 请求获得一个内存块193 

7.2.3 释放一个内存块195 

7.2.4 查询一个内存分区的状态199 

7.3 小结204 

7.4 练习题204 

第8章 在51单片机上移植μC/OSII205 

8.1 μC/OSII移植的一般性问题205 

8.1.1 可重入函数的概念205 

8.1.2 时钟节拍的产生206 

8.1.3 任务堆栈的设计206 

8.2 在51系列单片机上移植μC/OSII207 

8.2.1 文件OS_CPU.H的修改207 

8.2.2 任务堆栈的设计208 

8.2.3 文件OS_CPU_C.C的修改215 

8.2.4 几点注意事项216 

8.3 应用举例216 

8.3.1 LED数码显示器的驱动程序216 

8.3.2 串行接口的应用218 

8.4 小结226 

8.5 练习题226 

第9章 基于ARM的μC/OSII 227 

9.1 移植规划227 

9.1.1 编译器的选择227 

9.1.2 ARM7工作模式的选择227 

9.2 移植228 

9.2.1 文件OS_CPU.H的编写228 

9.2.2 文件OS_CPU_C.C的编写230 

9.2.3 文件OS_CPU_A.S的编写237 

9.2.4 关于中断及时钟节拍240 

9.3 在LPC2000上移植μC/OSII241 

9.3.1 挂接SWI软件中断242 

9.3.2 中断及时钟节拍中断242 

9.3.3 一个基于μC/OSII和ARM的应用程序实例243 

9.4 小结245 

9.5 练习题245 

第10章 μC/OSII在80×86上的移植246 

10.1 概述246 

10.2 任务切换247 

10.2.1 任务切换函数OSCtxSw()247 

10.2.2 任务切换宏OS_TASK_SW()249 

10.2.3 中断级任务切换函数OSIntCtxSw()250 

10.3 系统时钟251 

10.3.1 PC中DOS的系统时钟251 

10.3.2 PC中μC/OSII的系统时钟251 

10.3.3 μC/OSII系统时钟中断服务程序253 

10.3.4 μC/OSII系统时钟中断向量的安装253 

10.3.5 由μC/OSII返回DOS254 

10.4 小结255 

第11章 μC/OSII可剪裁性的实现 256 

11.1 文件OS_CFG.H中用于系统裁剪的常量256 

11.2 配置常量的解释258 

11.2.1 OS_MAX_EVENTS258 

11.2.2 OS_MAX_MEM_PARTS259 

11.2.3 OS_MAX_QS259 

11.2.4 OS_MAX_MEM_TASKS259 

11.2.5 OS_LOWEST_PRIO259 

11.2.6 OS_TASK_IDLE_STK_SIZE260 

11.2.7 OS_TASK_STAT_EN260 

11.2.8 OS_TASK_STAT_STK_SIZE260 

11.2.9 OS_CPU_HOOKS_EN260 

11.2.10 OS_MBOX_EN261 

11.2.11 OS_MEM_EN261 

11.2.12 OS_Q_EN261 

11.2.13 OS_SEM_EN261 

11.2.14 OS_TASK_CHANGE_PRIO_EN261 

11.2.15 OS_TASK_CREATE_EN261 

11.2.16 OS_TASK_CREATE_EXT_EN262 

11.2.17 OS_TASK_DEL_EN262 

11.2.18 OS_TASK_SUSPEND_EN262 

11.2.19 OS_TICKS_PER_SEC262 

附录A 文件PC.C中的函数 263 

A.1 字符显示函数263 

A.1.1 显示一个字符的函数PC_DispChar263 

A.1.2 清屏幕一列显示的函数PC_DispClrCol263 

A.1.3 清屏幕一行显示的函数PC_DispClrRow263 

A.1.4 清屏函数PC_DispClrScr264 

A.1.5 显示字符串函数PC_DispStr264 

A.1.6 颜色常量的定义264 

A.2 保存和恢复DOS环境的函数265 

A.2.1 保存DOS环境的函数PC_DOSSaveReturn()265 

A.2.2 恢复DOS环境的函数PC_DOSReturn()265 

A.3 设置和获取中断向量的函数265 

A.3.1 设置中断向量的函数PC_VectSet()265 

A.3.2 获取中断向量的函数PC_VectGet()265 

附录B μC/OSII中使用的数据类型 266 

附录C C51开发工具μVision2简介 267 

C.1 C51语言的扩展267 

C.1.1 数据类型267 

C.1.2 存储器类型268 

C.1.3 存储模式269 

C.1.4 指针270 

C.1.5 可重入函数271 

C.1.6 与汇编语言的接口272 

C.1.7 库函数273 

C.2 创建项目273 

C.2.1 启动μVision2并创建一个项目273 

C.2.2 新建一个源文件274 

C.2.3 增加和配置初始化代码274 

C.2.4 为目标设置工具选项275 

C.2.5 Build项目并生成HEX文件275 

C.3 常用的菜单选项276 

C.3.1 视图菜单View276 

C.3.2 项目菜单Project276 

C.3.3 调试菜单Debug276 

C.3.4 外围器件菜单Peripherals277 

参考文献278

内容简介

μC/OS-Ⅱ是一个源码开放的嵌入式实时操作系统的内核。本书详细地介绍了嵌入式实时操作系统μC/OS-Ⅱ内核的任务管理和调度、系统时钟和节拍服务、时间管理、中断、任务的通信和同步、内存的简单管理原理,同时给出了大量的实例以帮助读者学习和理解。最后,还介绍了μC/OS-Ⅱ的移植方法。

本书可作为高等院校计算机、电子技术、自动化技术、仪器仪表等相关专业的教材,也可供对嵌入式操作系统感兴趣的工程技术人员参考。

图书亮点

μC/OSII是著名的、源码公开的实时内核,是专为嵌入式应用设计的,可用于各类8位、16位和32位单片机或DSP。从μC/OS算起,该内核已有10余年应用史,在诸多领域得到了广泛应用.本书是MicroC/OSII The Real Time Kernel一书的第2版本,在第1版本(V2.0)基础上做了重大改进与升级。通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码.本书可用做高等院校嵌入式实时系统课程教材或工程师培训教材,也可供嵌入式应用。

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版截图

嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(5)嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(6)嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(7)嵌入式实时操作系统μC/OS-II原理及应用第2版pdf免费版插图(8)

评分及评论

无用户评分

来评个分数吧

  • 5 分
    0
  • 4 分
    0
  • 3 分
    0
  • 2 分
    0
  • 1 分
    0

Comments