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