手把手帶你寫一個中斷輸入設備驅(qū)動
時間:2021-11-09 14:16:13
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀][導讀]大家好,我是逸珺。首先說聲抱歉,最近迷上釣魚了,有時候晚上出去夜釣大板鯽了,停更了一段時間。來幾張魚獲圖片:技術還是不太到家,遇到幾次大鯉魚都給溜了,心有不甘,所以最近花了比較多的時間。言歸正傳,今天來分享一下以前寫一個中斷輸入設備驅(qū)動案例,希望對有需要的朋友能有所幫助。...
[導讀] 大家好,我是逸珺。首先說聲抱歉,最近迷上釣魚了,有時候晚上出去夜釣大板鯽了,停更了一段時間。來幾張魚獲圖片:技術還是不太到家,遇到幾次大鯉魚都給溜了,心有不甘,所以最近花了比較多的時間。 言歸正傳,今天來分享一下以前寫一個中斷輸入設備驅(qū)動案例,希望對有需要的朋友能有所幫助。
背景介紹
在一個項目中,有這樣一個需求:主控芯片采用ZYNQ,需要采集外部一個脈沖編碼輸入信號,這個信號是一個脈沖波形,脈沖數(shù)量代表測量結果。比如這有可能是一個電機的霍爾信號輸出,代表電機的轉(zhuǎn)速,也有可能是一個光柵編碼器的脈沖輸出,是什么并不重要。這個電路本身,利用光耦實現(xiàn)了輸入測設備信號與采集端的電氣隔離。由于PS端該Bank的電平為3.3V,所以光耦的另一側也是3.3V。ZYNQ的PS端運行Linux程序,所以在這個場景下,要從應用程序的角度將外部輸入信號用起來,就需要實現(xiàn)這樣一個設備驅(qū)動程序:創(chuàng)建設備
在ZYNQ下,使用petalinux工具鏈,當然本文中對于寫這個驅(qū)動程序本身換成其他的處理器從代碼的角度是類似的。1.先運行一下工具鏈環(huán)境變量腳本:source?/opt/pkg/petalinux/settings.sh?
當然也可以不用手動這樣運行,設置成linux開發(fā)主機開機自動運行,這里就不贅述怎么設置了,網(wǎng)上很多介紹。2.創(chuàng)建設備petalinux-create?-t?modules?--name?di-drv?
這樣在現(xiàn)有的工程下,就自動創(chuàng)建設備文件:./project-spec/meta-user/recipes-modules/di-drv/files/di-drv.c
修改設備樹
./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi?中添加/include/?"system-conf.dtsi"
/?{???
??amba?{
?????pinctrl_di_default:?di-default?{???
???????mux?{???
?????????groups?=?"gpio0_0_grp";???
?????????function?=?"gpio0";???
???????};???
?????? conf?{???
??????????pins?=?"MIO0";???
??????????io-standard?=?<1>;???
??????????bias-high-impedance;???
??????????slew-rate?=?<0>;???
???????};???
????};???????????
??};
??di?{
????compatible?=?"di-drv";
????pinctrl-names?=?"default";
????pinctrl-0?=?<