国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

i.MX6UL添加GPIO的方法基于飛凌嵌入式OKMX6UL開發板

發布時間:2017-4-28 16:06    發布者:bdforlinx2013
關鍵詞: imx6UL , i.MX6UL , imx6ul開發板

注:i.MX6UL添加GPIO方法,使用平臺為飛凌嵌入式OKMX6UL-C開發板,其它平臺可參考使用

i.MX6UL開發板詳情
http://www.forlinx.com/60.htm


方法一:采用iomux的方法
在設備樹中iomux中添加復用gpio引腳如下,具體設置的上下拉電阻,驅動能力,查找i.MX6UL CPU手冊,對應修改。
比如MX6UL_PAD_CSI_DATA00__GPIO4_IO21    0x3008
MX6UL_PAD_CSI_DATA01__GPIO4_IO22    0x1f0b1
MX6UL_PAD_CSI_DATA02__GPIO4_IO23    0x1f0b1
MX6UL_PAD_CSI_DATA03__GPIO4_IO24    0x1f0b1
MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09    0x1f0b1
MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08   0x1f0b1
MX6UL_PAD_JTAG_TDO__GPIO1_IO12        0x1f0b1
  
同時修改設備樹文件中(其他地方復用引腳)
編譯設備樹。替換飛凌iMX6UL開發板中所用設備樹。
此時可以使用echo命令進行控制:
命令為:
echo $i > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$i/direction
或echo "in" > /sys/class/gpio/gpio$i/direction
echo "1" > /sys/class/gpio/gpio$i/value
echo "0" > /sys/class/gpio/gpio$i/value
echo $i > /sys/class/gpio/unexport
以控制GPIO4_IO22為例:
1. 計算對應sys/class/gpio的值GPIOn_IOx = (n-1)*32 + x
GPIO4_IO22=(4-1)*32+22=118
2. 將GPIO4_IO22設置為輸出。
echo 118 > /sys/class/gpio/export用于通知系統需要導出控制的GPIO引腳編號
echo "out" > /sys/class/gpio/gpio118/direction 控制為輸出
echo "1" > /sys/class/gpio/gpio118/value 輸出為高電平
或者echo "0" > /sys/class/gpio/gpio118/value輸出為低電平
echo 118  > /sys/class/gpio/unexport 通知系統取消導出
3. 將GPIO4_IO22設置為輸入。
echo 118 > /sys/class/gpio/export用于通知系統需要導出控制的GPIO引腳編號
echo "in" > /sys/class/gpio/gpio118/direction 控制為輸入
這時給該引腳接高電平,輸入即為高電平,反之為低電平
echo 118  > /sys/class/gpio/unexport 通知系統取消導出
4. 另外客戶可以自己通過shell文件來控制gpio做為輸入或者輸出。
4.1 GPIO輸出測試
編寫測試腳本 vi gpiotest_o.sh
#!/bin/bash
# gpio list gpio (bank-1)*32 + nr  
for test in 118 119 120 137 136 12
do
echo Exporting pin $test.
echo $test> /sys/class/gpio/export
echo Setting pin $1.
echo  out > /sys/class/gpio/gpio$test/direction
echo  $1 > /sys/class/gpio/gpio$test/value
echo $test> /sys/class/gpio/unexport
done
echo complete
修改腳本執行權限:chmod u+x gpiotest_o.sh
測試gpio輸出為低。進入到腳本所在路徑:./gpiotest_o.sh  0
所有GPIO輸出低電平 0V。
測試gpio輸出為高電平。進入到腳本所在路徑:./gpiotest_o.sh  1
所有GPIO輸出高電平。輸出的高電平,根據引腳所在的電源域不同,可能會有區別。
另外有些客戶發現
echo 118 > /sys/class/gpio/export用于通知系統需要導出控制的GPIO引腳編號
echo "out" > /sys/class/gpio/gpio118/direction 控制為輸出
echo "1" > /sys/class/gpio/gpio118/value 輸出為高電平
cat /sys/class/gpio/gpio118/value 仍舊為0
原因如下圖所示,客戶可以從CPU手冊中查找到相關內容:
輸入模式讀取的是psr的值。
讀取output的value值是從PSR中讀取的。而寫入output值是寫入到DR中的。可以通過設置SION位回環。
4.2 GPIO輸入測試
編寫測試腳本 vi gpiotest_i.sh
#!/bin/bash
# gpio list gpio (bank-1)*32 + nr  
for test in 118 119 120 137 136 12
do
echo Exporting pin $test.
echo $test> /sys/class/gpio/export
echo  in > /sys/class/gpio/gpio$test/direction
gpioval=`cat  /sys/class/gpio/gpio$test/value`
echo GPIO $test = $gpioval
echo
echo $test> /sys/class/gpio/unexport
done
echo complete
修改腳本執行權限:chmod u+x gpiotest_i.sh
測試gpio輸入為低。進入到腳本所在路徑:./gpiotest_i.sh
所有GPIO輸入為 0。
測試gpio輸入為高電平,比如5v。進入到腳本所在路徑:./gpiotest_i.sh
所有GPIO輸入為1。(如果為非零值,是因為讀取對應的位為1,可以修改內核源碼中drivers/gpio/gpio-generic.c文件,將其中中bgpio_get函數中
return bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, gpio);修改為
return !!(bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, gpio));
修改之后,value值為1)
\iomuxc\shell\di\in-test.sh,復制到forlinx(比如)目錄下./in-test.sh 118
\iomuxc\shell\do\close.sh,復制到forlinx(比如)目錄下./close.sh 118
\iomuxc\shell\do\open.sh,復制到forlinx(比如)目錄下./open.sh 118
或者采用\iomuxc\write-117-out-high\test,復制到forlinx(比如)目錄下./test 將gpio 117輸出為高。

方法二:創建dev/gpio節點。
1、在設備樹文件中添加設備節點定義以及其引腳定義:
并將其他復用引腳對應的功能disabed,保證這些引腳沒被重復定義使用。引腳的pinmux可以查看imx6ul-pinfunc.h文件。
2、在driver/misc/gpio目錄下添加gpio驅動gpio-user.c,名字需要與節點定義里的驅動名字保持相同,客戶也可以自己寫驅動。同時添加Kconfig和Makefile文件。
修改driver/misc下Kconfig和Makefile文件:
在driver/misc/Makefile 中添加:
obj-y            += gpio/
編輯driver/misc/Kconfig, 添加一行:
source "drivers/misc/gpio/Kconfig",如圖:
在根目錄下修改linux_imx6ul_config文件,添加:
CONFIG_GPIO_USER_INTF=y
3、編譯。
make zImage
make ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi- dtbs
4、拷貝前面生成的zImage, imx6ul-14x14-evk.dtb 到 SD卡system目錄中,SD卡方式燒錄。
在dev下有gpio節點。
采用gpio-test.c為用戶測試程序。編譯為gpio-test。
使用gpio-test in 2測試DI。
使用gpio-test out 0 1 測試DO1 輸出為高電平。
使用gpio-test out 0 0 測試DO1 輸出為低電平。
http://www.forlinx.com/zixun/165.htm

本文地址:http://www.qingdxww.cn/thread-362404-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 為何選擇集成電平轉換?
  • 無線充電基礎知識及應用培訓教程3
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 朝鲜一级毛片 | 国产在线91精品入口 | 午夜一区二区免费视频 | 成人国产精品一级毛片了 | 9久久精品 | 欧美又大粗又爽又黄大片视频黑人 | 国产精品亚洲综合网站 | 国产精品秒播无毒不卡 | 日韩精品一级毛片 | 亚洲高清成人欧美动作片 | 国产精品麻豆99久久 | 五月婷婷视频在线 | 日韩高清的天堂在线观看免费 | 久久福利一区 | 中文字幕在线观看亚洲日韩 | 一区二区三区四区视频 | 日韩在线免费看网站 | 狠狠色成人综合网图片区 | 免费国产成人高清在线观看不卡 | 国产手机在线 | 国产精品午夜在线播放a | 色综合久久久久久久 | 久久精品30 | 91tv在线| 全免费a级毛片免费看视频免 | 日本精品一区二区三区在线观看 | 国产精品视频成人 | yellow中文字幕久久网 | 丰满的锼子4中文字日本 | 轻轻草在线视频 | 国产免费小视频在线观看 | 亚洲网在线观看 | 欧美一区二区手机在线观看视频 | 可以免费看污片的网站 | 99热免费精品 | 伊人久久综在合线亚洲91 | 国产激情自拍视频 | 国产精品欧美劲爆可乐 | 国产精品视频免费看 | 手机看片日韩欧美 | 日韩欧美视频一区 |