GPIO設(shè)備程序開發(fā)步驟
發(fā)布時間:2008/12/25 0:00:00 訪問次數(shù):686
gpio驅(qū)動可以歸類為linux設(shè)備驅(qū)動的字符設(shè)備驅(qū)動,以下是開發(fā)它的一些具體步驟。
(1)模塊化驅(qū)動程序
不失linux驅(qū)動開發(fā)的一般性,在寫字符設(shè)備的驅(qū)動程序時,也要遵守模塊化編程的一般規(guī)范。設(shè)備模塊在用戶空間的初始化和終止:
●init mnodule()向內(nèi)核注冊模塊提供數(shù)據(jù)結(jié)構(gòu)、局部和全局變量。
●cleanup_module()取消所有init_module在內(nèi)核中的注冊。
。2)設(shè)備模塊在內(nèi)核空間的內(nèi)存申請和釋放
kmalloc()函數(shù)分配一段內(nèi)存,這樣就實現(xiàn)了chrdevs向量表中指向設(shè)備驅(qū)動程序名稱的指針。使用kfree釋放內(nèi)存。
。3)字符設(shè)備主設(shè)備號和次設(shè)備號的分配
主設(shè)備號標志設(shè)備對應(yīng)的驅(qū)動程序,內(nèi)核利用主設(shè)備號將設(shè)備與相應(yīng)的驅(qū)動程序?qū)?yīng)起來。主設(shè)備號的取值范圍是0~255,如果不善加規(guī)劃,則容易造成主設(shè)備號的沖突。主設(shè)備號的分配有靜態(tài)和動態(tài)之分,從開發(fā)設(shè)備的角度來看,推薦靜態(tài)設(shè)備號的分配。
次設(shè)備號由驅(qū)動程序使用,內(nèi)核的其他部分并不使用它,僅將它傳遞給驅(qū)動程序。一個驅(qū)動程序控制若干個設(shè)備,次設(shè)備號提供了一種區(qū)分它們的方法。
。4)設(shè)備模塊在內(nèi)核空間的注冊與注銷
字符設(shè)備的注冊有2種方法,一種是常用注冊方法,通過系統(tǒng)函數(shù)register_chrdev()將設(shè)備加入到系統(tǒng)設(shè)備列表中;另一種方法是devfs技術(shù),通過系統(tǒng)函數(shù)devfs ̄register()實現(xiàn)設(shè)備的注冊。注銷與注冊相反,分別調(diào)用unregister_chrdev()函數(shù)和devfs_unregister()函數(shù)。
(5)設(shè)備模塊在內(nèi)核空間提供系統(tǒng)調(diào)用的函數(shù)
設(shè)備驅(qū)動程序在注冊成功以后,用戶可以通過訪問設(shè)備特殊文件(一般情況在/dev目錄下)實現(xiàn)系統(tǒng)調(diào)用。
gpio驅(qū)動程序只需要一個file_operati。ns數(shù)據(jù)結(jié)構(gòu)體就可以了。這是因為gp10本身在設(shè)計階段就定制好了接入的物理設(shè)備,接入到gpio端口的物理設(shè)備并不需要即插即用。因此可以在開發(fā)階段定制該接口的物理設(shè)備`也可以擔這個接口的設(shè)各作為該產(chǎn)品的標配外設(shè)發(fā)布。
這樣,在編寫驅(qū)動程序的過程中,只要寫好應(yīng)用程序使用標準系統(tǒng)調(diào)用打開、讀取、寫和關(guān)閉等處理函數(shù),就可以完成驅(qū)動程序的開發(fā)。其中,標準系統(tǒng)調(diào)用處理函數(shù)在所有的字符設(shè)備里面具有同樣的功能。
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
gpio驅(qū)動可以歸類為linux設(shè)備驅(qū)動的字符設(shè)備驅(qū)動,以下是開發(fā)它的一些具體步驟。
。1)模塊化驅(qū)動程序
不失linux驅(qū)動開發(fā)的一般性,在寫字符設(shè)備的驅(qū)動程序時,也要遵守模塊化編程的一般規(guī)范。設(shè)備模塊在用戶空間的初始化和終止:
●init mnodule()向內(nèi)核注冊模塊提供數(shù)據(jù)結(jié)構(gòu)、局部和全局變量。
●cleanup_module()取消所有init_module在內(nèi)核中的注冊。
。2)設(shè)備模塊在內(nèi)核空間的內(nèi)存申請和釋放
kmalloc()函數(shù)分配一段內(nèi)存,這樣就實現(xiàn)了chrdevs向量表中指向設(shè)備驅(qū)動程序名稱的指針。使用kfree釋放內(nèi)存。
(3)字符設(shè)備主設(shè)備號和次設(shè)備號的分配
主設(shè)備號標志設(shè)備對應(yīng)的驅(qū)動程序,內(nèi)核利用主設(shè)備號將設(shè)備與相應(yīng)的驅(qū)動程序?qū)?yīng)起來。主設(shè)備號的取值范圍是0~255,如果不善加規(guī)劃,則容易造成主設(shè)備號的沖突。主設(shè)備號的分配有靜態(tài)和動態(tài)之分,從開發(fā)設(shè)備的角度來看,推薦靜態(tài)設(shè)備號的分配。
次設(shè)備號由驅(qū)動程序使用,內(nèi)核的其他部分并不使用它,僅將它傳遞給驅(qū)動程序。一個驅(qū)動程序控制若干個設(shè)備,次設(shè)備號提供了一種區(qū)分它們的方法。
。4)設(shè)備模塊在內(nèi)核空間的注冊與注銷
字符設(shè)備的注冊有2種方法,一種是常用注冊方法,通過系統(tǒng)函數(shù)register_chrdev()將設(shè)備加入到系統(tǒng)設(shè)備列表中;另一種方法是devfs技術(shù),通過系統(tǒng)函數(shù)devfs ̄register()實現(xiàn)設(shè)備的注冊。注銷與注冊相反,分別調(diào)用unregister_chrdev()函數(shù)和devfs_unregister()函數(shù)。
。5)設(shè)備模塊在內(nèi)核空間提供系統(tǒng)調(diào)用的函數(shù)
設(shè)備驅(qū)動程序在注冊成功以后,用戶可以通過訪問設(shè)備特殊文件(一般情況在/dev目錄下)實現(xiàn)系統(tǒng)調(diào)用。
gpio驅(qū)動程序只需要一個file_operati。ns數(shù)據(jù)結(jié)構(gòu)體就可以了。這是因為gp10本身在設(shè)計階段就定制好了接入的物理設(shè)備,接入到gpio端口的物理設(shè)備并不需要即插即用。因此可以在開發(fā)階段定制該接口的物理設(shè)備`也可以擔這個接口的設(shè)各作為該產(chǎn)品的標配外設(shè)發(fā)布。
這樣,在編寫驅(qū)動程序的過程中,只要寫好應(yīng)用程序使用標準系統(tǒng)調(diào)用打開、讀取、寫和關(guān)閉等處理函數(shù),就可以完成驅(qū)動程序的開發(fā)。其中,標準系統(tǒng)調(diào)用處理函數(shù)在所有的字符設(shè)備里面具有同樣的功能。
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
熱門點擊
- ARM通用寄存器
- ARM復(fù)位原理
- FIQ異常的描述
- Viterbi譯碼
- ARM硬件電路設(shè)計
- ARM程序狀態(tài)寄存器
- ARM時序
- ARM乘法指令
- Thumb狀態(tài)下的寄存器
- ARM異常的響應(yīng)及返回
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細]
- MPS 啟動器開發(fā)板/評估套件(EVKT/P
- 12V、6A 四路降壓電源管理 IC
- 數(shù)字恒定導通時間控制模式(COT)
- 同步降壓PWM DC-DC線性
- ADC 技術(shù)參數(shù)與應(yīng)用需求之
- 反激變換器傳導和輻射電磁干擾分
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究