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

電子工程網(wǎng)

標題: IMX6ULL開發(fā)平臺Linux-LED實驗(一) [打印本頁]

作者: 就是塔塔    時間: 2020-8-10 11:12
標題: IMX6ULL開發(fā)平臺Linux-LED實驗(一)
在前面的章節(jié)中,我們學習了解了字符設(shè)備驅(qū)動,以及如何在設(shè)備樹文件中添加設(shè)備信息,接下來就來看一下i.MX6UL終結(jié)者開發(fā)板的實際硬件是如何添加的。我們先以最簡單的LED設(shè)備來看一下具體的注冊流程。
36.1 LED設(shè)備注冊流程
在i.MX6UL終結(jié)者開發(fā)板上有一個LED設(shè)備,如果想要通過Linux系統(tǒng)/dev目錄下的設(shè)備節(jié)點來控制LED,就需要在內(nèi)核中添加LED的驅(qū)動,具體的流程可以分為下面幾個步驟:
① 硬件原理圖分析,確定控制LEDGPIO信息。
② 根據(jù)GPIO信息在設(shè)備樹文件中添加pinctrl信息
③ 在設(shè)備樹中創(chuàng)建LED的設(shè)備節(jié)點,并加入GPIO信息
④ 編寫LED設(shè)備驅(qū)動程序
接下來根據(jù)上面這四步來添加一下LED的設(shè)備驅(qū)動。
36.2 LED硬件原理圖分析
LED設(shè)備的硬件原理圖如下所示:
LED設(shè)備的原理圖很簡單,LED一端接3.3V電源,另一端為控制引腳:GPIO_3,通過控制GPIO_3的高低電平來控制LED的亮滅。所以我們確認LED設(shè)備只使用了一個控制引腳:GPIO_3
36.3 修改設(shè)備樹文件
在引腳原理圖分析中確認了LED的控制GPIO信息,接下來就要修改設(shè)備樹文件。
36.3.1 添加pinctrl信息
在i.MX6UL終結(jié)者開發(fā)板中使用GPIO_3這個引腳來控制LED設(shè)備。打開topeet_emmc_4_3.dts文件在iomux節(jié)點的imx6ul-evk子節(jié)點下創(chuàng)建一個名為“pinctrl_led”的子節(jié)點,具體內(nèi)容如下:
&iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog_1>;
        imx6ul-evk {
pinctrl_led: gpio-led {
fsl,pins = ;
};
}
};
在pinctrl_gpio_leds節(jié)點中將GPIO_3引腳的復(fù)用功能定義為GPIO1_IO03,即為一個普通的輸入輸出引腳。宏定義MX6UL_PAD_GPIO1_IO03__GPIO1_IO03定義在arch/arm/boot/dts/imx6ul-pinfunc.h目錄下。
36.3.2 添加LED設(shè)備節(jié)點
topeet_emmc_4_3.dts文件下,在根節(jié)點“/”下創(chuàng)建LED節(jié)點,節(jié)點名為“gpioled”,具體內(nèi)容如下:
1 gpioled {
2  #address-cells = <1>;
3 #size-cells = <1>;
4 compatible = "gpioled";
5 pinctrl-names = "default";
6 pinctrl-0 = <&pinctrl_led>;
7 led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
8 status = "okay";
9 };
6行,pinctrl-0 屬性設(shè)置 LED 燈所使用的GPIO對應(yīng)的 pinctrl 節(jié)點。
7行,led-gpio屬性指定了LED使用的GPIOGPIO1IO3引腳,低電平有效,在驅(qū)動程序中會獲取led-gpio屬性的內(nèi)容來得到GPIO編號,因為gpio子系統(tǒng)的操作控制函數(shù)需要GPIO編號。
添加完LED的設(shè)備節(jié)點后,還有一個重要的步驟,就是檢查GPIO引腳有沒有被其他設(shè)備使用。一個引腳只能配置成一個功能,如果有其他設(shè)備也使用了這個GPIO,那么會導(dǎo)致在LED驅(qū)動程序中GPIO初始化失敗。這一點非常重要。
檢查GPIO引腳有沒有被其他設(shè)備使用包括兩個方面:
① 檢查pinctrl設(shè)置
② 檢查這個GPIO有沒有被別的設(shè)備使用
LED設(shè)備使用的是GPIO1_IO03,首先檢查GPIO1_IO03這個引腳有沒有其他pinctrl節(jié)點的設(shè)置。在topeet_emmc_4_3.dts文件中找到了如下內(nèi)容:
pinctrl_tsc: tscgrp {
      fsl,pins = <
               MX6UL_PAD_GPIO1_IO01__GPIO1_IO01        0xb0
               MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0xb0
               MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0xb0
               MX6UL_PAD_GPIO1_IO04__GPIO1_IO04        0xb0
              >;
  };
GPIO1_IO03引腳也在pinctrl_tsc節(jié)點中定義了,pinctrl_tsc 節(jié)點是 TSC(電阻觸摸屏接口) pinctrl 節(jié)點,而在i.MX6UL終結(jié)者開發(fā)板中并沒有用到這個接口,因此我們要將pinctrl_tsc節(jié)點下的GPIO1_IO03引腳的定義注釋掉。 C 語言一樣,在要屏蔽的內(nèi)容前后加上“/*”和“*/”符號即可。
既然有其他設(shè)備配置了GPIO1_IO03引腳的pinctrl信息,應(yīng)該會有使用使用這個pinctrl節(jié)點的設(shè)備節(jié)點,在topeet_emmc_4_3.dts文件中查找一下pinctrl_tsc或者直接查找“gpio1 3”,查找內(nèi)容如下:
1 &tsc {
2        pinctrl-names = "default";
3        pinctrl-0 = <&pinctrl_tsc>;
4        xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
5        measure-delay-time = <0xffff>;
6        pre-charge-time = <0xfff>;
7        status = "disabled";
8 };
可以看出第4xnur-gpio屬性使用了“gpio1 3”,同意需要把這一行也注釋掉。然后繼續(xù)按照上面步驟搜索,看看還有沒有其他設(shè)備使用了GPIO1_IO03引腳。
設(shè)備樹編寫完成以后使用“make dtbs”命令重新編譯設(shè)備樹,然后使用新編譯出來的 topeet_emmc_4_3.dtb 文件啟動 Linux 系統(tǒng)。啟動成功以后進入“/proc/device-tree”目錄中查看“gpioled”節(jié)點是否存在,如果存在的話就說明設(shè)備樹基本修改成功(具體作用還要驅(qū)動驗證),結(jié)果如下圖所示:
請繼續(xù):IMX6ULL開發(fā)平臺Linux-LED實驗(二)






歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 婷婷六月天在线 | 免费观看呢日本天堂视频 | 亚洲国产第一区二区三区 | 美国伦理片大全手机在线 | 日韩a在线 | 国产精品1024香蕉在线观看 | 久久久久久久99视频 | 国产一级二级三级在线观看 | 毛片免费毛片一级jjj毛片 | 国产三级在线免费 | 日本免费在线观看 | 成年女人毛片免费视频 | 妖精视频一区二区三区 | 在线成人毛片 | 欧美激情中文字幕一区二区 | 五月开心六月伊人色婷婷 | 国产一级自拍 | 三级色网站 | 日本www在线视频 | 亚洲天堂在线观看完整版 | 亚洲国产日韩在线观看 | 视频h在线| 国产精品日韩一区二区三区 | 性色吧 | 九九亚洲视频 | 色久综合网 | 日韩欧美视频 | 麻豆影院在线观看 | 免费一级在线观看 | 免费看一级做a爰片久久 | 欧美日韩三区 | 日韩在线一区视频 | 最新亚洲精品 | 久久久久久久国产精品影院 | 亚洲欧美精品一区 | 欧美片在线视频观看 | 五月天精品| 久艹精品 | 国产又粗又爽又大又长免费视 | 激情文学图片 | 亚洲国产欧美精品一区二区三区 |