大總結:基於Kernel5.4的Linux外設驅動實戰--Apple的學習筆記 前言

前言

大總結:動手寫Linux驅動練習--Apple的學習筆記是對驅動的基礎複習及實現簡單的驅動。於是我又去買了陀螺儀和OLED屏幕作爲外設來玩Linux驅動。
1. MPU6500六軸陀螺儀驅動
它可以使用i2c,也可以使用spi。我設計的是採用input子系統polling方式上報採樣數據。
分別玩下spi和i2c總線設備驅動。
MPU6500六軸陀螺儀linux驅動(i2c)--Apple的學習筆記
MPU6500六軸陀螺儀linux驅動(spi)--Apple的學習筆記
然後進行設計優化將spi和i2c驅動的公共部分抽象出來,優化驅動代碼,通過dts配置選擇spi或者選擇i2c總線來驅動陀螺儀。
MPU6500六軸陀螺儀linux驅動(spi&i2c合併)--Apple的學習筆記
2. 再次進行理論spi和i2c源碼分析
Linux i2c子系統源碼分析--Apple的學習筆記
Linux spi子系統源碼分析--Apple的學習筆記
probe函數中device參數的來歷--Apple的學習筆記
3. linux驅動OLED
屏幕沒有點亮,我懷疑是硬件電流太小導致的。
Linux驅動OLED屏st7735s(framebuffer學習)--Apple的學習筆記
4. 插曲:臨時用下TQ2440
由於bb black開發板無法電流屏幕,但是我想實際玩下framebuffer驅動,所以翻出了10年前買了TQ2440,因爲它有LCD屏幕,BB black需要連接HDMI搭建硬件麻煩。我依然使用Kernel5.4及設備樹,所以用新代碼來驅動老闆子,結果uboot和kernel能工作,但是文件系統死活起不來。
TQ2440成功移植uboot2016.11解決Using dm9000 device卡死問題--Apple的學習筆記
過程中複習了下uboot的內存重定位,進行源碼分析
uboot內存重定向詳解--Apple的學習筆記
TQ2440改成設備樹啓動kernel5.4成功--Apple的學習筆記
5. qemu仿真環境搭建及使用
TQ2440硬件無法使用,但是我還是想親自動手調試framebuffer,我怕光理解代碼,理解錯誤。所以要通過調試來驗證理解是否正確。
由於qemu啓動後要運行我的app代碼,app代碼會更新,每次更新都要製作一個文件系統比較麻煩,所以qemu需用使用nfs掛載。學習了下ubuntu命令方式網橋的設置。
ubuntu18.04配置網橋支持qemu模擬開發板掛載NFS啓動LCD--Apple的學習筆記
vexpress是DRM框架,不是直接使用framebuffer(後來才瞭解到DRM包含了framebuffer註冊了),所以我在網上找了TQ2440的qemu版本使用。重要心想事成完成了framebuffer驅動調試驗證。
framebuffer驅動qemu仿真調試--Apple的學習筆記
DRM之前用過opengl和vulKan等API,知道底層是DRM,但是DRM驅動沒有研究過。所以順便了解下模塊關係,源碼分析等之後用了opengles及HDMI驅動後再做DRM驅動專題
kernel5.4版本gpu DRM驅動入門--Apple的學習筆記
6. qemu虛擬化原理
因爲用了特製版本的qemu可以仿真開發板LCD,所以覺得qemu好神奇,花時間探究下,順便看看qemu源碼,學習下他的設計思路。
qemu虛化原理入門--Apple的學習筆記
Qemu2.8虛擬機源碼分析—Apple的學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章