您好,欢迎来到聚文网。 登录 免费注册
μC/OS-2嵌入式系统设计

μC/OS-2嵌入式系统设计

  • 装帧: 平装
  • 出版社: 机械工业出版社
  • 作者: 丁山 著
  • 出版日期: 2016-08-01
  • 商品条码: 9787111538677
  • 版次: 1
  • 开本: 16开
  • 页数: 332
  • 出版年份: 2016
定价:¥69 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
本书主要介绍基于Cortex—M微控制器的μC/OS—Ⅱ嵌入式系统设计,内容包括:实时操作系统内核基础、任务管理、任务调度、系统启动与初始化、中断和时间管理、事件管理、消息管理、内存管理、移植方式及其在Cortex—M微控制器上的移植方法。很后对轻量级TCP/IP—μC/TCP—IP协议栈设计进行概要介绍。
作者简介
丁山,东北大学计算机科学与工程学院副教授,1989年本科毕业于东北工学院(现东北大学)计算机专业,2003年博士毕业于日本名古屋工业大学电气信息工学专业。主要研究方向是嵌入式与实时系统构成,以及嵌入式与实时调度算法。
目录
前言
第1章 绪论1
1.1 嵌入式实时操作系统概要1
1.2 嵌入式实时操作系统2
1.2.1 体系结构3
1.2.2 功能及特点5
1.2.3 分类介绍7
1.3 嵌入式系统实时性的概念9
1.4 约束条件11
1.4.1 时间约束11
1.4.2 优先约束12
1.4.3 资源约束13
1.5 搭建开发环境14
1.5.1 CCS6.0的安装14
1.5.2 利用CCS6.0新建工程18
本章小结21
练习与思考题21
第2章 嵌入式硬件系统22
2.1 嵌入式系统的硬件构成22
2.2 嵌入式微处理器概述23
2.2.1 嵌入式微处理器的存储体系结构23
2.2.2 嵌入式微处理器的指令集24
2.2.3 主流的嵌入式微处理器25
2.3 总线26
2.4 存储器28
2.5 输入/输出接口和设备28
2.6 ARM系列28
2.6.1 ARM指令集体系结构的演变29
2.6.2 ARM产品系列33
2.7 ARMCortex-M4系列处理器41
2.7.1 ARMCortex-M4处理器的特点41
2.7.2 Cortex-M4处理器的结构42
2.7.3 Cortex-M4的操作模式和特权级别46
2.7.4 Cortex-M4的寄存器组47
2.7.5 Cortex-M4的异常处理51
2.7.6 Cortex-M4的存储器映射55
2.8 TM4C123GH6PM微控制器57
2.8.1 TM4C123GH6PM微控制器的电气特性与封装57
2.8.2 TM4C123GH6PM微控制器的特性58
2.8.3 TM4C123GH6PM微控制器的结构59
2.9 TM4C123GH6PM实验板卡61
2.10 RGBLED点亮实验65
2.10.1 建立新的CCS工程65
2.10.2 源代码解析70
本章小结72
练习与思考题72
第3章 嵌入式实时内核73
3.1 内核概要73
3.1.1 μC/OS-Ⅱ的内核73
3.1.2 调度算法74
3.1.3 不可剥夺型内核74
3.1.4 可剥夺型内核75
3.1.5 数据类型的重定义与宏定义76
3.2 内核功能77
3.2.1 任务管理77
3.2.2 同步与通信管理78
3.2.3 中断管理81
3.2.4 时间管理82
3.2.5 对共享资源的互斥管理83
3.2.6 内存管理84
3.2.7 I/O管理85
3.2.8 出错管理86
3.2.9 用户扩展管理86
3.2.10 电源管理87
3.3 内核性能测试实例87
3.3.1 概述87
3.3.2 中断时序图88
3.3.3 中断延迟时间89
3.3.4 内核最大关中断时间90
3.3.5 中断响应时间92
3.3.6 中断恢复时间95
3.3.7 非屏蔽中断97
3.3.8 中断处理时间98
3.3.9 任务切换时间98
3.3.10 任务响应时间103
3.3.11 系统调用的执行时间103
3.3.12 有关时间确定性的测试104
3.3.13 嵌入式实时内核的存储开销105
本章小结105
练习与思考题106
第4章 任务管理的数据结构107
4.1 任务及其存储结构107
4.2 任务状态108
4.3 任务生成代码实例109
4.4 任务的优先级111
4.5 系统任务111
4.6 任务堆栈115
4.6.1 任务堆栈的创建115
4.6.2 任务堆栈的增长方向115
4.6.3 任务堆栈的初始化116
4.7 任务控制块116
4.7.1 任务控制块的结构117
4.7.2 任务控制块链表119
4.7.3 任务控制块的初始化121
4.8 任务就绪表123
4.8.1 任务就绪表的结构123
4.8.2 任务就绪表的操作126
4.9 临界段131
本章小结132
练习与思考题132
第5章 任务管理133
5.1 创建任务133
5.1.1 用OSTaskCreate创建任务133
5.1.2 用OSTaskCreateExt创建任务135
5.2 删除任务137
5.3 请求删除任务143
5.4 挂起和恢复任务144
5.4.1 任务挂起145
5.4.2 任务恢复146
5.5 任务优先级别的修改148
5.6 任务TCB信息的获取151
5.7 任务堆栈检查152
5.8 任务调度154
5.8.1 μC/OS-Ⅱ的调度算法154
5.8.2 μC/OS-Ⅱ的任务级调度154
5.8.3 任务级任务切换函数OS_TASK_SW()157
5.9 μC/OS-Ⅱ的初始化和多任务的启动161
5.9.1 μC/OS-Ⅱ的初始化161
5.9.2 μC/OS-Ⅱ的多任务启动167
5.10 任务级调度实例168
5.10.1 程序功能说明168
5.10.2 程序实现及源代码解析169
5.10.3 CCS工程导入172
本章小结173
练习与思考题173
第6章 中断与时钟174
6.1 μC/OS-Ⅱ的中断管理174
6.1.1 μC/OS-Ⅱ的中断管理过程174
6.1.2 进入中断处理函数175
6.1.3 退出中断处理函数176
6.1.4 中断级任务切换函数177
6.2 μC/OS-Ⅱ的时钟178
6.2.1 系统时钟中断服务程序178
6.2.2 时钟节拍服务函数179
6.3 μC/OS-Ⅱ的时间管理181
6.3.1 任务延时函数182
6.3.2 按时分秒延时函数182
6.3.3 取消任务的延时函数184
6.3.4 获取系统时间函数185
6.3.5 设置系统时间函数185
6.4 中断管理实例186
6.4.1 程序功能说明186
6.4.2 程序实现及源代码解析186
本章小结188
练习与思考题188
第7章 任务同步机制与通信方式189
7.1 任务同步与事件管理189
7.1.1 任务之间的关系189
7.1.2 同步与通信190
7.1.3 临界区191
7.1.4 信息传递191
7.2 事件管理的数据结构192
7.2.1 事件192
7.2.2 事件控制块ECB193
7.2.3 事件等待组和事件等待表194
7.2.4 事件控制块空闲链表196
7.2.5 事件管理程序196
7.3 信号量199
7.3.1 信号量概述199
7.3.2 数据结构200
7.3.3 信号量的操作201
7.3.4 应用举例209
7.4 互斥信号量214
7.4.1 任务优先级的反转现象215
7.4.2 互斥型信号量概述216
7.4.3 数据结构217
7.4.4 互斥信号量的操作217
7.4.5 应用举例228
7.5 事件标志组232
7.5.1 事件标志组概述232
7.5.2 事件标志组的数据结构233
7.5.3 事件标志组的操作236
7.5.4 事件标志组管理实例249
本章小结255
练习与思考题255
第8章 消息管理256
8.1 消息邮箱256
8.1.1 消息邮箱概述256
8.1.2 消息邮箱的数据结构257
8.1.3 消息邮箱的操作257
8.1.4 消息邮箱实例265
8.2 消息队列267
8.2.1 消息队列概述267
8.2.2 消息队列的数据结构268
8.2.3 消息队列的操作270
8.2.4 消息队列实例278
本章小结281
练习与思考题281
第9章 内存管理282
9.1 μC/OS-Ⅱ的内存管理机制282
9.2 内存控制块282
9.2.1 内存分区283
9.2.2 内存控制块的结构283
9.2.3 内存控制块的初始化283
9.3 创建内存分区285
9.4 申请一个内存块287
9.5 释放一个内存块288
9.6 查询内存分区的状态289
9.7 读取内存分区名称的有效长度290
9.8 设置内存分区名称291
9.9 内存管理应用实例292
9.9.1 程序功能说明292
9.9.2 程序实现及源代码分析292
本章小结296
练习与思考题296
第10章 μC/OS-Ⅱ的移植297
10.1 移植说明297
10.2 移植详解298
10.2.1 工程的建立和目录结构298
10.2.2 板级支持包298
10.2.3 文件os_cpu.h的编写298
10.2.4 文件os_cpu_c.c的编写300
10.2.5 文件os_cpu_a.asm的编写303
10.3 测试μC/OS-Ⅱ309
本章小结310
练习与思考题310
第11章 CAN总线应用设计311
11.1 CAN协议概述311
11.1.1 CAN总线的特点311
11.1.2 CAN协议报文的帧类型312
11.2 Tiva微控制器的CAN接口314
11.2.1 CAN模块内部结构314
11.2.2 信号描述315
11.3 功能说明316
11.3.1 初始化和配置316
11.3.2 数据收发317
11.3.3 位速率的控制323
11.3.4 中断处理324
11.3.5 测试模式325
11.4 应用举例326
本章小结331
练习与思考题332
摘要
从20世纪70年代单片机出现起,随着各式各样的嵌入式微处理器、微控制器的大规模使用,嵌入式系统已经广泛应用于消费电子、有线、移动通信、汽车、医疗、工业控制、航空航天以及国防等领域的民用和军用电子设备中。在当前嵌入式芯片市场上,ARM芯片是嵌入式微处理器中的佼佼者,是很多数字电子产品的核心。ARM处理器的优势就在于体积小、功耗低、价格低廉,并且还能提供优异的性能,确实是众多嵌入式设备的首选。ARM将在低端微控制器市场逐步取代传统的8位/16位单片机。其中ARM的Coretex-M系列是经过优化的专门针对低端控制应用的处理器核,与传统的单片机相比,它的处理能力更加优秀,并且其价格还非常便宜。
    芯片处理能力的提高能够将嵌入式操作系统应用于嵌入式系统设计,μC/OS-Ⅱ很适合开发那些对系统要求不是很苛刻,且RAM和ROM有限的Coretex-M系列处理器。μC/OS-Ⅱ是在μC-OS的基础上发展起来的,是美国嵌入式系统专家Jean J.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-Ⅱ能管理256个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。μC/OS-Ⅱ是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,适合于广大的嵌入式系统开发人员和爱好者入门学习,以及供高校教学和科研。本书以介绍嵌入式系统开发的核心——嵌入式实时操作系统μC/OS-Ⅱ为重点,并结合具体实验例程,有助于读者深入理解和掌握嵌入式实时操作系统,内容涵盖了嵌入式实时操作系统的相关领域。
    本书力求全面、实用,并对例题做出了详细的分析和解释,这样既可以帮助读者学习理解知识和概念,降低学习难度,又具有启发性,帮助读者更加轻松、迅速地理解和掌握本书内容。
    本书由11章组成,各章具体内容如下:
    第1章主要对嵌入式实时操作系统进行概述,介绍嵌入式实时操作系统概念、体系结构、功能及特点、发展趋势以及嵌入式实时操作系统的实时性和可靠性等概念,并且讲解制约实时性的几个约束条件。最后对TI公司推出的用于开发DSP的集成开发环境CCS(Code Composer Studio)进行介绍,以便为后续调试程序做准备。
    第2章介绍了嵌入式硬件系统的组成、主流的嵌入式微处理器ARM系列和MIPS系列、总线、嵌入式系统存储器结构及输入/输出接口和设备。本章还对ARM的体系结构和基于ARM v7体系结构的Cortex-M4处理器进行了详细介绍。
    第3章介绍了嵌入式实时内核的基础知识,主要从三个方面进行了介绍。首先在内核概要部分,重点阐述了μC/OS-Ⅱ内核的相关特点,具体涉及微内核、多任务操作系统等相关概念。接着具体介绍内核的主要功能,其中包括任务管理、同步与通信管理、中断管理、时间管理、对共享资源的互斥管理、内存管理、I/O管理、出错管理、用户扩展管理、电源管理共10种主要功能,其中同步与通信管理又涉及信号量、互斥信号量、事件标志组、消息邮箱和消息队列等多种机制,这些机制高效全面地实现了任务与任务、任务与中断服务程序之间的同步与通信功能。最后主要对内核的性能指标进行了阐述,国际上常见的实时操作系统有很多,例如VxWorks、μC/OS-Ⅱ等不同内核的实时操作系统。因此要评价这些操作系统的好坏,应重点对实时性进行评价。
    第4章主要对任务的存储结构进行介绍,其中包括任务代码、任务控制块和任务堆栈。任务堆栈用来实现任务切换、函数调用等基本功能。任务控制块用来存储任务的基本信息,包括任务堆栈的位置、任务优先级、任务状态等。μC/OS-Ⅱ系统采用双向链表的形式管理任务控制块,包括已经被任务使用的任务块链表和未被使用的空任务块链表。为了快速找到系统中优先级最高的就绪任务,μC/OS-Ⅱ采用任务就绪表管理当前系统中所有处于就绪状态的任务。
    第5章对任务的创建、删除、挂起以及恢复等任务管理功能进行介绍,并且讲解了任务调度的基本原理;最后详细分析了μC/OS-Ⅱ操作系统的初始化和启动过程。
    第6章主要介绍了μC/OS-Ⅱ的中断处理过程和时钟管理,并讲解了μC/OS-Ⅱ的中断管理和中断服务程序的结构;μC/OS-Ⅱ的系统时钟及实现方法;时间管理服务包括延时、取消及延时等操作。
    第7章通过阐述时间管理的数据结构、事件管理程序、信号量结构、信号量管理程序、互斥信号量结构、互斥信号量管理程序、事件标志组结构,以及事件标志组管理程序,介绍了μC/OS-Ⅱ实时多任务操作系统的事件管理机制,并给出了相应的信号量、互斥信号量和事件标志组的具体应用实例,方便读者的学习与理解。
    第8章介绍了消息管理的相关内容。μC/OS-Ⅱ中存在多种通信机制,除了信号量等事件管理外,μC/OS-Ⅱ实时操作系统内核中还包括消息邮箱和消息队列通信机制。本章通过对消息邮箱的数据结构、消息邮箱管理程序、消息队列结构、消息队列管理程序的阐述,详细介绍了管理消息传递的过程。
    第9章主要对μC/OS-Ⅱ的动态内存管理方法和内存管理中提供的服务进行了介绍。μC/OS-Ⅱ通过定义一个二维数组,在内存中划分了一个内存分区,并将分区又分成了大小相同的内存块,组建空闲内存块链表。操作系统通过内存控制块对每一个内存分区进行管理。μC/OS-Ⅱ操作系统内存管理服务包括创建内存分区、申请内存块、释放内存块、查询内存分区的状态、读取内存分区名称的有效长度和设置内存分区名称。
    第10章介绍了采用TI公司的TM4C123GH6PM微控制器的TM4C123G LaunchPad开发板对μC/OS-Ⅱ的移植步骤。该章详细介绍了如何修改与处理器相关的三个文件。移植完成后如何进行测试,以保证操作系统正确运行。
    第11章以控制器局域网络CAN为例介绍如何设计一个嵌入式系统。本章主要介绍CAN模块的相关知识,然后介绍Tiva微控制器CAN总线功能,包括CAN的初始化和配置、CAN数据的收发、CAN位速率的控制、CAN的中断处理以及CAN的测试模式。最后给出实例加深读者对CAN的理解。
    本书内容全面、重点突出。书中对知识点的介绍循序渐进、由浅入深。书内所有示例均可运行通过,本书还配有免费的电子课件,欢迎选用本书作为教材的老师登录www.hzbook.com本书页面下载。
    对参加本书编写、校对以及程序测试工作的研究生金驰和黄瑞峰的支持,在此表示感谢!
    由于作者水平有限,书中难免有错误和不足之处,恳请各位专家和读者批评指正。
    丁山    2016年4月

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网