注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)LinuxLinux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)

Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)

Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)

定 價(jià):¥149.00

作 者: [美]約翰·馬德奧 著,李強(qiáng) 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787302619024 出版時(shí)間: 2022-12-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)》本書(shū)詳細(xì)闡述了與Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)相關(guān)的基本解決方案,主要包括Linux內(nèi)核概念、regmap API應(yīng)用、MFD子系統(tǒng)和syscon API、通用時(shí)鐘框架、ALSA SoC框架、V4L2和視頻采集、集成V4L2異步和媒體控制器框架、V4L2 API、Linux內(nèi)核電源管理、PCI設(shè)備驅(qū)動(dòng)、NVMEM框架、看門狗設(shè)備驅(qū)動(dòng)、Linux內(nèi)核調(diào)試技巧和**實(shí)踐等內(nèi)容。此外,本書(shū)還提供了相應(yīng)的示例、代碼,以幫助讀者進(jìn)一步理解相關(guān)方案的實(shí)現(xiàn)過(guò)程。 本書(shū)適合作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)的教材和教學(xué)參考書(shū),也可作為相關(guān)開(kāi)發(fā)人員的自學(xué)用書(shū)和參考手冊(cè)。 本書(shū)詳細(xì)闡述了與Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)相關(guān)的基本解決方案,主要包括Linux內(nèi)核概念、regmap API應(yīng)用、MFD子系統(tǒng)和syscon API、通用時(shí)鐘框架、ALSA SoC框架、V4L2和視頻采集、集成V4L2異步和媒體控制器框架、V4L2 API、Linux內(nèi)核電源管理、PCI設(shè)備驅(qū)動(dòng)、NVMEM框架、看門狗設(shè)備驅(qū)動(dòng)、Linux內(nèi)核調(diào)試技巧和**實(shí)踐等內(nèi)容。此外,本書(shū)還提供了相應(yīng)的示例、代碼,以幫助讀者進(jìn)一步理解相關(guān)方案的實(shí)現(xiàn)過(guò)程。 本書(shū)適合作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)的教材和教學(xué)參考書(shū),也可作為相關(guān)開(kāi)發(fā)人員的自學(xué)用書(shū)和參考手冊(cè)。

作者簡(jiǎn)介

  約翰·馬德奧現(xiàn)居住在法國(guó)巴黎,他是一位嵌入式Linux和內(nèi)核工程師。他的主要工作包括為物聯(lián)網(wǎng)、自動(dòng)化、運(yùn)輸、醫(yī)療保健、能源和軍事等領(lǐng)域的公司開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序和板級(jí)支持包(Board Support Package,BSP)。John是LABCSMART公司的創(chuàng)始人兼首席顧問(wèn),該公司可為嵌入式Linux和Linux內(nèi)核工程提供培訓(xùn)和服務(wù)。他是一位開(kāi)源和嵌入式系統(tǒng)愛(ài)好者,始終堅(jiān)信只有分享知識(shí),我們才能學(xué)到更多。

圖書(shū)目錄


第1篇  用于嵌入式設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)的內(nèi)核核心框架
第1章  嵌入式開(kāi)發(fā)人員需要掌握的Linux內(nèi)核概念 3
1.1  技術(shù)要求 3
1.2  內(nèi)核鎖API和共享對(duì)象 3
1.2.1  自旋鎖 4
1.2.2  禁用中斷與僅禁用搶占 8
1.2.3  互斥鎖 8
1.2.4  try-lock方法 11
1.3  Linux內(nèi)核中的等待、感知和阻塞 13
1.3.1  等待活動(dòng)完成或狀態(tài)改變 13
1.3.2  Linux內(nèi)核等待隊(duì)列 15
1.4  工作延遲機(jī)制 19
1.4.1  softIRQ 20
1.4.2  關(guān)于ksoftirqd 24
1.4.3  tasklet 25
1.4.4  工作隊(duì)列 28
1.4.5  內(nèi)核共享隊(duì)列 31
1.4.6  新的工作隊(duì)列 32
1.4.7  并發(fā)管理的工作隊(duì)列 33
1.5  Linux內(nèi)核中斷管理 37
1.5.1  中斷的狀態(tài) 37
1.5.2  中斷處理流程 38
1.5.3  設(shè)計(jì)中斷處理程序 40
1.5.4  中斷的標(biāo)志 42
1.5.5  中斷的返回值 44
1.5.6  關(guān)于中斷的一些注意事項(xiàng) 45
1.5.7  上半部和下半部的概念 46
1.5.8  線程中斷處理程序 48
1.5.9  請(qǐng)求一個(gè)上下文中斷 53
1.5.10  使用工作隊(duì)列延遲下半部 55
1.5.11  從中斷處理程序中鎖定 58
1.6  小結(jié) 61
第2章  regmap API應(yīng)用 63
2.1  技術(shù)要求 63
2.2  regmap及其數(shù)據(jù)結(jié)構(gòu) 64
2.2.1  struct regmap_config結(jié)構(gòu)體中的字段 65
2.2.2  訪問(wèn)設(shè)備寄存器 69
2.2.3  一次讀/寫多個(gè)寄存器 71
2.2.4  更新寄存器中的位 72
2.3  regmap和IRQ管理 73
2.3.1  Linux內(nèi)核IRQ管理的結(jié)構(gòu) 73
2.3.2  創(chuàng)建映射 74
2.3.3  struct irq_domain_ops 76
2.3.4  irq_domain_ops.map() 77
2.3.5  irq_domain_ops.xlate() 77
2.4  鏈接IRQ 78
2.4.1  鏈?zhǔn)街袛?78
2.4.2  嵌套中斷 83
2.4.3  irqchip和gpiolib API—新一代 85
2.4.4  基于gpiochip的鏈?zhǔn)絀RQ芯片 87
2.4.5  基于gpiochip的嵌套IRQ芯片 89
2.5  regmap IRQ API和數(shù)據(jù)結(jié)構(gòu) 91
2.5.1  regmap IRQ數(shù)據(jù)結(jié)構(gòu) 91
2.5.2  regmap IRQ API 95
2.5.3  regmap IRQ API示例 98
2.6  小結(jié) 102
第3章  深入研究MFD子系統(tǒng)和syscon API 103
3.1  技術(shù)要求 103
3.2  MFD子系統(tǒng)和syscon API 104
3.2.1  da9055設(shè)備驅(qū)動(dòng)程序示例 104
3.2.2  max8925設(shè)備驅(qū)動(dòng)程序示例 113
3.3  MFD設(shè)備的設(shè)備樹(shù)綁定 116
3.4  了解syscon和simple-mfd 119
3.4.1  syscon API 119
3.4.2  simple-mfd 123
3.5  小結(jié) 125
第4章  通用時(shí)鐘框架 127
4.1  技術(shù)要求 128
4.2  CCF數(shù)據(jù)結(jié)構(gòu)和接口 128
4.2.1  了解struct clk_hw及其依賴項(xiàng) 129
4.2.2  注冊(cè)/取消注冊(cè)時(shí)鐘提供者 131
4.2.3  將時(shí)鐘公開(kāi)給使用者 135
4.2.4  時(shí)鐘提供者設(shè)備樹(shù)節(jié)點(diǎn)及其相關(guān)機(jī)制 136
4.2.5  了解of_parse_phandle_with_args() API 138
4.2.6  了解__of_clk_get_from_provider() API 140
4.2.7  時(shí)鐘解碼回調(diào) 141
4.3  編寫時(shí)鐘提供者驅(qū)動(dòng)程序 145
4.3.1  有關(guān)時(shí)鐘提供者驅(qū)動(dòng)程序的基礎(chǔ)知識(shí) 145
4.3.2  提供時(shí)鐘操作 149
4.3.3  clk_hw.init.flags中的時(shí)鐘標(biāo)志 152
4.3.4  固定頻率時(shí)鐘案例研究及其操作 154
4.3.5  通用簡(jiǎn)化注意事項(xiàng) 156
4.3.6  固定頻率時(shí)鐘設(shè)備綁定 158
4.3.7  PWM時(shí)鐘 159
4.3.8  固定倍頻時(shí)鐘驅(qū)動(dòng)程序及其操作 160
4.3.9  固定倍頻時(shí)鐘的設(shè)備樹(shù)綁定 162
4.3.10  門控時(shí)鐘及其操作 162
4.3.11  基于I2C/SPI的門控時(shí)鐘 164
4.3.12  GPIO門控時(shí)鐘 165
4.3.13  多選一時(shí)鐘及其操作 165
4.3.14  基于I2C/SPI的多選一時(shí)鐘 170
4.3.15  GPIO多選一時(shí)鐘 170
4.3.16  分頻器時(shí)鐘及其操作 172
4.3.17  復(fù)合時(shí)鐘及其操作 176
4.3.18  綜合概述 177
4.4  時(shí)鐘使用者API 179
4.4.1  獲取和釋放時(shí)鐘 180
4.4.2  準(zhǔn)備/取消準(zhǔn)備時(shí)鐘 180
4.4.3  啟用/禁用 181
4.4.4  頻率函數(shù) 181
4.4.5  父函數(shù) 182
4.4.6  綜合概述 182
4.5  小結(jié) 182
第2篇  嵌入式Linux系統(tǒng)中的多媒體和節(jié)能
第5章  ALSA SoC框架—利用編解碼器和平臺(tái)類驅(qū)動(dòng)程序 185
5.1  技術(shù)要求 186
5.2  ASoC簡(jiǎn)介 186
5.2.1  ASoC數(shù)字音頻接口 187
5.2.2  ASoC子元素 187
5.3  編寫編解碼器類驅(qū)動(dòng)程序 189
5.3.1  編解碼器驅(qū)動(dòng)程序的實(shí)例結(jié)構(gòu) 190
5.3.2  編解碼器DAI和PCM配置 192
5.3.3  DAI操作 193
5.3.4  采集和回放硬件配置 196
5.3.5  控件的概念 197
5.3.6  控件命名約定 199
5.3.7  控制元數(shù)據(jù) 200
5.3.8  定義kcontrol 200
5.3.9  設(shè)置一個(gè)簡(jiǎn)單開(kāi)關(guān) 202
5.3.10  設(shè)置帶有音量級(jí)別的開(kāi)關(guān) 203
5.3.11  立體聲控件 203
5.3.12 帶音量級(jí)別的立體聲控件 203
5.3.13  混音器控件 204
5.3.14  定義有多個(gè)輸入的控件 204
5.4  DAPM概念 205
5.4.1  關(guān)于widget 205
5.4.2  定義widget 207
5.4.3  編解碼域定義 207
5.4.4  定義平臺(tái)域widget 208
5.4.5  定義音頻路徑域widget 209
5.4.6  定義音頻流域 211
5.4.7  路徑的概念—widget之間的連接器 213
5.4.8  路由的概念—widget互連 214
5.4.9  定義DAPM kcontrol 215
5.4.10  創(chuàng)建widget和路由 217
5.5  編解碼器組件注冊(cè) 222
5.6  編寫平臺(tái)類驅(qū)動(dòng)程序 224
5.6.1  CPU DAI驅(qū)動(dòng)程序 225
5.6.2  平臺(tái)DMA驅(qū)動(dòng)程序 226
5.6.3  音頻DMA接口 227
5.6.4  PCM硬件配置 230
5.7  小結(jié) 233
第6章  ALSA SoC框架—深入了解機(jī)器類驅(qū)動(dòng)程序 235
6.1  技術(shù)要求 235
6.2  機(jī)器類驅(qū)動(dòng)程序介紹 236
6.2.1  機(jī)器類驅(qū)動(dòng)程序的開(kāi)發(fā)流程 236
6.2.2  DAI鏈接 237
6.2.3  獲取CPU和編解碼器節(jié)點(diǎn) 239
6.3  機(jī)器路由 241
6.3.1  編解碼器引腳 241
6.3.2  板卡接口 242
6.3.3  機(jī)器路由 243
6.3.4  設(shè)備樹(shù)路由 243
6.3.5  靜態(tài)路由 244
6.4  時(shí)鐘和格式注意事項(xiàng) 245
6.4.1  時(shí)鐘和格式設(shè)置輔助函數(shù) 245
6.4.2  格式 246
6.4.3  時(shí)鐘源 247
6.4.4  時(shí)鐘分頻器 247
6.4.5  時(shí)鐘和格式設(shè)置的典型實(shí)現(xiàn) 247
6.5  聲卡注冊(cè) 249
6.6  利用simple-card機(jī)器驅(qū)動(dòng)程序 252
6.6.1  simple-audio機(jī)器驅(qū)動(dòng)程序 252
6.6.2  無(wú)編解碼器聲卡 253
6.7  小結(jié) 254
第7章  V4L2和視頻采集設(shè)備驅(qū)動(dòng)程序揭秘 255
7.1  技術(shù)要求 255
7.2  框架架構(gòu)和主要數(shù)據(jù)結(jié)構(gòu) 255
7.2.1  V4L2架構(gòu)簡(jiǎn)介 256
7.2.2  初始化和注冊(cè)V4L2設(shè)備 257
7.3  橋接視頻設(shè)備驅(qū)動(dòng)程序 258
7.3.1  struct video_device結(jié)構(gòu)體 259
7.3.2  初始化和注冊(cè)視頻設(shè)備 262
7.3.3  視頻設(shè)備文件操作 264
7.3.4  V4L2 ioctl處理 267
7.3.5  videobuf2接口和API 269
7.3.6  緩沖區(qū)的概念 269
7.3.7  平面的概念 271
7.3.8  隊(duì)列的概念 272
7.3.9  與特定驅(qū)動(dòng)程序相關(guān)的流傳輸回調(diào)函數(shù) 274
7.3.10  初始化和釋放vb2隊(duì)列 277
7.4  關(guān)于子設(shè)備 278
7.4.1  子設(shè)備數(shù)據(jù)結(jié)構(gòu)體 279
7.4.2  子設(shè)備初始化 282
7.4.3  子設(shè)備操作 284
7.4.4  核心操作結(jié)構(gòu) 285
7.4.5  視頻操作結(jié)構(gòu) 286
7.4.6  傳感器操作結(jié)構(gòu) 287
7.4.7  調(diào)用子設(shè)備操作 288
7.4.8  子設(shè)備的注冊(cè)和注銷方式 289
7.5  V4L2控件基礎(chǔ)結(jié)構(gòu) 290
7.5.1  標(biāo)準(zhǔn)控件對(duì)象 290
7.5.2  控件處理程序 292
7.5.3  攝像頭傳感器驅(qū)動(dòng)程序示例 294
7.5.4  關(guān)于控件繼承 297
7.6  小結(jié) 297
第8章  集成V4L2異步和媒體控制器框架 299
8.1  技術(shù)要求 299
8.2  V4L2異步接口和圖綁定的概念 299
8.2.1  圖綁定 300
8.2.2  端口和端點(diǎn)表示 300
8.2.3  端點(diǎn)鏈接 301
8.2.4  V4L2異步和面向圖的API 302
8.2.5  從設(shè)備樹(shù)API到通用fwnode圖API 302
8.2.6  V4L2固件節(jié)點(diǎn)API 309
8.2.7  V4L2 fwnode或媒體總線類型 311
8.2.8  BT656和并行總線 312
8.2.9  MIPI CSI-2總線 313
8.2.10  CPP2和MIPI CSI-1總線 314
8.2.11  總線猜測(cè) 315
8.2.12  V4L2異步模式 315
8.2.13  異步模式工作原理 318
8.2.14  異步橋接和子設(shè)備探測(cè)示例 321
8.3  Linux媒體控制器框架 325
8.3.1  媒體控制器抽象模型 325
8.3.2  V4L2設(shè)備抽象 327
8.3.3  媒體控制器數(shù)據(jù)結(jié)構(gòu) 328
8.3.4  在驅(qū)動(dòng)程序中集成媒體控制器支持 333
8.3.5  初始化并注冊(cè)接口和實(shí)體 334
8.3.6  媒體實(shí)體操作 335
8.3.7  媒體總線的概念 335
8.3.8  注冊(cè)媒體設(shè)備 340
8.3.9  來(lái)自用戶空間的媒體控制器 341
8.3.10  使用media-ctl 341
8.3.11  帶有OV2680的WaRP7示例 344
8.4  小結(jié) 351
第9章  從用戶空間利用V4L2 API 353
9.1  技術(shù)要求 353
9.2  從用戶空間看V4L2 353
9.2.1  V4L2用戶空間API 353
9.2.2  常用ioctl命令 354
9.2.3  在用戶空間中使用V4L2 API的示例 356
9.3  視頻設(shè)備打開(kāi)和屬性管理 357
9.3.1  打開(kāi)和關(guān)閉設(shè)備 357
9.3.2  查詢?cè)O(shè)備功能 357
9.4  緩沖區(qū)管理 359
9.4.1  圖像(緩沖區(qū))格式 360
9.4.2  請(qǐng)求緩沖區(qū) 364
9.4.3  請(qǐng)求用戶指針緩沖區(qū) 364
9.4.4  請(qǐng)求內(nèi)存可映射緩沖區(qū) 366
9.4.5  請(qǐng)求DMABUF緩沖區(qū) 367
9.4.6  請(qǐng)求讀/寫I/O內(nèi)存 369
9.4.7  將緩沖區(qū)加入隊(duì)列并啟用流傳輸 369
9.4.8  主緩沖區(qū)的概念 370
9.4.9  將用戶指針緩沖區(qū)加入隊(duì)列 370
9.4.10  將內(nèi)存可映射緩沖區(qū)加入隊(duì)列 371
9.4.11  將DMABUF緩沖區(qū)加入隊(duì)列 371
9.4.12  啟用流傳輸 372
9.4.13  將緩沖區(qū)移出隊(duì)列 373
9.4.14  將內(nèi)存映射緩沖區(qū)移出隊(duì)列 373
9.4.15  將用戶指針緩沖區(qū)移出隊(duì)列 375
9.4.16  讀/寫I/O 376
9.5  V4L2用戶空間工具 376
9.5.1  關(guān)于v4l2-ctl 376
9.5.2  列出視頻設(shè)備及其功能 377
9.5.3  更改設(shè)備屬性 377
9.5.4  設(shè)置像素格式、分辨率和幀速率 379
9.5.5  采集幀和流傳輸 380
9.6  在用戶空間中調(diào)試V4L2 382
9.6.1  啟用框架調(diào)試 382
9.6.2  V4L2合規(guī)性驅(qū)動(dòng)程序測(cè)試 384
9.7  小結(jié) 385
第10章  Linux內(nèi)核電源管理 387
10.1  技術(shù)要求 387
10.2  基于Linux系統(tǒng)的電源管理概念 388
10.2.1  運(yùn)行時(shí)電源管理 389
10.2.2  動(dòng)態(tài)電源管理接口 389
10.3  主要電源管理框架詳解 389
10.3.1  CPU Idle框架 389
10.3.2  CPUFreq框架 392
10.3.3  Thermal框架 394
10.4  系統(tǒng)電源管理休眠狀態(tài) 395
10.4.1  掛起到空閑 395
10.4.2  通電待機(jī) 396
10.4.3  掛起到內(nèi)存 396
10.4.4  掛起到磁盤 397
10.5  為設(shè)備驅(qū)動(dòng)程序添加電源管理功能 399
10.5.1  設(shè)備和電源管理操作數(shù)據(jù)結(jié)構(gòu) 399
10.5.2  實(shí)現(xiàn)運(yùn)行時(shí)電源管理功能 401
10.5.3  驅(qū)動(dòng)程序中的運(yùn)行時(shí)電源管理 402
10.5.4  運(yùn)行時(shí)電源管理的同步和異步操作 404
10.5.5  自動(dòng)掛起 404
10.6  綜合應(yīng)用 405
10.6.1  probe函數(shù)中的電源管理機(jī)制 405
10.6.2  讀取函數(shù)中的電源管理調(diào)用 407
10.6.3  卸載模塊時(shí)的電源管理方法 409
10.6.4  運(yùn)行時(shí)電源管理回調(diào)函數(shù)執(zhí)行的一般規(guī)則 410
10.6.5  電源域的概念 410
10.7  系統(tǒng)掛起和恢復(fù)順序 411
10.7.1  掛起階段 411
10.7.2  恢復(fù)階段 412
10.7.3  實(shí)現(xiàn)系統(tǒng)休眠功能 412
10.8  系統(tǒng)喚醒源 415
10.8.1  喚醒源的數(shù)據(jù)結(jié)構(gòu) 415
10.8.2  使設(shè)備成為喚醒源 417
10.8.3  喚醒功能激活實(shí)例 418
10.8.4  IRQ處理程序 419
10.8.5  喚醒源和sysfs 421
10.8.6  關(guān)于IRQF_NO_SUSPEND標(biāo)志 422
10.9  小結(jié) 422
第3篇  與其他Linux內(nèi)核子系統(tǒng)保持同步
第11章  編寫PCI設(shè)備驅(qū)動(dòng)程序 425
11.1  技術(shù)要求 425
11.2  PCI總線和接口介紹 426
11.2.1  術(shù)語(yǔ) 427
11.2.2  PCI總線枚舉、設(shè)備配置和尋址 428
11.2.3  設(shè)備識(shí)別 428
11.2.4  總線枚舉 428
11.3  PCI地址空間 432
11.3.1  PCI配置空間 432
11.3.2  PCI I/O地址空間 433
11.3.3  PCI內(nèi)存地址空間 433
11.4  BAR的概念 433
11.5  中斷分配 434
11.5.1  PCI傳統(tǒng)INT-X中斷 434
11.5.2  基于消息的中斷類型 435
11.5.3  MSI機(jī)制 436
11.5.4  MSI-X機(jī)制 437
11.5.5  傳統(tǒng)INTx模擬 437
11.6  Linux Kernel PCI子系統(tǒng) 438
11.7  PCI數(shù)據(jù)結(jié)構(gòu) 439
11.7.1  實(shí)例化PCI設(shè)備的結(jié)構(gòu)體 439
11.7.2  用于識(shí)別PCI設(shè)備的結(jié)構(gòu)體 441
11.7.3  實(shí)例化PCI設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)體 443
11.7.4  注冊(cè)PCI驅(qū)動(dòng)程序 444
11.8  PCI驅(qū)動(dòng)程序結(jié)構(gòu)體概述 445
11.8.1  啟用設(shè)備 445
11.8.2  總線控制能力 446
11.8.3  訪問(wèn)配置寄存器 447
11.8.4  訪問(wèn)內(nèi)存映射I/O資源 448
11.8.5  訪問(wèn)I/O端口資源 451
11.8.6  處理中斷 453
11.8.7  傳統(tǒng)INTx IRQ分配 455
11.8.8  模擬INTx IRQ調(diào)和 457
11.8.9  關(guān)于鎖定的注意事項(xiàng) 457
11.8.10  關(guān)于傳統(tǒng)API的簡(jiǎn)要說(shuō)明 457
11.9  PCI和直接內(nèi)存訪問(wèn) 458
11.9.1  關(guān)于DMA緩沖區(qū) 459
11.9.2  PCI一致DMA映射 460
11.9.3  流式DMA映射 462
11.9.4  單緩沖區(qū)映射 462
11.9.5  分散/聚集映射 464
11.10  小結(jié) 466
第12章  利用NVMEM框架 467
12.1  技術(shù)要求 467
12.2  NVMEM數(shù)據(jù)結(jié)構(gòu)和API 468
12.2.1  NVMEM硬件抽象數(shù)據(jù)結(jié)構(gòu) 468
12.2.2  NVMEM設(shè)備的運(yùn)行時(shí)配置數(shù)據(jù)結(jié)構(gòu) 468
12.2.3  NVMEM數(shù)據(jù)單元的數(shù)據(jù)結(jié)構(gòu) 470
12.3  編寫NVMEM提供者驅(qū)動(dòng)程序 472
12.3.1  NVMEM設(shè)備的注冊(cè)和注銷 472
12.3.2  實(shí)時(shí)時(shí)鐘設(shè)備中的NVMEM存儲(chǔ)器 473
12.3.3  DS1307實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)程序示例 474
12.3.4  實(shí)現(xiàn)NVMEM讀/寫回調(diào)函數(shù) 475
12.3.5  NVMEM提供者的設(shè)備樹(shù)綁定 476
12.4  NVMEM使用者驅(qū)動(dòng)程序API 477
12.4.1  NVMEM使用者API 477
12.4.2  用戶空間中的NVMEM 478
12.5  小結(jié) 480
第13章  看門狗設(shè)備驅(qū)動(dòng)程序 481
13.1  技術(shù)要求 481
13.2  看門狗數(shù)據(jù)結(jié)構(gòu)和API 481
13.2.1  表示看門狗設(shè)備的結(jié)構(gòu)體 482
13.2.2  表示看門狗信息的結(jié)構(gòu)體 483
13.2.3  表示看門狗操作的結(jié)構(gòu)體 485
13.2.4  注冊(cè)/注銷看門狗設(shè)備 486
13.2.5  處理預(yù)超時(shí)和調(diào)控器 488
13.2.6  基于GPIO的看門狗 489
13.3  看門狗用戶空間接口 491
13.3.1  啟動(dòng)和停止看門狗 491
13.3.2  發(fā)送保持活動(dòng)的ping 492
13.3.3  獲取看門狗的功能和ID 493
13.3.4  設(shè)置和獲取超時(shí)和預(yù)超時(shí) 493
13.3.5  獲取剩余的時(shí)間 494
13.3.6  獲?。▎?dòng)/重啟)狀態(tài) 494
13.3.7  看門狗sysfs接口 496
13.3.8  處理預(yù)超時(shí)事件 497
13.4  小結(jié) 497
第14章  Linux內(nèi)核調(diào)試技巧和最佳實(shí)踐 499
14.1  技術(shù)要求 499
14.2  了解Linux內(nèi)核發(fā)布流程 499
14.3  Linux內(nèi)核開(kāi)發(fā)技巧 501
14.3.1  消息打印 502
14.3.2  內(nèi)核日志級(jí)別 502
14.3.3  內(nèi)核日志緩沖區(qū) 504
14.3.4  添加計(jì)時(shí)信息 505
14.4  Linux內(nèi)核跟蹤和性能分析 506
14.4.1  使用Ftrace檢測(cè)代碼 506
14.4.2  可用的tracer 508
14.4.3  function tracer 509
14.4.4  function_graph tracer 510
14.4.5  函數(shù)過(guò)濾器 512
14.4.6  跟蹤事件 513
14.4.7  使用Ftrace接口跟蹤特定進(jìn)程 515
14.5  Linux內(nèi)核調(diào)試技巧 516
14.5.1  oops和恐慌分析 516
14.5.2  轉(zhuǎn)儲(chǔ)oops跟蹤消息 519
14.5.3  使用objdump識(shí)別內(nèi)核模塊中的錯(cuò)誤代碼行 520
14.6  小結(jié) 521
 

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)