新書推薦:
《
大模型启示录
》
售價:HK$
112.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:HK$
201.6
《
养育男孩:官方升级版
》
售價:HK$
50.4
《
小原流花道技法教程
》
售價:HK$
109.8
《
少女映像室 唯美人像摄影从入门到实战
》
售價:HK$
110.9
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:HK$
87.4
《
武当内家散手
》
售價:HK$
50.4
《
诛吕:“诸吕之乱”的真相与吕太后时期的权力结构
》
售價:HK$
99.7
|
內容簡介: |
嵌入式实时操作系统是嵌入式人工智能与物联网终端的重要工具和运行载体。本书以ARM Mbed OS实时操作系统为背景,阐述实时操作系统的线程、调度、延时函数、事件、消息队列、线程信号、信号量、互斥量等基本要素,给出实时操作系统下的程序设计方法。本书分为基础应用篇(第1~7章)、原理剖析篇(第8~12章)及综合实践篇(第13、14章)三大部分,如果读者只做实时操作系统下的应用开发,可只阅读基础应用篇与综合实践篇;如果希望理解实时操作系统原理,那么建议通读全书。
|
關於作者: |
王宜怀,男,1962年2月生,博士,教授、博士生导师、网络工程系主任;苏州大学嵌入式系统与物联网研究所所长;苏州市政协常委、中国农工民主党苏州市委常委;江苏省计算机学会嵌入式系统与物联网专业委员会主任、中国软件行业协会嵌入式系统分会理事。主要研究方向:嵌入式系统、物联网与智能控制技术。
|
目錄:
|
第1篇 基础应用篇第1章 实时操作系统的基本概念与线程基础知识31.1 实时操作系统的基本含义31.1.1 嵌入式系统的基本分类31.1.2 无操作系统与实时操作系统41.1.3 实时操作系统与非实时操作系统51.2 实时操作系统中的基本概念61.2.1 线程与调度的基本含义61.2.2 内核的基本概念71.2.3 线程的基本概念91.3 线程的三要素、四种状态及三种基本形式101.3.1 线程的三要素101.3.2 线程的四种状态111.3.3 线程的三种基本形式131.4 本章小结14第2章 相关基础知识172.1 CPU内部寄存器的分类及ARM Cortex-M处理器的主要寄存器172.1.1 CPU内部寄存器的分类172.1.2 ARM Cortex-M处理器的主要寄存器182.2 C语言中的构造类型及编译相关问题212.2.1 C语言中的构造类型212.2.2 编译相关问题252.3 实时操作系统内核使用的数据结构262.3.1 栈与堆262.3.2 队列282.3.3 链表292.4 汇编语言概述362.4.1 汇编语言格式362.4.2 常用伪指令简介382.5 本章小结40第3章 Mbed OS个样例工程413.1 Mbed OS简介413.2 软件和硬件开发平台423.2.1 GEC架构简介423.2.2 硬件平台433.2.3 软件平台443.2.4 网上电子资源453.3 个样例工程463.3.1 样例程序功能463.3.2 工程框架设计原则463.3.3 无操作系统的工程框架473.3.4 Mbed OS的工程框架513.4 本章小结56第4章 实时操作系统下应用程序的基本要素574.1 中断的基本概念及处理过程574.1.1 中断的基本概念574.1.2 中断处理的基本过程584.2 时间嘀嗒与延时函数604.2.1 时间嘀嗒604.2.2 延时函数604.3 调度策略614.3.1 调度基础知识614.3.2 Mbed OS中使用的调度策略624.3.3 Mbed OS中的固有线程634.4 实时操作系统中的功能列表644.4.1 就绪列表644.4.2 延时列表644.4.3 等待列表644.4.4 条件阻塞列表644.5 本章小结65第5章 同步与通信的应用方法675.1 实时操作系统中同步与通信的基本概念675.1.1 同步的含义与通信手段675.1.2 同步类型685.2 事件695.2.1 事件的含义及应用场合695.2.2 事件的常用函数695.2.3 事件的编程举例:通过事件实现中断与线程的通信715.2.4 事件的编程举例:通过事件实现线程之间的通信745.3 消息队列765.3.1 消息队列的含义及应用场合765.3.2 消息队列的常用函数765.3.3 消息队列的编程举例785.4 线程信号825.4.1 线程信号的含义及应用场合825.4.2 线程信号的常用函数835.4.3 线程信号的编程举例845.5 信号量875.5.1 信号量的含义及应用场合875.5.2 信号量的常用函数885.5.3 信号量的编程举例895.6 互斥量925.6.1 互斥量的含义及应用场合925.6.2 互斥量的常用函数945.6.3 互斥量的编程举例955.7 本章小结98第6章 底层硬件驱动构件996.1 嵌入式构件概述996.1.1 制作构件的必要性996.1.2 构件的基本概念996.1.3 嵌入式开发中构件的分类1006.1.4 构件的基本特征与表达形式1016.2 底层硬件驱动构件设计原则与方法1026.2.1 底层硬件驱动构件设计的基本原则1026.2.2 底层硬件驱动构件设计要点分析1036.2.3 底层硬件驱动构件封装规范概要1046.2.4 封装的前期准备1056.3 底层硬件驱动构件设计举例1066.3.1 GPIO构件1066.3.2 UART构件1146.3.3 Flash构件1196.3.4 ADC构件1236.3.5 PWM构件1276.4 应用构件及软件构件设计实例1316.4.1 应用构件设计实例1316.4.2 软件构件设计实例1336.5 本章小结142第7章 实时操作系统下的程序设计方法1437.1 程序稳定性问题1437.1.1 稳定性的基本要求1437.1.2 看门狗复位与定期复位的应用1447.1.3 临界区的处理1477.2 中断服务程序设计、线程划分及优先级安排问题1487.2.1 中断服务程序设计的基本问题1487.2.2 线程划分的简明方法1497.2.3 线程优先级安排问题1497.3 利用信号量解决并发与资源共享的问题1507.3.1 并发与资源共享的问题1507.3.2 应用实例1517.4 优先级反转问题1557.4.1 优先级反转问题的出现1557.4.2 Mbed OS中避免优先级反转问题的方法1577.5 本章小结162第2篇 原理剖析篇第8章 理解Mbed OS的启动过程1658.1 芯片启动到main函数之前的运行过程1658.1.1 寻找条被执行指令的存放处1658.1.2 通过启动文件理解芯片启动过程1678.2 Mbed OS启动流程概要1698.2.1 相关宏定义及结构体1698.2.2 栈和堆的配置1768.2.3 启动过程概述1798.2.4 如何运行到主线程1818.2.5 启动过程总流程源代码1828.3 深入理解启动过程(一):内核初始化解析1838.3.1 内核初始化准备工作1838.3.2 进入SVC中断服务程序SVC_Handler1868.3.3 实际内核初始化函数1878.3.4 返回流程1998.4 深入理解启动过程(二):创建主线程、启动内核2008.4.1 创建主线程2018.4.2 启动内核2158.4.3 定时器线程函数2268.4.4 消息获取与处理函数2288.4.5 线程延时等待函数2388.5 中断服务程序SVC_Handler详解2408.5.1 SVC_Handler功能概要2418.5.2 SVC_Handler完整流程2418.5.3 SVC_Handler功能分段解析2438.5.4 SVC_Handler完整代码注释2468.6 函数调用关系总结及存储空间分析2498.6.1 启动过程中函数的调用关系总结2508.6.2 启动过程存储空间分析2538.7 本章小结257第9章 理解时间嘀嗒2599.1 时间嘀嗒的建立与使用2599.1.1 SysTick定时器的寄存器2599.1.2 SysTick定时器的初始化2609.1.3 SysTick中断服务程序2639.2 延时函数2669.2.1 线程延时等待函数2669.2.2 线程延时嘀嗒函数2679.2.3 其他时间嘀嗒函数2699.3 延时等待列表工作机制2719.3.1 线程插入延时等待列表函数2719.3.2 从延时等待列表中移除线程的函数2749.3.3 延时函数调度过程实例剖析2759.4 与时间相关的函数2799.4.1 获取系统运行时间函数2809.4.2 日期转时间戳函数2819.4.3 时间戳转日期函数2839.5 本章小结286第10章 理解调度机制28710.1 ARM Cortex-M4的SVC和PendSV中断的调度作用28710.1.1 SVC中断的调度作用28710.1.2 PendSV中断的调度作用28810.1.3 列表分析28810.2 中断服务程序PendSV_Handler剖析28910.2.1 osRtxPendSV _Handler的功能概要28910.2.2 osRtxPendSV_Handler函数源代码解析29010.2.3 跳转到SVC_Context进行上下文切换29110.2.4 PendSV_Handler函数完整代码注释29110.3 PendSV应用举例29210.3.1 PendSV在事件中的应用29210.3.2 PendSV在线程信号中的应用29610.4 本章小结300第11章 理解事件与消息队列30111.1 事件30111.1.1 事件的相关结构体30111.1.2 事件函数深入剖析30211.1.3 事件调度剖析30711.2 消息队列31111.2.1 消息或消息队列结构体31111.2.2 消息队列函数深入剖析31311.2.3 消息队列调度剖析31811.3 本章小结322第12章 理解线程信号、信号量与互斥量32312.1 线程信号32312.1.1 线程操作函数32312.1.2 线程信号函数深入剖析32912.1.3 线程信号调度剖析33312.2 信号量33712.2.1 信号量控制块结构体33712.2.2 信号量函数深入剖析33712.2.3 信号量调度剖析34112.3 互斥量34512.3.1 互斥量结构体34512.3.2 互斥量函数深入剖析34612.3.3 互斥量调度剖析35212.3.4 互斥量避免优先级反转问题调度剖析35612.4 本章小结359第3篇 综合实践篇第13章 基于Mbed OS的AHL-EORS应用36313.1 AHL-EORS简介36313.1.1 硬件清单36313.1.2 硬件测试导引36413.2 卷积神经网络概述36413.2.1 卷积神经网络的技术特点36413.2.2 卷积神经网络原理36513.3 AHL-EORS选用模型分析36813.3.1 MobileNetV2模型36913.3.2 NCP模型37013.4 AHL-EORS的数据采集与训练过程37313.4.1 数据采集程序37313.4.2 模型训练与部署37613.5 在通用嵌入式计算机GEC上进行的推理过程37713.6 本章小结380第14章 基于Mbed OS的NB-IoT应用开发38114.1 窄带物联网应用开发概述38114.1.1 窄带物联网简介38114.1.2 NB-IoT应用开发所面临的难题及解决思路38214.1.3 直观体验NB-IoT数据传输38314.1.4 金葫芦NB-IoT开发套件简介38414.2 NB-IoT应用架构及通信基本过程38614.2.1 建立NB-IoT应用架构的基本原则38614.2.2 终端UE、信息邮局MPO与人机交互系统HCI的基本定义38614.2.3 基于信息邮局粗略了解基本通信过程38714.3 终端UE与云侦听程序的通信过程388<
|
|