在Linux設(shè)備樹語法詳解和Linux Platform驅(qū)動模型(一) _設(shè)備信息中我們討論了設(shè)備信息的寫法,本文主要討論平臺總線中另外一部分-驅(qū)動方法,將試圖回答下面幾個問題:
如何填充platform_driver對象?
如何將驅(qū)動方法對象注冊到平臺總線中?
正文前的一點羅嗦
寫驅(qū)動也有一段時間了,可以發(fā)現(xiàn),其實驅(qū)動本質(zhì)上只做了兩件事:向上提供接口,向下控制硬件,當然,這里的向上并不是直接提供接口到應用層,而是提供接口給內(nèi)核再由內(nèi)核間接的將我們的接口提供給應用層。而寫驅(qū)動也是有一些套路可尋的,拿到一個硬件,我們大體可以按照下面的流程寫一個驅(qū)動:
確定驅(qū)動架構(gòu):根據(jù)硬件連接方式結(jié)合分層/分離思想設(shè)計驅(qū)動的基本結(jié)構(gòu)
確定驅(qū)動對象:內(nèi)核中的一個驅(qū)動/設(shè)備就是一個對象,1.定義,2.初始化,3.注冊,4.注銷
向上提供接口:根據(jù)業(yè)務需要確定提供cdev/proc/sysfs哪種接口
向下控制硬件:1.查看原理圖確定引腳和控制邏輯,2.查看芯片手冊確定寄存器配置方式,3.進行內(nèi)