教程概覽 文檔教程更新至第18篇-PWM 第1篇 驅(qū)動基礎(chǔ)篇 第2篇 字符設(shè)備基礎(chǔ) 第3篇 并發(fā)與競爭 第4篇 高級字符設(shè)備進階第5篇 中斷 第6篇 平臺總線 第7篇 設(shè)備樹 第8篇 設(shè)備樹插件 第9篇 設(shè)備模型 第10篇 熱插拔 第11篇 pinctrl子系統(tǒng) 第12篇 GPIO子系統(tǒng) 第13篇 輸入子系統(tǒng) 第14篇 單總線 第15篇 I2C 第16篇 SPI 第17篇 串口 第18篇 PWM 驅(qū)動基礎(chǔ)-進階篇 未完待續(xù),持續(xù)更新中... 視頻教程更新至二十期 第一期_驅(qū)動基礎(chǔ)(包含進階篇) 第二期_字符設(shè)備基礎(chǔ) 第三期_并發(fā)與競爭 第四期_高級字符設(shè)備進階 第五期_中斷 第六期_平臺總線 第七期_設(shè)備樹 第八期_設(shè)備樹插件 第九期_設(shè)備模型 第十期_熱插拔第十一期_pinctrl子系統(tǒng) 第十二期_GPIO子系統(tǒng) 第十三期_輸入子系統(tǒng) 第十四期_單總線 第十五期_I2C 第十六期_SPI 第十七期_串口 第十八期_PWM 第十九期_RTC 第二十期_看門狗 未完待續(xù),持續(xù)更新中... 更新內(nèi)容 ◆教程更新 《iTOP-RK3568開發(fā)板驅(qū)動開發(fā)指南》V2.4 新增第十八篇_PWM ◆文檔+網(wǎng)盤獲取方式 聯(lián)系旺旺客服加入RK3568售后群 教程目錄 ✦ 第一篇 驅(qū)動基礎(chǔ) 第1章 前言 第2章 你好!內(nèi)核源碼 第3章 helloworld 驅(qū)動實驗 第4章 內(nèi)核模塊實驗 第5章 驅(qū)動模塊傳參實驗 第6章 內(nèi)核模塊符號導(dǎo)出實驗 ✦ 第二篇 字符設(shè)備基礎(chǔ) 第7章 menuconfig圖形化配置實驗 第8章 驅(qū)動模塊編譯進內(nèi)核實驗 第9章 申請字符設(shè)備號實驗 第10章 注冊字符設(shè)備實驗 第11章 創(chuàng)建設(shè)備節(jié)點實驗 第12章 字符設(shè)備驅(qū)動框架實驗 第13章 雜項設(shè)備驅(qū)動實驗 第14章 內(nèi)核空間與用戶空間數(shù)據(jù)交互實驗 第15章 文件私有數(shù)據(jù)實驗 第16章 一個驅(qū)動兼容不同設(shè)備實驗 第17章 Linux錯誤處理實驗 第18章 點亮LED燈實驗 ✦ 第三篇 并發(fā)與競爭 第19章 并發(fā)與競爭實驗 第20章 原子操作實驗 第21章 自旋鎖實驗 第22章 自旋鎖死鎖實驗 第23章 信號量實驗 第24章 互斥鎖實驗 ✦ 第四篇 高級字符設(shè)備進階 第25章 IO模型引入實驗 第26章 阻塞IO實驗 第27章 非阻塞IO實驗 第28章 IO多路復(fù)用實驗 第29章 信號驅(qū)動IO實驗 第30章 定時器實驗 第31章 秒字符設(shè)備驅(qū)動實驗 第32章 Linux內(nèi)核打印實驗 第33章 llseek定位設(shè)備驅(qū)動實驗 第34章 IOCTL驅(qū)動傳參實驗 第35章 IOCTL地址傳參實驗 第36章 封裝驅(qū)動API接口實驗 第37章 優(yōu)化驅(qū)動穩(wěn)定性和效率實驗 第38章 驅(qū)動調(diào)試方法實驗 ✦ 第五篇 中斷 第39章 中斷實驗 第40章 中斷申請流程 第41章 中斷下文tasklet實驗 第42章 軟中斷實驗 第43章 特殊的軟中斷tasklet分析實驗 第44章 共享工作隊列實驗 第45章 自定義工作隊列實驗 第46章 延遲工作實驗 第47章 工作隊列傳參實驗 第48章 并發(fā)管理工作隊列實驗 第49章 中斷線程化實驗 ✦第六篇 平臺總線 第50章 平臺總線模型介紹 第51章 注冊platform設(shè)備實驗 第52章 注冊platform驅(qū)動實驗 第53章 probe函數(shù)編寫實驗 第54章 點亮LED燈實驗(平臺總線) ✦ 第七篇 設(shè)備樹 第55章 初識設(shè)備樹 第56章 設(shè)備樹基本語法 第57章 實例分析:中斷 第58章 實例分析:時鐘 第59章 實例分析:CPU 第60章 實例分析:GPIO 第61章 實例分析:pinctrl 第62章 dtb文件格式講解 第63章 dtb展開成device_node實驗 第64章 device_node轉(zhuǎn)換成platform_device實驗 第65章 設(shè)備樹下platform_device和platform_driver匹配實驗 第66章 of操作函數(shù)實驗:獲取設(shè)備樹節(jié)點 第67章 of操作函數(shù)實驗:獲取屬性 第68章 ranges屬性實驗 第69章 of操作函數(shù)實驗:獲取中斷資源 第70章 參考文檔:設(shè)備樹bindings ✦ 第八篇 設(shè)備樹插件 第71章 設(shè)備樹插件介紹 第72章 設(shè)備樹插件語法和編譯實驗 第73章 設(shè)備樹插件使用實驗 第74章 虛擬文件系統(tǒng)ConfigFS介紹 第75章 ConfigFS的核心數(shù)據(jù)結(jié)構(gòu) 第76章 注冊configfs子系統(tǒng)實驗 第77章 注冊group容器實驗 第78章 用戶空間創(chuàng)建item實驗 第79章 完善drop和release函數(shù)實驗 第80章 注冊attribute實驗 第81章 實現(xiàn)多級目錄實驗 第82章 移植設(shè)備樹插件驅(qū)動實驗 第83章 設(shè)備樹插件驅(qū)動分析實驗 第84章設(shè)備樹插件參考資料介紹 ✦第九篇 設(shè)備模型 第85章設(shè)備模型基本框架-kobject和kset 第86章 創(chuàng)建kobject實驗 第87章 創(chuàng)建kset實驗 第88章 為什么要引入設(shè)備模型 第89章 進一步探究設(shè)備模型 第90章 虛擬文件系統(tǒng)sysfs目錄層次分析實驗 第91章 什么是引用計數(shù)器 第92章 引用計數(shù)器實驗 第93章 kobject釋放實例分析實驗 第95章 創(chuàng)建屬性文件并實現(xiàn)讀寫功能實驗1 第96章 優(yōu)化屬性文件讀寫函數(shù)實驗 第97章 創(chuàng)建屬性文件并實現(xiàn)讀寫功能實驗2 第98章 創(chuàng)建多個屬性文件的簡便方法 第99章 注冊一個自己的總線實驗 第100章 在總線目錄下創(chuàng)建屬性文件實驗 第101章 總線注冊流程理論分析實驗 第102章 platform總線注冊流程實例分析實驗 第103章 在總線下注冊設(shè)備實驗 第104章 設(shè)備注冊流程分析實驗 第105章 platform總線設(shè)備注冊流程實例分析實驗 第106章 為什么注冊總線之前要先注冊設(shè)備實例分析實驗 第107章 在自己的總線下注冊驅(qū)動實驗 第108章 驅(qū)動注冊流程分析實驗 第109章 probe函數(shù)執(zhí)行流程分析實驗 第110章 加載驅(qū)動和加載設(shè)備先后順序分析實驗 第111章 platform總線注冊驅(qū)動流程實例分析實驗 ✦第十篇 熱插拔 第112章 熱插拔簡介 第113章 內(nèi)核是如何發(fā)送事件到用戶空間 第114章 內(nèi)核發(fā)送事件到用戶空間的方法 第115章 完善kset_uevent_ops結(jié)構(gòu)體實驗 第116章 netlink監(jiān)聽廣播信息實驗 第117章 uevent_helper實驗 第118章 使用udev掛載U盤和T卡實驗 第119章使用mdev掛載U盤和T卡實驗 ✦ 第十一篇pinctrl子系統(tǒng) 第120章 pinctrl子系統(tǒng)的引入 第121章 pinctrl probe函數(shù)講解 第122章pinctrl 子系統(tǒng)函數(shù)操作集 第123章dt_node_to_map函數(shù)分析 第124章pinctrl_bind_pins函數(shù) 第125章 add_setting函數(shù)分析 第126章 通過pinctrl狀態(tài)設(shè)置引腳復(fù)用實驗 第127章 猜想驗證 ✦ 第十二篇 GPIO子系統(tǒng) 第128章 GPIO入門實驗 第129章 GPIO控制和操作實驗 第130章 GPIO的調(diào)試方法 第131章 GPIO子系統(tǒng)API函數(shù)的引入 第132章 獲取單個gpio描述實驗 第133章 GPIO操作函數(shù)實驗 第134章 三級節(jié)點操作函數(shù)實驗 第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實驗 第136章 實戰(zhàn):實現(xiàn)動態(tài)切換引腳復(fù)用功能 ✦ 第十三篇 輸入子系統(tǒng) 第137章 初識input子系統(tǒng) 第138章 輸入子系統(tǒng)框架 第139章 輸入子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)介紹 第140章 認識內(nèi)核中輸入子系統(tǒng)的源碼和裁剪 第141章 編寫最簡單的設(shè)備驅(qū)動層代碼 第142章 從最簡單的設(shè)備驅(qū)動代碼入手分析匹配規(guī)則 第143章 多對多的匹配關(guān)系分析 第144章 繼續(xù)完善設(shè)備驅(qū)動層代碼 第145 章 輸入子系統(tǒng)上報數(shù)據(jù)格式分析 第146章 通用事件處理層connect函數(shù)分析 第147章 通用事件處理層分配設(shè)備號分析 第148章 通用事件處理層open函數(shù)分析 第149章 通用事件處理層數(shù)據(jù)上報流程分析 第150章 通用事件處理層event函數(shù)分析 第151章 通用事件處理層read和write函數(shù)分析 第152章 核心層代碼分析 第153章 固定輸入設(shè)備的設(shè)備節(jié)點實驗 第154章 固定usb設(shè)備的設(shè)備節(jié)點實驗 ✦ 第十四篇 單總線 第155章 單總線簡介 第156章 DS18B20介紹 第157章 DS18B20驅(qū)動框架編寫 第158章 DS18B20編寫字符設(shè)備驅(qū)動框架 第159章 DS18B20驅(qū)動設(shè)備樹 第160章 DS18B20驅(qū)動復(fù)位時序編寫 第161章 DS18B20驅(qū)動寫時序編寫 第162章 DS18B20驅(qū)動讀時序編寫 第163章 DS18B20驅(qū)動溫度讀取編寫 163.4 運行測試 第164章 DS18B20驅(qū)動使用ioctl設(shè)置分辨率 第165章 DS18B20驅(qū)動使用ioctl讀取分辨率 ✦ 第十五篇 I2C 第166章 初步認識I2C 第167章 I2C上拉電阻 第168章 I2C通信時序介紹 第169章I2C子系統(tǒng)框架學(xué)習(xí) 第170章I2C client代碼編寫(設(shè)備樹) 第171章I2C 驅(qū)動框架編寫 第172章 使用C文件編寫I2C client代碼 第173章 完善FT5X06設(shè)備節(jié)點和驅(qū)動 第174章 FT5X06驅(qū)動程序I2C通信部分編寫 第175章 i2c_transfer函數(shù)解析 第176章 通過邏輯分析儀認識I2C波形 第177章 FT5X06數(shù)據(jù)上報部分驅(qū)動程序編寫 第178章 i2c_client結(jié)構(gòu)體分析 第179章在應(yīng)用程序中使用I2C 第180章 I2C Tools工具講解 第181章 使用GPIO模擬I2C驅(qū)動 第182章 使用Linux中默認的模擬I2C驅(qū)動程序 第183章 SMBus總線介紹 ✦ 第十六篇 SPI 第184章 初步認識SPI 第185章 SPI子系統(tǒng)框架 第186章 通用SPI外設(shè)代碼框架編寫 第187章 mcp2515驅(qū)動編寫:注冊字符設(shè)備 第188章 mcp2515驅(qū)動編寫:復(fù)位函數(shù) 第189章 mcp2515驅(qū)動編寫:讀寄存器函數(shù) 第190章 配置模式下寄存器的配置 第191章 mcp2515驅(qū)動編寫:修改工作模式 第192章 mcp2515驅(qū)動編寫:完善write和read函數(shù) 第193章 Linux中通用SPI設(shè)備驅(qū)動 第194章 如何在Linux中使用模擬SPI 第195章 實踐:移植官方mcp2515驅(qū)動 ✦ 第十七篇 串口 第196章 串口簡介 第197章 串口通信協(xié)議 第198章 串口通信接口類型 第199章 串口子系統(tǒng)框架 第200章uart_driver注冊流程分析 第202章 串口編程 第203章 GPS模塊編程 ✦第十八篇 PWM 第204章 初步認識PWM 204.1 PWM基礎(chǔ)知識 204.2 iTOP-RK3568開發(fā)板PWM接口介紹 204.3 SG-90舵機介紹 第205章 PWM子系統(tǒng)框架 205.1 PWM設(shè)備驅(qū)動層 205.2 PWM核心層 205.3 PWM適配器驅(qū)動層 第206章 使用sysfs接口操作pwm 206.1 配置PWM設(shè)備樹 206.2 使用sysfs操作PWM 第207章 pwm控制器注冊流程分析 第208章 SG90舵機驅(qū)動實驗 208.1 pwm子系統(tǒng)API講解 208.1.1 pwm_config 函數(shù) 208.1.2 pwm_set_polarity 函數(shù) 208.1.3 pwm_enable 函數(shù) 208.1.4 pwm_disable 函數(shù) 208.1.5 devm_of_pwm_get 函數(shù) 208.2 完善SG90設(shè)備樹 208.3 實驗程序編寫 208.3.1 編寫驅(qū)動程序 208.3.2 編寫測試APP 208.4 運行測試 208.4.1 編譯驅(qū)動程序 208.4.2 編譯應(yīng)用程序 208.4.3 運行測試 第209章 模擬PWM 209.1 高精度定時器介紹 209.2.1 高精度定時器API講解 209.2.1 hrtimer_init 209.2.2 hrtimer_set 209.2.3 hrtimer_srart 209.2.4 hrtimer_forward 209.2.5 hrtimer_cancel 209.3 修改LED設(shè)備樹 209.4 實驗程序編寫 209.4.1 編寫驅(qū)動程序 209.4.2 編寫測試APP 209.5 運行測試 209.5.1 編譯驅(qū)動程序 209.5.2 編譯應(yīng)用程序 209.5.3 運行測試 209.6 呼吸燈實驗 第210章 sysyfs操作pwm原理講解 第211章 pwm輸入捕獲驅(qū)動實驗 211.1 設(shè)備樹的修改 211.2 驅(qū)動代碼分析 211.2.1 probe函數(shù) 211.2.2 PWM模式初始化函數(shù) 211.2.3 PWM 捕獲中斷處理函數(shù) 211.2.4 讀函數(shù) 211.3 實驗程序編寫 211.3.1 編寫驅(qū)動程序 211.3.2 編寫測試APP 211.4 運行測試 211.4.1 編譯驅(qū)動程序 211.4.2 編譯應(yīng)用程序 211.4.3 運行測試 ✦ 驅(qū)動基礎(chǔ)-進階篇 進階1 編譯進內(nèi)核的驅(qū)動系統(tǒng)是如何運行的? 進階2 讓驅(qū)動快一點被加載實驗 進階3 驅(qū)動代碼使用Makefile的宏 進階4 內(nèi)核是如何運行ko文件的_insmod 進階5 自定義實現(xiàn)insmod命令實驗 進階6 內(nèi)核運行ko文件實驗——系統(tǒng)調(diào)用 進階7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用 進階8 內(nèi)核運行ko文件總結(jié) |