●驅動篇
第1章OneOS設備驅動框架2
1.1設備驅動模型2
1.2繫統調用接口3
第2章OneOSADC設備8
2.1ADC簡介8
2.2STM32CubeMX配置14
2.3單通道ADC采集實驗16
2.3.1功能設計16
2.3.2軟件設計16
2.3.4下載驗證17
第3章OneOSSerial設備18
3.1串口簡介18
3.1.1數據通信的基礎概念18
3.1.2串口通信協議20
3.2STM32CubeMX配置22
3.3串口通信實驗24
3.3.1功能設計24
3.3.2軟件設計25
3.3.3下載驗證27
第4章OneOSIIC設備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章OneOSSPI設備46
5.1SPI及NorFlash芯片46
5.1.1SPI介紹46
5.1.2NorFlash50
5.2SPIAPI函數54
5.3STM32CubeMX配置55
5.4SPI實驗57
5.4.1功能設計57
5.4.2軟件設計58
5.4.3下載驗證62
第6章OneOSRTC設備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章OneOSClocksource設備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章OneOSClockevent設備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章OneOSCAN設備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日志繫統99
10.1DLOG日志繫統簡介99
10.2DLOG日志繫統相關函數100
10.3STM32CubeMX配置107
10.4DLOG日志繫統實驗108
10.4.1功能設計108
10.4.2軟件設計108
10.4.3下載驗證110
第11章文件繫統116
11.1文件繫統簡介116
11.2文件繫統相關函數117
11.3STM32CubeMX配置130
11.4文件繫統實驗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.1SocketAPI函數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協議167
13.1CoAP協議簡介167
13.2OneOS配置CoAP協議168
13.3libCoAP協議API函數168
13.4CoAP協議實驗178
13.4.1功能設計178
13.4.2軟件設計178
13.4.3下載驗證183
第14章MQTT協議184
14.1MQTT協議簡介184
14.2MQTT協議原理185
14.2.1MQTT協議實現方式185
14.2.2MQTT網絡傳輸與應用消息186
14.2.3MQTT客戶端186
14.2.4MQTT服務器186
14.2.5MQTT協議中的訂閱、主題、會話186
14.2.6MQTT協議的服務質量以及消息類型187
14.2.7MQTT協議數據包結構188
14.3MQTT協議實現原理191
14.4OneNETKit解析194
14.5OneNETKit數據結構以及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.2OneOSOTA函數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存儲和繫統資源分配262
19.2.1存儲分配262
19.2.2繫統資源分配265
19.3Linux下Remoteproc相關API函數270
19.3.1rproc結構體272
19.3.2初始化Remoteproc實例272
19.3. 出Remoteproc實例274
19.3.4啟動遠程處理器274
19.3.5關閉遠程處理器276
19.3.6分配遠程處理器句柄278
19.3.7注冊遠程處理器280
19.3.8rproc設備樹節點287
19.4分散加載文件291
19.4.1分散加載文件地址分配291
19.4.2重新劃分存儲區域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緩衝區314
20.1.3創建RPMsg通道API函數315
20.1.4創建RPMsg端點API函數317
20.1.5發送消息API函數318
20.2OpenAMP庫中的API函數324
20.2.1初始化IPCCAPI函數324
20.2.2初始化OpenAMPAPI函數325
20.2.3回調函數326
20.2.4創建RPMsg端點API函數327
20.2.5輪詢API函數327
20.2.6發送消息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虛擬串口發送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開發板370
附錄B萬耦天工STM32MP157開發板377
參考文獻386