驅動篇
第1章OneOS設備驅動框架2
1.1設備驅動模型2
1.2系統(tǒng)調用接口3
第2章OneOS ADC設備8
2.1ADC簡介8
2.2STM32CubeMX配置14
2.3單通道ADC采集實驗16
2.3.1功能設計16
2.3.2軟件設計16
2.3.4下載驗證17
第3章OneOS Serial設備18
3.1串口簡介18
3.1.1數據通信的基礎概念18
3.1.2串口通信協(xié)議20
3.2STM32CubeMX配置22
3.3串口通信實驗24
3.3.1功能設計24
3.3.2軟件設計25
3.3.3下載驗證27
第4章OneOS IIC設備29
4.1IIC及24C0229
4.1.1IIC簡介29
4.1.224C02簡介32
4.2IIC相關數據類型及API函數34
4.2.1IIC相關的數據類型34
4.2.2IIC的相關API函數35
4.3OneOSCube配置39
4.4IIC實驗40
4.4.1功能設計40
4.4.2軟件設計41
4.4.3下載驗證45
第5章OneOS SPI設備46
5.1SPI及Nor Flash芯片46
5.1.1SPI介紹46
5.1.2Nor Flash50
5.2SPI API函數54
5.3STM32CubeMX配置55
5.4SPI實驗57
5.4.1功能設計57
5.4.2軟件設計58
5.4.3下載驗證62
第6章OneOS RTC設備63
6.1RTC簡介63
6.2RTC相關函數63
6.3STM32CubeMX配置65
6.4RTC實驗66
6.4.1功能設計66
6.4.2軟件設計66
6.4.3下載驗證68
第7章OneOS Clocksource設備69
7.1Clocksource簡介69
7.2Clocksource相關函數69
7.3STM32CubeMX配置71
7.4Clocksource實驗72
7.4.1功能設計72
7.4.2軟件設計72
7.4.3下載驗證76
第8章OneOS Clockevent設備77
8.1Clockevent簡介77
8.2Clockevent相關函數77
8.3STM32CubeMX配置80
8.4Clockevent實驗81
8.4.1功能設計81
8.4.2軟件設計82
8.4.3下載驗證85
第9章OneOS CAN設備86
9.1CAN簡介86
9.2CAN相關函數87
9.3STM32CubeMX配置92
9.4CAN實驗93
9.4.1功能設計93
9.4.2軟件設計94
9.4.3下載驗證96
組件篇
第10章DLOG日志系統(tǒng)99
10.1DLOG日志系統(tǒng)簡介99
10.2DLOG日志系統(tǒng)相關函數100
10.3STM32CubeMX配置107
10.4DLOG日志系統(tǒng)實驗108
10.4.1功能設計108
10.4.2軟件設計108
10.4.3下載驗證110
第11章文件系統(tǒng)116
11.1文件系統(tǒng)簡介116
11.2文件系統(tǒng)相關函數117
11.3STM32CubeMX配置130
11.4文件系統(tǒng)實驗131
11.4.1功能設計131
11.4.2軟件設計131
11.4.3下載驗證134
第12章MoLink模組連接套件136
12.1MoLink模組簡介136
12.1.1什么是MoLink136
12.1.2MoLink架構解析137
12.2MoLink模組API函數141
12.2.1模組管理接口141
12.2.2通用控制接口143
12.2.3網絡服務接口146
12.3Socket套件使用152
12.3.1Socket API函數153
12.3.2Socket編程UDP流程160
12.3.3Socket編程TCP客戶端流程160
12.3.4Socket編程TCP服務器流程161
12.4MoLink模組實驗161
12.4.1功能設計161
12.4.2軟件設計161
12.4.3下載驗證165
第13章CoAP協(xié)議167
13.1CoAP協(xié)議簡介167
13.2OneOS配置CoAP協(xié)議168
13.3libCoAP協(xié)議API函數168
13.4CoAP協(xié)議實驗178
13.4.1功能設計178
13.4.2軟件設計178
13.4.3下載驗證183
第14章MQTT協(xié)議184
14.1MQTT協(xié)議簡介184
14.2MQTT協(xié)議原理185
14.2.1MQTT協(xié)議實現方式185
14.2.2MQTT網絡傳輸與應用消息186
14.2.3MQTT客戶端186
14.2.4MQTT服務器186
14.2.5MQTT協(xié)議中的訂閱、主題、會話186
14.2.6MQTT協(xié)議的服務質量以及消息類型187
14.2.7MQTT協(xié)議數據包結構188
14.3MQTT協(xié)議實現原理191
14.4OneNET Kit解析194
14.5OneNET Kit數據結構以及API函數解析196
14.5.1MQTTAPI列表199
14.5.2OneNET平臺配置MQTT203
14.6MQTT實驗205
14.6.1功能設計205
14.6.2軟件設計205
14.6.3下載驗證210
第15章OTA遠程升級211
15.1OTA簡介211
15.2OneOS OTA函數211
15.3OneOS的OTA配置214
15.4OTA實驗218
15.4.1功能設計218
15.4.2軟件設計218
15.4.3下載驗證219
異核通信篇
第16章配置OpenAMP221
16.1構建STM32MP157的OneOS工程221
16.2STM32CubeMX配置224
16.2.1開啟IPCC224
16.2.2開啟OpenAMP225
16.3構建工程226
16.4編譯工程229
第17章STM32MP157資源分配231
17.1STM32MP157資源231
17.2STM32MP157內核外設分配232
17.3STM32MP157存儲分配238
第18章異核通信框架242
18.1SMP和AMP架構242
18.1.1同構和異構242
18.1.2SMP和AMP243
18.2IPCC通信框架245
18.2.1Mailbox框架245
18.3.2IPCC框架246
18.3OpenAMP框架247
18.3.1Virtio(虛擬化模塊)248
18.3.2RPMsg(遠程處理器消息傳遞)248
18.3.3Remoteproc(遠程處理)250
18.4驅動文件252
18.4.1Linux驅動編譯配置252
18.4.2Linux驅動文件253
18.4.3M4工程驅動文件255
第19章Remoteproc相關驅動簡析258
19.1資源表258
19.2存儲和系統(tǒng)資源分配262
19.2.1存儲分配262
19.2.2系統(tǒng)資源分配265
19.3Linux下Remoteproc相關API函數270
19.3.1rproc結構體272
19.3.2初始化 Remoteproc 實例272
19.3.3退出Remoteproc 實例274
19.3.4啟動遠程處理器274
19.3.5關閉遠程處理器276
19.3.6分配遠程處理器句柄278
19.3.7注冊遠程處理器280
19.3.8rproc設備樹節(jié)點287
19.4分散加載文件291
19.4.1分散加載文件地址分配291
19.4.2重新劃分存儲區(qū)域293
19.5Remoteproc的使用297
19.5.1硬件連接297
19.5.2傳輸固件297
19.5.3加載和運行固件301
19.5.4關閉固件305
19.5.4編寫腳本305
第20章RPMsg相關驅動308
20.1Linux下RPMsg相關驅動文件308
20.1.1相關的結構體310
20.1.2緩沖區(qū)314
20.1.3創(chuàng)建RPMsg通道API函數315
20.1.4創(chuàng)建RPMsg 端點API函數317
20.1.5發(fā)送消息API函數318
20.2OpenAMP庫中的API函數324
20.2.1初始化IPCC API函數324
20.2.2初始化OpenAMP API函數325
20.2.3回調函數326
20.2.4創(chuàng)建RPMsg端點API函數327
20.2.5輪詢API函數327
20.2.6發(fā)送消息API函數328
20.3基于RPMsg的異核通信實驗330
20.3.1功能設計330
20.3.2軟件設計331
20.3.3實驗驗證339
第21章基于虛擬串口實現異核通信346
21.1虛擬串口概述346
21.2Linux下虛擬串口驅動分析348
21.3OpenAMP庫中的API函數352
21.3.1虛擬串口初始化API函數352
21.3.2虛擬串口回調API函數352
21.3.3注冊回調函數352
21.3.4虛擬串口發(fā)送API函數353
21.4OneOS下虛擬串口驅動分析353
21.5基于虛擬串口的異核通信實驗1355
21.5.1功能設計355
21.5.2軟件設計356
21.5.3實驗驗證359
21.6基于虛擬串口的異核通信實驗2364
21.6.1功能設計364
21.6.2軟件設計364
21.6.3實驗驗證367
附錄A萬耦天工STM32F103開發(fā)板370
附錄B萬耦天工STM32MP157開發(fā)板377
參考文獻386