物联网操作系统LiteOS内核开发与实践/刘旭明
- ISBN:9787115529091
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:280
- 出版时间:2020-07-01
- 条形码:9787115529091 ; 978-7-115-52909-1
本书特色
本书较为全面地介绍了华为物联网操作系统LiteOS内核相关知识。全书共12章,介绍了LiteOS的移植与内核资源的应用,如创建任务、任务管理、消息队列、信号量、互斥锁、事件、软件定时器、内存管理、中断管理及链表等操作,深入讲解了内核资源的概念、运行机制、应用场景及源码。本书提供了大量实验,通过练习和操作实践,读者可巩固所学的内容。 本书可以作为高校物联网、嵌入式等相关专业的教材,也可以作为物联网、嵌入式培训班的教材,还适合物联网开发人员、从事物联网技术支持的专业人员和广大嵌入式爱好者自学使用。
内容简介
本书较为全面地介绍了华为物联网操作系统LiteOS内核相关知识。全书共12章,介绍了LiteOS的移植与内核资源的应用,如创建任务、任务管理、消息队列、信号量、互斥锁、事件、软件定时器、内存管理、中断管理及链表等操作,深入讲解了内核资源的概念、运行机制、应用场景及源码。本书提供了大量实验,通过练习和操作实践,读者可巩固所学的内容。 本书可以作为高校物联网、嵌入式等相关专业的教材,也可以作为物联网、嵌入式培训班的教材,还适合物联网开发人员、从事物联网技术支持的专业人员和广大嵌入式爱好者自学使用。
目录
1.1 LiteOS概述 1
1.2 学习LiteOS 2
第 2章 移植LiteOS到STM32 4
2.1 移植前的准备工作 4
2.1.1 获取STM32的裸机工程模板 4
2.1.2 下载LiteOS源码 4
2.1.3 LiteOS源码核心文件夹分析 5
2.2 向裸机工程中添加LiteOS源码 6
2.2.1 复制LiteOS文件夹到裸机工程根目录中 6
2.2.2 将OS_CONFIG文件夹中配置文件复制到LiteOS文件夹中 7
2.2.3 复制Include文件夹到CMSIS文件夹中 7
2.2.4 LiteOS文件夹内容介绍 7
2.2.5 添加LiteOS核心源码到工程组文件夹中 9
2.3 接管中断版本修改target_config.h 11
2.3.1 target_config.h文件内容讲解 11
2.3.2 target_config.h文件修改 22
2.4 非接管中断版本修改target_config.h 29
2.4.1 target_config.h文件内容 29
2.4.2 target_config.h文件修改 32
2.5 修改相关文件 34
2.5.1 启动文件内容修改 34
2.5.2 分散加载文件修改 36
2.5.3 修改中断相关文件 38
2.5.4 修改core_cm3.h文件 39
2.6 修改工程配置 39
2.7 修改main.c 40
2.8 下载验证 41
第3章 创建任务 42
3.1 硬件初始化 42
3.2 创建单任务 43
3.2.1 动态内存空间的堆 43
3.2.2 LiteOS核心初始化 44
3.2.3 定义任务函数 45
3.2.4 定义任务ID变量 46
3.2.5 任务控制块 46
3.2.6 创建具体任务 47
3.3 main.c文件内容全貌 48
3.4 创建多任务 51
3.5 LiteOS的启动流程 56
3.5.1 第 一种启动方式 56
3.5.2 第二种启动方式 57
3.5.3 LiteOS的启动流程 59
第4章 任务管理 66
4.1 基本概念 66
4.1.1 任务的基本概念 66
4.1.2 调度器的基本概念 67
4.1.3 任务状态的基本概念 67
4.1.4 任务状态迁移 67
4.2 常用的任务函数 68
4.2.1 任务创建函数LOS_TaskCreate 68
4.2.2 任务删除函数LOS_TaskDelete 70
4.2.3 任务延时函数LOS_TaskDelay 72
4.2.4 任务挂起函数LOS_TaskSuspend 73
4.2.5 任务恢复函数LOS_TaskResume 74
4.3 常用Task错误代码说明 75
4.4 常用任务函数的使用方法 76
4.4.1 任务创建函数LOS_TaskCreate 76
4.4.2 任务删除函数LOS_TaskDelete 77
4.4.3 任务延时函数LOS_TaskDelay 78
4.4.4 任务挂起与恢复函数 78
4.5 任务的设计要点 79
4.6 任务管理实验 80
4.7 实验现象 85
第5章 消息队列 86
5.1 消息队列的基本概念 86
5.2 消息队列的运行机制 87
5.3 消息队列的传输机制 88
5.4 消息队列的阻塞机制 88
5.4.1 出队阻塞 89
5.4.2 入队阻塞 89
5.5 常见队列错误代码说明 89
5.6 常用消息队列的函数 91
5.6.1 消息队列创建函数LOS_QueueCreate 91
5.6.2 消息队列删除函数LOS_QueueDelete 94
5.6.3 消息队列写消息函数 96
5.6.4 通用的消息队列处理函数 100
5.6.5 消息队列读消息函数 103
5.7 消息队列实验 107
5.8 实验现象 112
第6章 信号量 114
6.1 信号量的基本概念 114
6.1.1 二值信号量 115
6.1.2 计数信号量 115
6.2 二值信号量的运行机制 116
6.3 二值信号量的应用场景 116
6.4 计数信号量的运行机制 117
6.5 信号量的使用 117
6.5.1 信号量控制块 117
6.5.2 常见信号量错误代码 118
6.5.3 二值信号量创建函数LOS_BinarySemCreate 118
6.5.4 计数信号量创建函数LOS_SemCreate 120
6.5.5 信号量删除函数LOS_SemDelete 121
6.5.6 信号量释放函数LOS_SemPost 122
6.5.7 信号量获取函数LOS_SemPend 124
6.6 二值信号量同步实验 126
6.7 二值信号量同步实验现象 131
6.8 计数信号量实验 132
6.9 计数信号量实验现象 137
第7章 互斥锁 139
7.1 互斥锁的基本概念 139
7.2 互斥锁的优先级继承机制 140
7.3 互斥锁的运行机制 142
7.4 互斥锁的应用场景 142
7.5 互斥锁的使用 143
7.5.1 互斥锁控制块 143
7.5.2 互斥锁错误代码 143
7.5.3 互斥锁创建函数LOS_MuxCreate 144
7.5.4 互斥锁删除函数LOS_MuxDelete 145
7.5.5 互斥锁释放函数LOS_MuxPost 147
7.5.6 互斥锁获取函数LOS_MuxPend 149
7.5.7 使用互斥锁的注意事项 151
7.6 互斥锁实验 151
7.6.1 模拟优先级翻转实验 152
7.6.2 互斥锁实验 158
7.7 实验现象 164
7.7.1 模拟优先级翻转实验现象 164
7.7.2 互斥锁实验现象 165
第8章 事件 166
8.1 事件的基本概念 166
8.2 事件的运行机制 167
8.3 事件的应用场景 168
8.4 事件的使用 169
8.4.1 事件控制块 169
8.4.2 常见事件错误代码 169
8.4.3 事件初始化函数LOS_EventInit 169
8.4.4 事件销毁函数LOS_EventDestory 170
8.4.5 写指定事件函数LOS_EventWrite 170
8.4.6 读指定事件函数LOS_EventRead 172
8.4.7 清除指定事件函数LOS_EventClear 175
8.5 事件标志组实验 176
8.6 实验现象 182
第9章 软件定时器 183
9.1 软件定时器简介 183
9.1.1 软件定时器的基本概念 183
9.1.2 软件定时器的运行机制 184
9.1.3 软件定时器的精度 185
9.1.4 软件定时器的应用场景 185
9.2 软件定时器的函数 185
9.2.1 软件定时器控制块 186
9.2.2 软件定时器错误代码 186
9.2.3 软件定时器开发典型流程 187
9.2.4 软件定时器创建函数LOS_SwtmrCreate 187
9.2.5 软件定时器删除函数LOS_SwtmrDelete 190
9.2.6 软件定时器启动函数LOS_SwtmrStart 192
9.2.7 软件定时器停止函数LOS_SwtmrStop 196
9.3 软件定时器实验 198
9.4 实验现象 202
第 10章 内存管理 204
10.1 内存管理的基本概念 204
10.2 内存管理的运行机制 205
10.3 内存管理的应用场景 207
10.4 静态内存池的使用 208
10.4.1 静态内存池控制块 208
10.4.2 静态内存池初始化函数LOS_MemboxInit 208
10.4.3 静态内存池分配函数LOS_MemboxAlloc 210
10.4.4 静态内存池释放函数LOS_MemboxFree 212
10.4.5 静态内存池内容清除函数LOS_MemboxClr 213
10.5 动态内存的使用 213
10.5.1 动态内存初始化函数LOS_MemInit 214
10.5.2 动态内存分配函数LOS_MemAlloc 217
10.5.3 动态内存释放函数LOS_MemFree 220
10.6 内存管理实验 223
10.6.1 静态内存池管理实验 223
10.6.2 动态内存管理实验 229
10.7 实验现象 235
10.7.1 静态内存池管理实验现象 235
10.7.2 动态内存管理实验现象 236
第 11章 中断管理 237
11.1 中断简介 237
11.1.1 异常 237
11.1.2 中断 238
11.2 中断的运行机制 239
11.3 中断的应用场景 240
11.4 中断延迟的基本概念 240
11.5 中断的使用 241
11.5.1 接管中断版本的移植 241
11.5.2 接管中断版本的常用函数 241
11.5.3 非接管中断 245
11.6 中断管理实验 246
11.6.1 接管中断方式 246
11.6.2 非接管中断方式 251
11.7 实验现象 256
第 12章 链表 257
12.1 C语言中的链表 257
12.2 链表的使用 258
12.2.1 链表初始化函数LOS_ListInit 258
12.2.2 向链表中添加节点函数LOS_ListAdd 259
12.2.3 从链表中删除节点函数LOS_ListDelete 260
12.3 双向链表实验 261
12.4 实验现象 264
作者简介
刘火良,野火电子创始人,系统工程师,近十年来一直从事嵌入式系统的软硬件开发工作,出版著作有《STM32库开发实战指南-基于STM32F103(第2版)》,《STM32库开发实战指南-基于STM32F4》,《freeRTOS内核实现与应用开发实战指南》,《ucosiii内核实现与应用开发实战指南》《RT-Thread内核实现与应用开发实战指南》,《Lwip应用开发实战指南》。
-
乡村振兴新技术:新时代农村短视频编辑技术基础入门
¥12.8¥32.0 -
AI绘画+AI摄影+AI短视频从入门到精通
¥45.5¥79.8 -
企业AI之旅
¥43.5¥79.0 -
机器学习
¥59.4¥108.0 -
基于知识蒸馏的图像去雾技术
¥61.6¥88.0 -
软件设计的哲学(第2版)
¥51.0¥69.8 -
智能算法优化及其应用
¥52.4¥68.0 -
Photoshop图像处理
¥25.5¥49.0 -
R语言医学数据分析实践
¥72.3¥99.0 -
大模型推荐系统:算法原理、代码实战与案例分析
¥62.3¥89.0 -
剪映 从入门到精通
¥25.7¥59.8 -
游戏造梦师----游戏场景开发与设计
¥67.6¥98.0 -
SAR图像处理与检测
¥35.4¥49.8 -
人工智能
¥29.4¥42.0 -
中文版PHOTOSHOP 2024+AI修图入门教程
¥59.3¥79.0 -
WPS办公软件应用
¥25.2¥36.0 -
格拉斯曼流行学习及其在图像集分类中的应用
¥13.7¥28.0 -
轻松上手AIGC:如何更好地向CHATGPT提问
¥40.3¥62.0 -
元宇宙的理想与现实:数字科技大成的赋能与治理逻辑
¥61.6¥88.0 -
云原生安全:攻防与运营实战
¥66.8¥89.0