久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > WRTnode 進階篇-gpio的使用

WRTnode 進階篇-gpio的使用 時間:2018-09-29      來源:未知

GPIO資源

 WRTnode1的GPIO的對應關系請參考mt7620的datasheet WRTnode2的GPIO的對應關系請參考mt7688的datasheet

 mt7620n.dtsi里對gpio的注冊我們假定$(TOPDIR)為OpenWrt的編譯目錄。 在$(TOPDIR)/target/linux/ramips/dts/mt7620n.dtsi里有對gpio的注冊 注:結合mt7620的datasheet里GPIO pin share schemes以及在mt7620n.dtsi里我們看到有,將GPIO#0到GPIO#72(中間有僅僅做GPO或GPI的)分為四組GPIO0-GPIO3; 對應GPIO0是從GPIO#0開始到GPIO#23,一共有24個;對應GPIO1是從GPIO#24開始到GPIO#39,一共有16個;對應GPIO2是從GPIO#40開始到GPIO#71,一共有32個; 對應GPIO3對應的是GPIO#72,僅有一個。

 在WRTNODE.dts里對led、keys等的注冊 在$(TOPDIR)/target/linux/ramips/dts/WRTNODE.dts里可以來注冊通過gpio接口控制的設備,如led、keys等 如果想用GPIO接口首先要使能GPIO并且釋放gpio引腳復用功能: 引腳復用的定義在$(TOPDIR)/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620n/linux-3.10.28/arch/mips/ralink/mt7620.c 注:路徑不一定為這個,根據你自己的內核版本,linux-3.10.xx 同理,其他復用引腳的定義一樣。

dts里注冊led、按鈕

 下面就來看如何在WRTNODE.dts里注冊具體的gpio設備(led,key等等),注冊的方法可以參照 $(TOPDIR)/target/linux/ramips/dts/RT-N14U.dts 注:dts里對設備的注冊很簡單,如gpio-leds的注冊,compatible要與Led的驅動leds-gpio.c里compatible對應,label是設備的名字,設備注冊成功,在WRTnode文件系統下就會有 /sys/class/leds/wrtnode:blue:wan , 我們可以通過

 echo 1 > /sys/class/leds/wrtnode\:blue\:wan/brightness

 echo 0 > /sys/class/leds/wrtnode\:blue\:wan/brightness  來控制亮滅

 gpios = <&gpio2 0 1>,這是指定對應的gpio引腳(GPIO#40)

用戶空間gpio的調用

 用戶空間訪問gpio,即通過sysfs接口訪問gpio 控制GPIO的目錄位于:/sys/class/gpio

 /sys/class/gpio/export export 用于通知系統需要導出控制的GPIO引腳編號

/sys/class/gpio/unexport

unexport 用于通知系統取消導出

 /sys/class/gpio/gpiochipX gpiochipX 表示的就是一個gpio_chip,用來管理和控制一組gpio端口的控制器 目錄保存系統中GPIO寄存器的信息,包括每個寄存器控制引腳的起始編號base,寄存器名稱或標志label,引腳總數ngpio

 /sys/class/gpioN gpioN 指代具體的gpio引腳,目錄下有如下屬性文件 direction 表示gpio端口的方向,讀取結果是in或out。 value 表示gpio引腳的電平,0(低電平)1(高電平),如果gpio被配置為輸出,這個值是可寫的,記住任何非零的值都將輸出高電平 edge 表示中斷的觸發方式

 導出一個引腳的操作步驟 1.計算此引腳編號,引腳編號 = 控制引腳的寄存器基數 + 控制引腳寄存器位數(偏移量) 2.向/sys/class/gpio/export寫入此編號,比如0號引腳,在shell中可以通過以下命令實現,命令成功后生成/sys/class/gpio/gpio0目錄,如果沒有出現相應的目錄,說明此引腳不可導出:

echo 0 > /sys/class/gpio/export

 3./sys/class/gpio/gpio0下direction文件,定義輸入輸出方向 定義為輸出:

echo out > direction

定義為輸入:

echo in > direction

 4:/sys/class/gpio/gpio0下value文件 value 表示gpio引腳的電平,0(低電平)1(高電平),如果gpio被配置為輸出,這個值是可寫的,記住任何非零的值都將輸出高電平

echo 1 > value

導出gpio0引腳

將GPIO注冊為一個led燈、按鈕

配置

 "make menuconfig"命令進入配置界面,選擇Led、Button驅動(默認編譯的時候已經選上) 選擇len、button驅動 Led 驅動:

 LED modules    --->   <*> kmod-leds-gpio

                       <*> kmod-ledtrig-usbdev

Button 驅動:

 Other modules  --->   <*> kmod-gpio-button-hotplug.

 修改dts注冊led、按鈕(以WRTnode1為準) 打開并修改WRTNODE.dts 添加相關設備樹、注冊一個led燈 其中WRTnode1的led燈添加如下:

+    gpio-leds {

 +        compatible = "gpio-leds";

+        indicator {

 +            label = "wrtnode:blue:indicator";

 +            gpios = <&gpio1 14 1>;

+        };

+    };

 compatible要與Led的驅動leds-gpio.c里compatible對應。label是設備的名字,在文件系統/sys/class/leds/目錄下設備名對應 gpios = <&gpio1 14 1>,這是指定對應的gpio引腳(GPIO#38) 注冊Button

+    gpio-keys-polled {

 +       compatible = "gpio-keys-polled";

 +        #address-cells = <1>;

 +        #size-cells = <0>;

 +        poll-interval = <20>;

+        reset {

 +            label = "reset";

 +            gpios = <&gpio0 1 1>;

 +            linux,code = <0x198>;

+          };

+    };

上一篇:sigaction的使用

下一篇:C#錯誤調試方法

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部