好书推荐 好书速递 排行榜 读书文摘

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

嵌入式实时操作系统:RT-Thread设计与实现
作者:邱祎 / 熊谱翔 / 朱天龙
出版社:机械工业出版社
出版年:2019-03
ISBN:9787111619345
行业:设计
浏览数:3

内容简介

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

......(更多)

作者简介

邱祎,睿赛德科技联合创始人。从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.1RT-Thread概述9

2.2RT-Thread的架构10

2.3RT-Thread的获取11

2.4RT-Thread快速上手12

2.4.1准备环境13

2.4.2初识RT-Thread16

2.4.3跑马灯的例子20

2.5本章小结21

第3章内核基础22

3.1RT-Thread内核介绍22

3.2RT-Thread启动流程24

3.3RT-Thread程序内存分布26

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

3.5RT-Thread内核对象模型29

3.5.1静态对象和动态对象29

3.5.2内核对象管理架构31

3.5.3对象控制块33

3.5.4内核对象管理方式34

3.6RT-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.1RT-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.2slab管理算法132

8.2.3memheap管理算法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.1Cortex-MCPU架构基础146

9.1.1寄存器介绍147

9.1.2操作模式和特权级别148

9.1.3嵌套向量中断控制器148

9.1.4PendSV系统调用149

9.2RT-Thread中断工作机制149

9.2.1中断向量表149

9.2.2中断处理过程151

9.2.3中断嵌套153

9.2.4中断栈154

9.2.5中断的底半处理154

9.3RT-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.1CPU架构移植165

10.1.1实现全局中断开关166

10.1.2实现线程栈初始化167

10.1.3实现上下文切换168

10.1.4实现时钟节拍174

10.2BSP移植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.1Env简介186

11.2Env的功能特点187

11.3Env工程构建示例189

11.4构建更多MDK工程196

11.4.1创建外设示例工程196

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

11.4.3创建网络示例工程202

11.5本章小结206

第12章FinSH控制台207

12.1FinSH介绍207

12.2FinSH内置命令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.4FinSH功能配置214

12.5FinSH应用示例216

12.5.1自定义msh命令示例216

12.5.2带参数的msh命令示例217

12.6本章小结218

第13章I/O设备管理219

13.1I/O设备介绍219

13.1.1I/O设备管理框架219

13.1.2I/O设备模型221

13.1.3I/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.1UART串口232

14.1.1串口设备管理233

14.1.2创建和注册串口设备233

14.1.3访问串口设备235

14.1.4串口设备使用示例235

14.2GPIO237

14.2.1PIN设备管理238

14.2.2创建和注册PIN设备238

14.2.3访问PIN设备239

14.2.4PIN设备使用示例242

14.3SPI总线243

14.3.1SPI设备管理244

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

14.3.3创建和挂载SPI从设备247

14.3.4访问SPI从设备249

14.3.5特殊使用场景254

14.3.6SPI设备使用示例255

14.4I2C总线256

14.4.1I2C设备管理258

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

14.4.3访问I2C设备259

14.4.4I2C设备应用示例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.1DFS介绍268

15.1.1DFS架构269

15.1.2POSIX接口层269

15.1.3虚拟文件系统层270

15.1.4设备抽象层270

15.2文件系统挂载管理271

15.2.1DFS组件初始化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.5DFS功能配置279

15.6DFS应用示例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.1TCP/IP网络协议简介290

16.1.1OSI参考模型290

16.1.2TCP/IP参考模型291

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

16.1.4IP地址292

16.1.5子网掩码292

16.1.6MAC地址292

16.2RT-Thread网络框架介绍292

16.3网络框架工作流程294

16.3.1网络协议簇注册294

16.3.2网络数据接收流程295

16.3.3网络数据发送流程296

16.4网络套接字编程296

16.4.1TCPsocket通信流程296

16.4.2UDPsocket通信流程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.2TCP客户端示例306

16.6.3UDP客户端示例310

16.7本章小结312

附录Amenuconfig配置选项313

附录BSCons构建系统317

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看