linux下imx6ul處理器用戶空間操作GPIO方法

linux下imx6ul處理器用戶空間操作GPIO方法


一、在用戶空間配置並操作GPIO的必要性

    有時,爲了快速方便的測試IO口,我們可以將GPIO暴露給用戶空間,直接在用戶空間配置並操作GPIO,前提是沒有驅動使用這個GPIO。

二、IMX6UL處理器GPIO編號算法

GPIO計算公式:
        id = (m - 1) * 32 + n
例如:
        有gpio3.13,則m = 3,n = 13,則id = (3 - 1) * 32 + 13 = 77
這是IMX6UL GPIO的編號算法,理論上所有IMX6處理其都是這樣的編號算法。

三、用戶空間配置操作GPIO方法

1. 使能linux內核選項CONFIG_GPIO_SYSFS
	CONFIG_GPIO_SYSFS=y
2. 測試方法
2.1 關注/sys/class/gpio下的文件
	--export 使能gpio配置
	--unexport 取消gpio配置
	--gpioX 指代具體的gpio引腳
	--gpio_chipY 指代gpio控制器
2.2 申請將某個gpio(假設申請gpio3的第13個gpio)的控制權導出到用戶空間,按照前面的算法,gpio3.13的id爲77。
echo 77 > /sys/class/gpio/export

此操作會生成目錄/sys/class/gpio/gpio77, 指代具體的gpio引腳gpio77目錄下有以下文件: 
   direction: 表示gpio端口的方向,讀取結果是in或out。該文件也可以寫,寫入out 時該gpio設爲輸出同時電平默認爲低。寫入low或high則不僅可以設置爲輸出還可以設置輸出的電平。
    value: 表示gpio引腳的電平,0(低電平)1(高電平),如果gpio被配置爲輸出,這個值是可寫的,記住任何非零的值都將輸出高電平。
    edge: 表示中斷的觸發方式,edge文件有如下四個值:none, rising, falling,both。
      none表示引腳爲輸入,不是中斷引腳
      rising表示引腳爲中斷輸入,上升沿觸發
      falling表示引腳爲中斷輸入,下降沿觸發
      both表示引腳爲中斷輸入,邊沿觸發
      這個文件節點只有在引腳被配置爲輸入引腳的時候才存在。 當值是none時可以通過如下方法將變爲中斷引腳, echo “both” > edge;對於是both,falling還是rising依賴具體硬件的中斷的觸發方式。此方法即用戶態gpio轉換爲中斷引腳的方式
    ***active_low:***目前還不知其功能。

2.3 /sys/class/gpio/gpiochipN

   gpiochipN表示的就是一個gpio_chip,用來管理和控制一組gpio端口的控制器,該目錄下存在以下屬性文件:
   base: 和N相同,表示控制器管理的小的端口編號。
   lable: 診斷使用的標誌(並不總是唯一的)
   ngpio: 表示控制器管理的gpio端口數量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章