华信教育资源网
嵌入式实时操作系统 ——基于ARM Mbed OS的应用实践
丛   书   名: 嵌入式人工智能开发丛书
作   译   者:王宜怀 等 出 版 日 期:2022-07-01
出   版   社:电子工业出版社 维   护   人:蒋燕 
书   代   号:TP437620 I S B N:9787121437625

图书简介:

嵌入式实时操作系统是嵌入式人工智能与物联网终端的重要工具和运行载体。本书以ARM Mbed OS实时操作系统为背景,阐述实时操作系统的线程、调度、延时函数、事件、消息队列、线程信号、信号量、互斥量等基本要素,给出实时操作系统下的程序设计方法。本书分为基础应用篇(第1~7章)、原理剖析篇(第8~12章)及综合实践篇(第13、14章)三大部分,如果读者只做实时操作系统下的应用开发,可只阅读基础应用篇与综合实践篇;如果希望理解实时操作系统原理,那么建议通读全书。
定价 138.0
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源

    本书资源

    本书暂无资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

    嵌入式实时操作系统是嵌入式人工智能与物联网终端的重要工具和运行载体。本书以ARM Mbed OS实时操作系统为背景,阐述实时操作系统的线程、调度、延时函数、事件、消息队列、线程信号、信号量、互斥量等基本要素,给出实时操作系统下的程序设计方法。本书分为基础应用篇(第1~7章)、原理剖析篇(第8~12章)及综合实践篇(第13、14章)三大部分,如果读者只做实时操作系统下的应用开发,可只阅读基础应用篇与综合实践篇;如果希望理解实时操作系统原理,那么建议通读全书。

    图书详情

    ISBN:9787121437625
    开 本:16(185*260)
    页 数:416
    字 数:703

    本书目录

    第1篇  基础应用篇
    第1章  实时操作系统的基本概念与线程基础知识	3
    1.1  实时操作系统的基本含义	3
    1.1.1  嵌入式系统的基本分类	3
    1.1.2  无操作系统与实时操作系统	4
    1.1.3  实时操作系统与非实时操作系统	5
    1.2  实时操作系统中的基本概念	6
    1.2.1  线程与调度的基本含义	6
    1.2.2  内核的基本概念	7
    1.2.3  线程的基本概念	9
    1.3  线程的三要素、四种状态及三种基本形式	10
    1.3.1  线程的三要素	10
    1.3.2  线程的四种状态	11
    1.3.3  线程的三种基本形式	13
    1.4  本章小结	14
    第2章  相关基础知识	17
    2.1  CPU内部寄存器的分类及ARM Cortex-M处理器的主要寄存器	17
    2.1.1  CPU内部寄存器的分类	17
    2.1.2  ARM Cortex-M处理器的主要寄存器	18
    2.2  C语言中的构造类型及编译相关问题	21
    2.2.1  C语言中的构造类型	21
    2.2.2  编译相关问题	25
    2.3  实时操作系统内核使用的数据结构	26
    2.3.1  栈与堆	26
    2.3.2  队列	28
    2.3.3  链表	29
    2.4  汇编语言概述	36
    2.4.1  汇编语言格式	36
    2.4.2  常用伪指令简介	38
    2.5  本章小结	40
    第3章  Mbed OS第一个样例工程	41
    3.1  Mbed OS简介	41
    3.2  软件和硬件开发平台	42
    3.2.1  GEC架构简介	42
    3.2.2  硬件平台	43
    3.2.3  软件平台	44
    3.2.4  网上电子资源	45
    3.3  第一个样例工程	46
    3.3.1  样例程序功能	46
    3.3.2  工程框架设计原则	46
    3.3.3  无操作系统的工程框架	47
    3.3.4  Mbed OS的工程框架	51
    3.4  本章小结	56
    第4章  实时操作系统下应用程序的基本要素	57
    4.1  中断的基本概念及处理过程	57
    4.1.1  中断的基本概念	57
    4.1.2  中断处理的基本过程	58
    4.2  时间嘀嗒与延时函数	60
    4.2.1  时间嘀嗒	60
    4.2.2  延时函数	60
    4.3  调度策略	61
    4.3.1  调度基础知识	61
    4.3.2  Mbed OS中使用的调度策略	62
    4.3.3  Mbed OS中的固有线程	63
    4.4  实时操作系统中的功能列表	64
    4.4.1  就绪列表	64
    4.4.2  延时列表	64
    4.4.3  等待列表	64
    4.4.4  条件阻塞列表	64
    4.5  本章小结	65
    第5章  同步与通信的应用方法	67
    5.1  实时操作系统中同步与通信的基本概念	67
    5.1.1  同步的含义与通信手段	67
    5.1.2  同步类型	68
    5.2  事件	69
    5.2.1  事件的含义及应用场合	69
    5.2.2  事件的常用函数	69
    5.2.3  事件的编程举例:通过事件实现中断与线程的通信	71
    5.2.4  事件的编程举例:通过事件实现线程之间的通信	74
    5.3  消息队列	76
    5.3.1  消息队列的含义及应用场合	76
    5.3.2  消息队列的常用函数	76
    5.3.3  消息队列的编程举例	78
    5.4  线程信号	82
    5.4.1  线程信号的含义及应用场合	82
    5.4.2  线程信号的常用函数	83
    5.4.3  线程信号的编程举例	84
    5.5  信号量	87
    5.5.1  信号量的含义及应用场合	87
    5.5.2  信号量的常用函数	88
    5.5.3  信号量的编程举例	89
    5.6  互斥量	92
    5.6.1  互斥量的含义及应用场合	92
    5.6.2  互斥量的常用函数	94
    5.6.3  互斥量的编程举例	95
    5.7  本章小结	98
    第6章  底层硬件驱动构件	99
    6.1  嵌入式构件概述	99
    6.1.1  制作构件的必要性	99
    6.1.2  构件的基本概念	99
    6.1.3  嵌入式开发中构件的分类	100
    6.1.4  构件的基本特征与表达形式	101
    6.2  底层硬件驱动构件设计原则与方法	102
    6.2.1  底层硬件驱动构件设计的基本原则	102
    6.2.2  底层硬件驱动构件设计要点分析	103
    6.2.3  底层硬件驱动构件封装规范概要	104
    6.2.4  封装的前期准备	105
    6.3  底层硬件驱动构件设计举例	106
    6.3.1  GPIO构件	106
    6.3.2  UART构件	114
    6.3.3  Flash构件	119
    6.3.4  ADC构件	123
    6.3.5  PWM构件	127
    6.4  应用构件及软件构件设计实例	131
    6.4.1  应用构件设计实例	131
    6.4.2  软件构件设计实例	133
    6.5  本章小结	142
    第7章  实时操作系统下的程序设计方法	143
    7.1  程序稳定性问题	143
    7.1.1  稳定性的基本要求	143
    7.1.2  看门狗复位与定期复位的应用	144
    7.1.3  临界区的处理	147
    7.2  中断服务程序设计、线程划分及优先级安排问题	148
    7.2.1  中断服务程序设计的基本问题	148
    7.2.2  线程划分的简明方法	149
    7.2.3  线程优先级安排问题	149
    7.3  利用信号量解决并发与资源共享的问题	150
    7.3.1  并发与资源共享的问题	150
    7.3.2  应用实例	151
    7.4  优先级反转问题	155
    7.4.1  优先级反转问题的出现	155
    7.4.2  Mbed OS中避免优先级反转问题的方法	157
    7.5  本章小结	162
    第2篇  原理剖析篇
    第8章  理解Mbed OS的启动过程	165
    8.1  芯片启动到main函数之前的运行过程	165
    8.1.1  寻找第一条被执行指令的存放处	165
    8.1.2  通过启动文件理解芯片启动过程	167
    8.2  Mbed OS启动流程概要	169
    8.2.1  相关宏定义及结构体	169
    8.2.2  栈和堆的配置	176
    8.2.3  启动过程概述	179
    8.2.4  如何运行到主线程	181
    8.2.5  启动过程总流程源代码	182
    8.3  深入理解启动过程(一):内核初始化解析	183
    8.3.1  内核初始化准备工作	183
    8.3.2  进入SVC中断服务程序SVC_Handler	186
    8.3.3  实际内核初始化函数	187
    8.3.4  返回流程	199
    8.4  深入理解启动过程(二):创建主线程、启动内核	200
    8.4.1  创建主线程	201
    8.4.2  启动内核	215
    8.4.3  定时器线程函数	226
    8.4.4  消息获取与处理函数	228
    8.4.5  线程延时等待函数	238
    8.5  中断服务程序SVC_Handler详解	240
    8.5.1  SVC_Handler功能概要	241
    8.5.2  SVC_Handler完整流程	241
    8.5.3  SVC_Handler功能分段解析	243
    8.5.4  SVC_Handler完整代码注释	246
    8.6  函数调用关系总结及存储空间分析	249
    8.6.1  启动过程中函数的调用关系总结	250
    8.6.2  启动过程存储空间分析	253
    8.7  本章小结	257
    第9章  理解时间嘀嗒	259
    9.1  时间嘀嗒的建立与使用	259
    9.1.1  SysTick定时器的寄存器	259
    9.1.2  SysTick定时器的初始化	260
    9.1.3  SysTick中断服务程序	263
    9.2  延时函数	266
    9.2.1  线程延时等待函数	266
    9.2.2  线程延时嘀嗒函数	267
    9.2.3  其他时间嘀嗒函数	269
    9.3  延时等待列表工作机制	271
    9.3.1  线程插入延时等待列表函数	271
    9.3.2  从延时等待列表中移除线程的函数	274
    9.3.3  延时函数调度过程实例剖析	275
    9.4  与时间相关的函数	279
    9.4.1  获取系统运行时间函数	280
    9.4.2  日期转时间戳函数	281
    9.4.3  时间戳转日期函数	283
    9.5  本章小结	286
    第10章  理解调度机制	287
    10.1  ARM Cortex-M4的SVC和PendSV中断的调度作用	287
    10.1.1  SVC中断的调度作用	287
    10.1.2  PendSV中断的调度作用	288
    10.1.3  列表分析	288
    10.2  中断服务程序PendSV_Handler剖析	289
    10.2.1  osRtxPendSV _Handler的功能概要	289
    10.2.2  osRtxPendSV_Handler函数源代码解析	290
    10.2.3  跳转到SVC_Context进行上下文切换	291
    10.2.4  PendSV_Handler函数完整代码注释	291
    10.3  PendSV应用举例	292
    10.3.1  PendSV在事件中的应用	292
    10.3.2  PendSV在线程信号中的应用	296
    10.4  本章小结	300
    第11章  理解事件与消息队列	301
    11.1  事件	301
    11.1.1  事件的相关结构体	301
    11.1.2  事件函数深入剖析	302
    11.1.3  事件调度剖析	307
    11.2  消息队列	311
    11.2.1  消息或消息队列结构体	311
    11.2.2  消息队列函数深入剖析	313
    11.2.3  消息队列调度剖析	318
    11.3  本章小结	322
    第12章  理解线程信号、信号量与互斥量	323
    12.1  线程信号	323
    12.1.1  线程操作函数	323
    12.1.2  线程信号函数深入剖析	329
    12.1.3  线程信号调度剖析	333
    12.2  信号量	337
    12.2.1  信号量控制块结构体	337
    12.2.2  信号量函数深入剖析	337
    12.2.3  信号量调度剖析	341
    12.3  互斥量	345
    12.3.1  互斥量结构体	345
    12.3.2  互斥量函数深入剖析	346
    12.3.3  互斥量调度剖析	352
    12.3.4  互斥量避免优先级反转问题调度剖析	356
    12.4  本章小结	359
    第3篇  综合实践篇
    第13章  基于Mbed OS的AHL-EORS应用	363
    13.1  AHL-EORS简介	363
    13.1.1  硬件清单	363
    13.1.2  硬件测试导引	364
    13.2  卷积神经网络概述	364
    13.2.1  卷积神经网络的技术特点	364
    13.2.2  卷积神经网络原理	365
    13.3  AHL-EORS选用模型分析	368
    13.3.1  MobileNetV2模型	369
    13.3.2  NCP模型	370
    13.4  AHL-EORS的数据采集与训练过程	373
    13.4.1  数据采集程序	373
    13.4.2  模型训练与部署	376
    13.5  在通用嵌入式计算机GEC上进行的推理过程	377
    13.6  本章小结	380
    第14章  基于Mbed OS的NB-IoT应用开发	381
    14.1  窄带物联网应用开发概述	381
    14.1.1  窄带物联网简介	381
    14.1.2  NB-IoT应用开发所面临的难题及解决思路	382
    14.1.3  直观体验NB-IoT数据传输	383
    14.1.4  金葫芦NB-IoT开发套件简介	384
    14.2  NB-IoT应用架构及通信基本过程	386
    14.2.1  建立NB-IoT应用架构的基本原则	386
    14.2.2  终端UE、信息邮局MPO与人机交互系统HCI的基本定义	386
    14.2.3  基于信息邮局粗略了解基本通信过程	387
    14.3  终端UE与云侦听程序的通信过程	388
    14.3.1  基于mbed的终端UE模板工程设计	389
    14.3.2  云侦听模板工程功能简介	391
    14.3.3  建立云侦听程序的运行场景	392
    14.3.4  运行云侦听与终端UE模板工程	394
    14.3.5  通信过程中的常见错误说明	396
    14.4  通过Web网页的数据访问	397
    14.4.1  运行Web模板观察自己终端UE的数据	397
    14.4.2  NB-IoT的Web网页模板工程结构	398
    14.5  通过微信小程序的数据访问	399
    14.5.1  运行小程序模板观察自己终端UE的数据	399
    14.5.2  NB-IoT的微信小程序模板工程结构	401
    参考文献	403
    
    展开

    前     言

    嵌入式实时操作系统是面向微控制器类应用的嵌入式人工智能与物联网终端的重要工具和运行载体,它的种类繁多。但是,其共性是一致的,就是多线程编程,内核负责调度,线程之间或线程与中断服务程序之间采用通信机制。不同实时操作系统的性能及对外接口函数等有一定差异,但均包含调度、延时函数、事件、消息队列、信号量、互斥量等基本要素。学习实时操作系统有两个可能的出发点:一是学会在实时操作系统场景下进行基本应用程序开发;二是在掌握应用编程的前提下,理解其运行原理,进行深度应用程序开发。本书基于这两种场景进行撰写。
    虽然实时操作系统种类繁多,有国外的,也有国产的;有收费的,也有免费的;有开发者持续维护升级的,也有依赖爱好者更新升级的。但是无论哪一种,学习实时操作系统时都必须以一个具体的实时操作系统为蓝本。实际上,不同的实时操作系统,其应用方法及原理大同小异,掌握其共性是学习的关键,这样才能达到举一反三的效果。
    本书推荐的Mbed OS是ARM公司于2014年开始推出并逐步完善的一款免费的开源嵌入式实时操作系统,Mbed OS专为基于ARM Cortex-M内核的MCU设计,主要面向物联网终端。本书以Mbed OS为蓝本,以通用嵌入式计算机(GEC)为硬件载体,阐述实时操作系统中的线程、调度、延时函数、事件、消息队列、线程信号、信号量、互斥量等基本要素,给出实时操作系统下的程序设计方法。
    为了让读者更容易学习、应用实时操作系统,本书把应用与原理分开撰写,先学习应用,后学习原理。全书包括基础应用篇(第1~7章)、原理剖析篇(第8~12章)及综合实践篇(第13、14章)三大部分,如果读者只做实时操作系统下的应用开发,可只阅读基础应用篇与综合实践篇;如果希望理解实时操作系统原理,那么建议通读全书。基础应用篇将Mbed OS驻留于BIOS内部,并在此基础上进行实时操作系统下应用开发的学习实践,架构简洁明了,编译链接速度快,符合应用开发特点。原理剖析篇采用源代码级剖析,利用printf输出至工具计算机显示屏,清晰给出运行原理,达到知其然也知其所以然的目的。综合实践篇为实时操作系统在嵌入式人工智能与物联网领域的综合应用。本书若作为教材,可根据课时做适当缩减,一般情况下,在本科教学中,基础应用篇和综合实践篇是重点,若用于研究生教学,原理剖析篇则作为重点。
    本书配有网上电子资源,主要包含文档及源代码等。获得途径:搜索“苏州大学嵌入式学习社区”官网,在“著作”→“mbedOS”栏目下获得电子资源。
    需要特别说明的是,为了体现实时操作系统的共性技术,本书在撰写内容上最大限度地与本书第一作者的另外一部著作《嵌入式实时操作系统——基于RT-Thread的EAI&IoT系统开发》(参考文献[1])保持一致,但实时操作系统的蓝本不同。
    苏州大学嵌入式人工智能与物联网实验室的研究生参与了本书的程序开发及书稿整理工作,刘纯平教授、赵雷教授、章晓芳副教授、李领治副教授、徐丽华副教授、徐文彬副教授等参与了本书讨论,苏州金蒲芦物联网技术有限公司的施连敏博士提出了建设性的建议,在此一一表示感谢。鉴于作者水平有限,书中难免存在不足之处,恳请读者批评指正。
    
                                                              作者      
                                                            2021年9月  
    
    展开

    作者简介

    王宜怀,男,1962年2月生,博士,教授、博士生导师、网络工程系主任;苏州大学嵌入式系统与物联网研究所所长;苏州市政协常委、中国农工民主党苏州市委常委;江苏省计算机学会嵌入式系统与物联网专业委员会主任、中国软件行业协会嵌入式系统分会理事。主要研究方向:嵌入式系统、物联网与智能控制技术。
  • 样 章 试 读
  • 图 书 评 价 我要评论
华信教育资源网