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

查看: 1012|回復: 0
打印 上一主題 下一主題

IMX6ULL開發平臺Linux-LED實驗(一)

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2020-8-10 11:12:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在前面的章節中,我們學習了解了字符設備驅動,以及如何在設備樹文件中添加設備信息,接下來就來看一下i.MX6UL終結者開發板的實際硬件是如何添加的。我們先以最簡單的LED設備來看一下具體的注冊流程。
36.1 LED設備注冊流程
在i.MX6UL終結者開發板上有一個LED設備,如果想要通過Linux系統/dev目錄下的設備節點來控制LED,就需要在內核中添加LED的驅動,具體的流程可以分為下面幾個步驟:
① 硬件原理圖分析,確定控制LEDGPIO信息。
② 根據GPIO信息在設備樹文件中添加pinctrl信息
③ 在設備樹中創建LED的設備節點,并加入GPIO信息
④ 編寫LED設備驅動程序
接下來根據上面這四步來添加一下LED的設備驅動。
36.2 LED硬件原理圖分析
LED設備的硬件原理圖如下所示:
LED設備的原理圖很簡單,LED一端接3.3V電源,另一端為控制引腳:GPIO_3,通過控制GPIO_3的高低電平來控制LED的亮滅。所以我們確認LED設備只使用了一個控制引腳:GPIO_3
36.3 修改設備樹文件
在引腳原理圖分析中確認了LED的控制GPIO信息,接下來就要修改設備樹文件。
36.3.1 添加pinctrl信息
在i.MX6UL終結者開發板中使用GPIO_3這個引腳來控制LED設備。打開topeet_emmc_4_3.dts文件在iomux節點的imx6ul-evk子節點下創建一個名為“pinctrl_led”的子節點,具體內容如下:
&iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog_1>;
        imx6ul-evk {
pinctrl_led: gpio-led {
fsl,pins = ;
};
}
};
在pinctrl_gpio_leds節點中將GPIO_3引腳的復用功能定義為GPIO1_IO03,即為一個普通的輸入輸出引腳。宏定義MX6UL_PAD_GPIO1_IO03__GPIO1_IO03定義在arch/arm/boot/dts/imx6ul-pinfunc.h目錄下。
36.3.2 添加LED設備節點
topeet_emmc_4_3.dts文件下,在根節點“/”下創建LED節點,節點名為“gpioled”,具體內容如下:
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 屬性設置 LED 燈所使用的GPIO對應的 pinctrl 節點。
7行,led-gpio屬性指定了LED使用的GPIOGPIO1IO3引腳,低電平有效,在驅動程序中會獲取led-gpio屬性的內容來得到GPIO編號,因為gpio子系統的操作控制函數需要GPIO編號。
添加完LED的設備節點后,還有一個重要的步驟,就是檢查GPIO引腳有沒有被其他設備使用。一個引腳只能配置成一個功能,如果有其他設備也使用了這個GPIO,那么會導致在LED驅動程序中GPIO初始化失敗。這一點非常重要。
檢查GPIO引腳有沒有被其他設備使用包括兩個方面:
① 檢查pinctrl設置
② 檢查這個GPIO有沒有被別的設備使用
LED設備使用的是GPIO1_IO03,首先檢查GPIO1_IO03這個引腳有沒有其他pinctrl節點的設置。在topeet_emmc_4_3.dts文件中找到了如下內容:
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節點中定義了,pinctrl_tsc 節點是 TSC(電阻觸摸屏接口) pinctrl 節點,而在i.MX6UL終結者開發板中并沒有用到這個接口,因此我們要將pinctrl_tsc節點下的GPIO1_IO03引腳的定義注釋掉。 C 語言一樣,在要屏蔽的內容前后加上“/*”和“*/”符號即可。
既然有其他設備配置了GPIO1_IO03引腳的pinctrl信息,應該會有使用使用這個pinctrl節點的設備節點,在topeet_emmc_4_3.dts文件中查找一下pinctrl_tsc或者直接查找“gpio1 3”,查找內容如下:
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”,同意需要把這一行也注釋掉。然后繼續按照上面步驟搜索,看看還有沒有其他設備使用了GPIO1_IO03引腳。
設備樹編寫完成以后使用“make dtbs”命令重新編譯設備樹,然后使用新編譯出來的 topeet_emmc_4_3.dtb 文件啟動 Linux 系統。啟動成功以后進入“/proc/device-tree”目錄中查看“gpioled”節點是否存在,如果存在的話就說明設備樹基本修改成功(具體作用還要驅動驗證),結果如下圖所示:
請繼續:IMX6ULL開發平臺Linux-LED實驗(二)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久毛片免费看 | 久久伊人最新 | 91热播 | 寡妇一级a毛片免费播放 | 免费国产不卡午夜福在线 | 精品欧美一区二区三区四区 | 精品国产高清久久久久久小说 | 狠狠色丁香婷婷综合视频 | 亚洲欧美视频一区二区三区 | 久草日韩 | 一级做性色a爰片久久毛片免费 | 亚洲高清日韩精品第一区 | 亚洲成人黄色在线 | 国产在线观看自拍 | 欧美视频a | 日韩二区| 国产精品成人va | 97日韩 | 四虎在线最新地址公告 | 久久国产热这里只有精品 | 四虎国产精品永久地址99新强 | 国产91系列 | 日本视频免费高清一本18 | 青青青免费高清视频在线 | 草久免费视频 | 欧美成a高清在线观看www | 亚洲第一区精品日韩在线播放 | 国产免费黄色片 | 亚洲视频五区 | 精品国产第一国产综合精品 | 国产亚洲精品俞拍视频 | 无遮挡又黄又刺激的视频 | 色婷婷综合和线在线 | 精品欧美成人高清视频在线观看 | 亚洲免费观看在线视频 | 国产在线欧美日韩一区二区 | 国产福利小视频高清在线观看 | 亚洲第一页乱 | 99久久精品国产高清一区二区 | 我不卡在线 | 韩国一级黄色毛片 |