当前位置: 首页 > news >正文

新书推荐《嵌入式实时操作系统:RT-Thread设计与实现》

新书推荐

《嵌入式实时操作系统:RT-Thread设计与实现》

长按二维码
了解及购买

本书由自研开源嵌入式实时操作系统RT-Thread核心作者撰写,专业性毋庸置疑,系统剖析嵌入式系统核心设计与实现,掌握物联网操作系统精髓。

内容简介

本书由自研开源嵌入式实时操作系统RT-Thread核心作者撰写,专业性毋庸置疑,系统剖析嵌入式系统核心设计与实现,掌握物联网操作系统精髓。本书分为两大部分,共16章,第1~10章为内核篇;第11~16章为组件篇。

内核篇(第1~10章)详解RT-Thread内核,先对RT-Thread进行总体介绍,再分别介绍RT-Thread的核心技术——线程管理、时钟管理、线程间同步、线程间通信、内存管理、中断管理与内核移植。

组件篇(第11~16章)分别介绍Env开发环境、FinSH控制台、设备管理、文件系统和网络框架。

各章均有配套示例,方便读者动手实践和参考。

作者简介

邱祎 睿赛德科技联合创始人。从2006年在校时起参与开发RT-Thread开源操作系统,和中国国内优秀的工程师一起将RT-Thread从零发展起来,RT-Thread被广泛应用于能源、车载、医疗、消费电子等众多行业,成为国人自主开发、成熟稳定和装机量大的开源嵌入式操作系统。

熊谱翔 睿赛德科技创始人兼CEO,于2006年创立了RT-Thread开源操作系统,并以开源社区的形式,带领中国国内优秀的工程师,以从无到有的方式,融入实时面向对象设计开发了RT-Thread自主操作系统内核,及大量周边成熟、稳定软件组件,如文件系统、命令行、图形用户界面等。

朱天龙(Armink) 睿赛德科技技术总监,负责RT-Thread物联网组件的研发,前沿技术探索及团队管理。曾任职于国内某知名医疗设备企业,担任研发部门经理要职,主导多个项目的研发实施和量产,并获得10余项国家发明专利。拥有近10年RT-Thread开发经验。他也是一位嵌入式开源极客,分享开源了EasyLogger、EasyFlash、CmBacktrace等数个活跃度极高的开源软件。

目录

前言

第一篇 内核篇

第1章 嵌入式实时操作系统2

1.1 嵌入式系统3

1.2 实时系统4

1.3 嵌入式实时操作系统6

1.3.1 主流嵌入式实时操作系统7

1.3.2 发展趋势8

1.4  本章小结8

第2章了解与快速上手RT-Thread9

2.1 RT-Thread概述9

2.2 RT-Thread的架构10

2.3 RT-Thread的获取11

2.4 RT-Thread快速上手12

2.4.1 准备环境13

2.4.2 初识RT-Thread16

2.4.3 跑马灯的例子20

2.5 本章小结21

第3章 内核基础22

3.1 RT-Thread内核介绍22

3.2 RT-Thread启动流程24

3.3 RT-Thread程序内存分布26

3.4 RT-Thread自动初始化机制28

3.5 RT-Thread内核对象模型29

3.5.1 静态对象和动态对象29

3.5.2 内核对象管理架构31

3.5.3 对象控制块33

3.5.4 内核对象管理方式34

3.6 RT-Thread内核配置示例36

3.7 常见宏定义说明38

3.8 本章小结39

第4章 线程管理40

4.1 线程管理的功能特点40

4.2 线程的工作机制41

4.2.1 线程控制块41

4.2.2 线程的重要属性42

4.2.3 线程状态切换45

4.2.4 系统线程46

4.3 线程的管理方式46

4.3.1 创建和删除线程47

4.3.2 初始化和脱离线程48

4.3.3 启动线程49

4.3.4 获得当前线程50

4.3.5 使线程让出处理器资源50

4.3.6 使线程睡眠50

4.3.7 挂起和恢复线程51

4.3.8 控制线程52

4.3.9 设置和删除空闲钩子52

4.3.10 设置调度器钩子53

4.4 线程应用示例53

4.4.1 创建线程示例54

4.4.2 线程时间片轮转调度示例56

4.4.3 线程调度器钩子示例57

4.5 本章小结59

第5章 时钟管理60

5.1 时钟节拍60

5.1.1 时钟节拍的实现方式60

5.1.2 获取时钟节拍61

5.2 定时器管理62

5.2.1 RT-Thread定时器介绍62

5.2.2 定时器的工作机制63

5.2.3 定时器的管理方式65

5.3 定时器应用示例69

5.4 高精度延时72

5.5 本章小结73

第6章 线程间同步74

6.1 信号量75

6.1.1 信号量的工作机制75

6.1.2 信号量控制块75

6.1.3 信号量的管理方式76

6.1.4 信号量应用示例79

6.1.5 信号量的使用场合85

6.2 互斥量87

6.2.1 互斥量的工作机制87

6.2.2 互斥量控制块89

6.2.3 互斥量的管理方式89

6.2.4 互斥量应用示例92

6.2.5 互斥量的使用场合97

6.3 事件集97

6.3.1 事件集的工作机制97

6.3.2 事件集控制块98

6.3.3 事件集的管理方式99

6.3.4 事件集应用示例101

6.3.5 事件集的使用场合104

6.4 本章小结104

第7章 线程间通信105

7.1 邮箱105

7.1.1 邮箱的工作机制105

7.1.2 邮箱控制块106

7.1.3 邮箱的管理方式106

7.1.4 邮箱使用示例110

7.1.5 邮箱的使用场合112

7.2 消息队列113

7.2.1 消息队列的工作机制113

7.2.2 消息队列控制块114

7.2.3 消息队列的管理方式115

7.2.4 消息队列应用示例118

7.2.5 消息队列的使用场合121

7.3 信号123

7.3.1 信号的工作机制123

7.3.2 信号的管理方式124

7.3.3 信号应用示例126

7.4 本章小节128

第8章 内存管理129

8.1 内存管理的功能特点129

8.2 内存堆管理130

8.2.1 小内存管理算法131

8.2.2 slab管理算法132

8.2.3 memheap管理算法133

8.2.4 内存堆配置和初始化134

8.2.5 内存堆的管理方式134

8.2.6 内存堆管理应用示例136

8.3 内存池138

8.3.1 内存池的工作机制139

8.3.2 内存池的管理方式140

8.3.3 内存池应用示例143

8.4 本章小结145

第9章 中断管理146

9.1 Cortex-MCPU架构基础146

9.1.1 寄存器介绍147

9.1.2 操作模式和特权级别148

9.1.3 嵌套向量中断控制器148

9.1.4 PendSV系统调用149

9.2 RT-Thread中断工作机制149

9.2.1 中断向量表149

9.2.2 中断处理过程151

9.2.3 中断嵌套153

9.2.4 中断栈154

9.2.5 中断的底半处理154

9.3 RT-Thread中断管理接口156

9.3.1 中断服务程序挂接157

9.3.2 中断源管理158

9.3.3 全局中断开关158

9.3.4 中断通知160

9.4 中断与轮询161

9.5 全局中断开关使用示例162

9.6 本章小结164

第10章 内核移植165

10.1 CPU架构移植165

10.1.1 实现全局中断开关166

10.1.2 实现线程栈初始化167

10.1.3 实现上下文切换168

10.1.4 实现时钟节拍174

10.2 BSP移植175

10.3 内核移植示例175

10.3.1 准备裸机工程176

10.3.2 建立RT-Thread工程177

10.3.3 实现时钟管理179

10.3.4 实现控制台输出180

10.3.5 实现动态堆内存管理181

10.3.6 移植到更多开发板183

10.4 本章小结184

第二篇 组件篇

第11章 Env辅助开发环境186

11.1 Env简介186

11.2 Env的功能特点187

11.3 Env工程构建示例189

11.4 构建更多MDK工程196

11.4.1 创建外设示例工程196

11.4.2 创建文件系统示例工程198

11.4.3 创建网络示例工程202

11.5 本章小结206

第12章 FinSH控制台207

12.1 FinSH介绍207

12.2 FinSH内置命令209

12.2.1 显示线程状态210

12.2.2 显示信号量状态210

12.2.3 显示事件状态210

12.2.4 显示互斥量状态210

12.2.5 显示邮箱状态211

12.2.6 显示消息队列状态211

12.2.7 显示内存池状态211

12.2.8 显示定时器状态212

12.2.9 显示设备状态212

12.2.10 显示动态内存状态212

12.3 自定义FinSH命令213

12.3.1 自定义msh命令213

12.3.2 自定义C-Style命令和变量213

12.3.3 自定义命令重命名214

12.4 FinSH功能配置214

12.5 FinSH应用示例216

12.5.1 自定义msh命令示例216

12.5.2 带参数的msh命令示例217

12.6 本章小结218

第13章 I/O设备管理219

13.1 I/O设备介绍219

13.1.1 I/O设备管理框架219

13.1.2 I/O设备模型221

13.1.3 I/O设备类型222

13.2 创建和注册I/O设备223

13.3 访问I/O设备226

13.3.1 查找设备226

13.3.2 初始化设备227

13.3.3 打开和关闭设备227

13.3.4 控制设备228

13.3.5 读写设备229

13.3.6 数据收发回调229

13.3.7 设备访问示例230

13.4 本章小结231

第14章 通用外设接口232

14.1 UART串口232

14.1.1 串口设备管理233

14.1.2 创建和注册串口设备233

14.1.3 访问串口设备235

14.1.4 串口设备使用示例235

14.2 GPIO237

14.2.1 PIN设备管理238

14.2.2 创建和注册PIN设备238

14.2.3 访问PIN设备239

14.2.4 PIN设备使用示例242

14.3 SPI总线243

14.3.1 SPI设备管理244

14.3.2 创建和注册SPI总线设备246

14.3.3 创建和挂载SPI从设备247

14.3.4 访问SPI从设备249

14.3.5 特殊使用场景254

14.3.6 SPI设备使用示例255

14.4 I2C总线256

14.4.1 I2C设备管理258

14.4.2 创建和注册I2C总线设备258

14.4.3 访问I2C设备259

14.4.4 I2C设备应用示例260

14.5 运行设备应用示例263

14.5.1 运行PIN设备示例264

14.5.2 运行SPI设备示例265

14.5.3 运行I2C设备示例266

14.5.4 运行串口设备示例266

14.6 本章小结267

第15章 虚拟文件系统268

15.1 DFS介绍268

15.1.1 DFS架构269

15.1.2 POSIX接口层269

15.1.3 虚拟文件系统层270

15.1.4 设备抽象层270

15.2 文件系统挂载管理271

15.2.1 DFS组件初始化271

15.2.2 注册文件系统271

15.2.3 将存储设备注册为块设备271

15.2.4 格式化文件系统272

15.2.5 挂载文件系统273

15.2.6 卸载文件系统273

15.3 文件管理273

15.3.1 打开和关闭文件273

15.3.2 读写数据274

15.3.3 重命名275

15.3.4 获取状态275

15.3.5 删除文件275

15.3.6 同步文件数据到存储设备276

15.3.7 查询文件系统相关信息276

15.3.8 监视I/O设备状态276

15.4 目录管理277

15.4.1 创建和删除目录277

15.4.2 打开和关闭目录277

15.4.3 读取目录278

15.4.4 获取目录流的读取位置278

15.4.5 设置下次读取目录的位置278

15.4.6 重设读取目录的位置为开头位置279

15.5 DFS功能配置279

15.6 DFS应用示例279

15.6.1 准备工作280

15.6.2 读写文件示例283

15.6.3 更改文件名称示例284

15.6.4 获取文件状态示例285

15.6.5 创建目录示例286

15.6.6 读取目录示例286

15.6.7 设置读取目录位置示例287

15.7 本章小结289

第16章 网络框架290

16.1 TCP/IP网络协议简介290

16.1.1 OSI参考模型290

16.1.2 TCP/IP参考模型291

16.1.3 TCP/IP参考模型和OSI参考模型的区别291

16.1.4 IP地址292

16.1.5 子网掩码292

16.1.6 MAC地址292

16.2 RT-Thread网络框架介绍292

16.3 网络框架工作流程294

16.3.1 网络协议簇注册294

16.3.2 网络数据接收流程295

16.3.3 网络数据发送流程296

16.4 网络套接字编程296

16.4.1 TCPsocket通信流程296

16.4.2 UDPsocket通信流程297

16.4.3 创建套接字298

16.4.4 绑定套接字298

16.4.5 建立TCP连接299

16.4.6 数据传输300

16.4.7 关闭网络连接301

16.5 网络功能配置302

16.6 网络应用示例303

16.6.1 准备工作303

16.6.2 TCP客户端示例306

16.6.3 UDP客户端示例310

16.7 本章小结312

附录A menuconfig配置选项313

附录B SCons构建系统317

你与世界

只差一个

公众号

相关文章:

  • 新书推荐 |《硅谷设计之道:探寻硅谷科技公司的体验设计策略》
  • 叫板 Android 开发!跨平台应用开发神器 Flutter 又添开源插件!
  • AI大牛推荐的八本必读NLP书籍(建议收藏)
  • 新书推荐 |《HTML 5与CSS 3权威指南(第4版•上下册)》
  • 以女大学生相亲为例,给你讲明白数据挖掘算法
  • 新书推荐 |《网络空间安全防御与态势感知》
  • 新书推荐 |《Hyperledger Fabric技术内幕:架构设计与实现原理》
  • JVM核心知识体系
  • 新书推荐 |《Kubernetes进阶实战》
  • 福利丨45本好书等你来领!
  • Python 编程 5 年后,我转向了 Go!
  • 包邮送 35 Python经典本书,已全部打包好!
  • 新书推荐 |《企业私有云建设指南》
  • 众神的盛宴!阿里巴巴数学竞赛颁奖典礼,在江湖中一直流传许久的传说一一现身!...
  • 新书推荐 |《区块链财税管理与Corda开发指南》
  • canvas 五子棋游戏
  • CentOS 7 防火墙操作
  • crontab执行失败的多种原因
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • HTML中设置input等文本框为不可操作
  • PHP变量
  • python 装饰器(一)
  • Sass Day-01
  • springMvc学习笔记(2)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 分享几个不错的工具
  • 深入浅出Node.js
  • 数组大概知多少
  • 写给高年级小学生看的《Bash 指南》
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 飞书APP集成平台-数字化落地
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)虚拟机的安装与使用,linux系统安装
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (poj1.3.2)1791(构造法模拟)
  • (待修改)PyG安装步骤
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (接口封装)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Net CF下精确的计时器
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net Web项目创建比较不错的参考文章
  • .NET 常见的偏门问题
  • .Net的DataSet直接与SQL2005交互
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [20170705]lsnrctl status LISTENER_SCAN1