第1章OneOS简介2
1.1初识OneOS2
1.1.1什么是OneOS2
1.1.2为什么选择OneOS5
1.1.3OneOS特点6
1.2磨刀不误砍柴工7
1.2.1资料查找7
1.2.2CortexM架构资料8
1.3OneOS源码初探8
1.3.1OneOS源码下载8
1.3.2OneOS文件预览8
第2章OneOS搭建开发环境11
2.1OneOSCube介绍11
2.2构造项目工程12
内核基础
第3章OneOS自动初始化机制16
3.1OneOS自动初始化机制意义16
3.2OneOS自动初始化机制原理17
第4章OneOS中断和临界段详解22
4.1CortexM和OneOS中断22
4.1.1CortexM中断22
4.1.2CortexM中断管理22
4.1.3CortexM优先级分组定义24
4.1.4CortexM优先级设置26
4.1.5CortexM用于中断屏蔽的特殊寄存器27
4.2OneOS中断实验28
4.2.1功能设计28
4.2.2软件设计30
4.2.3下载验证32
OneOS内核基础入门
第5章OneOS任务基础知识33
5.1什么是多任务系统33
5.2任务调度管理实现35
5.2.1任务管理35
5.2.2任务状态36
5.2.3任务优先级38
5.2.4任务实现38
5.2.5任务控制块39
5.2.6任务堆栈40
第6章OneOS任务相关API函数42
6.1任务创建和删除API函数42
6.2动态创建与删除任务实验44
6.2.1功能设计44
6.2.2软件设计45
6.2.3下载验证47
6.3静态创建与删除任务实验48
6.3.1功能设计48
6.3.2软件设计48
6.3.3下载验证50
6.4任务挂起和恢复API函数50
6.5挂起和恢复任务实验51
6.5.1功能设计51
6.5.2软件设计52
6.5.3下载验证55
第7章其他API函数56
7.1任务相关的API函数56
7.1.1概述56
7.1.2任务相关API函数详解57
7.2任务状态查询API函数实验66
7.2.1功能设计66
7.2.2软件设计66
7.2.3下载验证69
7.3时间片调度69
7.4OneOS时间片调度实验72
7.4.1功能设计72
7.4.2软件设计72
7.4.3下载验证74
第8章OneOS单项链表和双向链表76
8.1链表76
8.2单向链表76
8.2.1单向链表的简介76
8.2.2单向链表的初始化77
8.2.3单向链表的链表项插入78
8.2.4单向链表的链表项尾部插入79
8.2.5单向链表的链表项删除80
8.2.6单向链表的遍历81
8.2.7其他单向链表API函数81
8.3双向链表86
8.3.1双向链表的简介86
8.3.2双向链表的初始化86
8.3.3双向链表的链表项插入87
8.3.4双向链表的链表项尾部插入88
8.3.5双向链表的链表项删除89
8.3.6双向链表的遍历90
8.3.7其他双向链表API函数91
8.4单向链表实验97
8.4.1功能设计97
8.4.2软件设计97
8.4.3下载验证101
8.5双向链表实验101
8.5.1功能设计101
8.5.2软件设计102
8.5.3下载验证105
第9章任务调度原理详解106
9.1任务调度开始过程分析106
9.1.1任务调度器初始化分析106
9.1.2启动第一个任务107
9.1.3查找下一个要运行的任务113
9.1.4系统任务详解115
9.2任务创建过程分析118
9.3任务删除过程分析124
9.4任务挂起过程分析126
9.5任务恢复过程分析129
第10章OneOS系统内核控制函数131
10.1内核控制函数预览131
10.2内核控制函数详解132
第11章OneOS时间管理140
11.1OneOS延时函数140
11.1.1函数os_task_tsleep()140
11.1.2函数os_task_msleep()141
11.2OneOS系统时钟节拍142
11.3任务睡眠时间处理145
通信机制
第12章OneOS信号量149
12.1信号量简介149
12.2信号量原理详解150
12.2.1信号量结构体152
12.2.2创建信号量153
12.2.3信号量创建过程分析153
12.2.4释放信号量156
12.2.5获取信号量157
12.2.6信号量其他API函数159
12.2.7信号量配置160
12.3信号量操作实验161
12.3.1功能设计161
12.3.2软件设计161
12.3.3下载验证163
12.4优先级翻转163
12.5优先级翻转实验165
12.5.1功能设计165
12.5.2软件设计165
12.5.3下载验证168
第13章OneOS互斥锁170
13.1互斥锁170
13.1.1互斥锁结构体173
13.1.2互斥锁创建与初始化174
13.1.3互斥锁创建过程分析175
13.1.4释放互斥锁177
13.1.5获取互斥锁180
13.1.6互斥锁其他API函数183
13.1.7互斥锁配置185
13.2互斥锁操作实验185
13.2.1功能设计185
13.2.2软件设计185
13.2.3下载验证188
第14章OneOS消息队列190
14.1消息队列与API函数190
14.1.1消息队列简介190
14.1.2消息队列结构体194
14.1.3消息队列创建195
14.1.4向消息队列发送消息200
14.1.5从消息队列读取消息205
14.1.6消息队列其他API函数210
14.1.7消息队列配置213
14.2消息队列操作实验213
14.2.1功能设计213
14.2.2软件设计213
14.2.3下载验证216
第15章OneOS工作队列217
15.1工作队列217
15.1.1工作队列实现过程217
15.1.2工作队列结构体218
15.1.3工作队列的创建与初始化218
15.1.4工作队列的提交225
15.1.5工作队列的取消229
15.1.6工作队列配置232
15.2工作队列实验233
15.2.1功能设计233
15.2.2软件设计233
15.2.3下载验证236
第16章OneOS自旋锁237
16.1自旋锁237
16.2自旋锁原理237
16.2.1自旋锁创建238
16.2.2获取自旋锁239
16.2.3释放自旋锁240
16.2.4自旋锁配置选项242
16.3OneOS自旋锁实验242
16.3.1功能设计242
16.3.2软件设计242
16.3.3下载验证244
第17章OneOS事件245
17.1事件245
17.1.1事件原理246
17.1.2创建事件248
17.1.3发送事件251
17.1.4接收事件253
17.1.5事件其他API函数256
17.1.6事件配置选项257
17.2OneOS事件实验258
17.2.1功能设计258
17.2.2软件设计258
17.2.3下载验证260
第18章OneOS定时器261
18.1定时器简介261
18.1.1单次定时器和周期定时器261
18.1.2定时器原理详解262
18.1.3定时器结构体详解263
18.1.4创建定时器263
18.1.5启动定时器266
18.1.6停止定时器266
18.1.7删除定时器267
18.1.8定时器其他API函数详解267
18.1.9定时器配置269
18.2OneOS定时器实验269
18.2.1功能设计269
18.2.2软件设计270
18.2.3下载验证272
第19章OneOS原子操作273
19.1原子操作273
19.2原子操作API函数276
19.3原子操作实验291
19.3.1功能设计291
19.3.2软件设计291
19.3.3下载验证29
第20章OneOS邮箱294
20.1邮箱简介294
20.2邮箱API函数297
20.2.1邮箱创建297
20.2.2邮箱发送301
20.2.3邮箱接收303
20.2.4邮箱其他API函数306
20.2.5邮箱配置选项309
20.3邮箱实验310
20.3.1功能设计310
20.3.2软件设计310
20.3.3下载验证312
内核管理
第21章OneOS内存管理314
21.1内存堆管理314
21.2Firstfit内存堆管理算法317
21.3Firstfit内存堆管理算法函数322
21.4Buddy内存堆管理算法338
21.5Buddy内存堆管理算法函数341
21.6OneOS内存堆357
21.7内存池管理376
21.8内存池管理函数378
21.9内存堆管理实验389
21.9.1功能设计389
21.9.2软件设计390
21.9.3下载验证392
21.10内存池管理实验393
21.10.1功能设计393
21.10.2软件设计393
21.10.3下载验证396
附录万耦天工STM32F103开发板397
参考文献404