IMX6ULL配置GPIO管脚和测试
简介MY-IMX6-CB140P-6Y2D-256M-4G,如下图:(6Y2D是IMX6ULL,256M是内存,4G是EMMC) 对于的设备树文件为arch/arm/boot/dts/myimx6ek140p-6y-256m-emmc.dts 文件内容: /dts-v1/;
#include “myimx6y-pinfunc.h” #include “myimx6y.dtsi”
#include “myimx6ek140p-iomuxc.dtsi” #include “myimx6ek140p-6y-snvs.dtsi” #include “myimx6cb140-nand4emmc.dtsi” /* myimx6cb140-nand4nand.dtsi / #include “myimx6a7-lcd4wvga.dtsi” / myimx6a7-lcd4wqvga.dtsi / #include “myimx6a7-enet4enet.dtsi” / myimx6a7-enet4uart.dtsi */ #include “myimx6ek140p.dtsi”
/ { model = “MYIMX6EK140P-6Y-256M-eMMC Evaluation Kit”; compatible = “myzr,myimx6cb140”, “myzr,myimx6ek140p”, “fsl,imx6ull”; }; 介绍说明: myimx6y-pinfunc.h 是 imx6ull 全部预定义管脚都在这里(可以在这边复制管脚) myimx6y.dtsi 是 imx6ull 核心注册设备信息 myimx6ek140p-iomuxc.dtsi 是 imx6ull 定义管脚功能(管脚修改,需要改到这个文件) myimx6ek140p-6y-snvs.dtsi 是 imx6ull 定义管脚功能(管脚修改,需要改到这个文件) myimx6a7-lcd4wvga.dtsi 是 RGB屏相关管脚和分辨率参数 myimx6a7-enet4uart.dtsi 是 配置一个以太网,配置uart6,7,8 myimx6a7-enet4enet.dtsi 是 配置两个以太网 myimx6ek140p.dtsi 是 imx6ull 注册设备信息 (增加驱动,需要改到这个文件)
配置GPIO管脚这里讲解P21的34和36管脚,如下图 vim arch/arm/boot/dts/myimx6ek140p.dtsi 增加 &iomuxc { pinctrl-names = “default”; pinctrl-0 = <&pinctrl_nand_gpio &pinctrl_gpio_gpio &pinctrl_snvs_4g_rst &pinctrl_snvs_gpio>; }; 里面&pinctrl_gpio_gpio表示GPIO注册时,会注册&pinctrl_gpio_gpio里面的管脚。
arch/arm/boot/dts/myimx6ek140p-iomuxc.dtsi 定义了两个管脚 pinctrl_gpio_gpio: gpio_gpio_grp { fsl,pins = < MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x80000000 /* P21:36 / MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x80000000 / P21:35 */ >; }; MX6UL_PAD_GPIO1_IO03__GPIO1_IO03分为两段,前面那段GPIO1_IO03是CPU管脚名,如下图 后面GPIO1_IO03代表功能,其实我们在myimx6y-pinfunc.h可以看到很多预定义的功能: 这里我们选择GPIO功能:MX6UL_PAD_GPIO1_IO03__GPIO1_IO03
测试IMX6ULL代表每个BANK是32个管脚, io端口号= (((bank) - 1) * 32 + (nr)) GPIO1_IO03代表第1组gpio中的第3个gpio口,其中每组32个gpio口 io端口号为IMX_GPIO_NR(1,11)=32×(1-1)+3=3
root@myimx6ek140p:~# echo 3 > /sys/class/gpio/export root@myimx6ek140p:~# echo out > /sys/class/gpio/gpio3/direction root@myimx6ek140p:~# echo 1 > /sys/class/gpio/gpio3/value root@myimx6ek140p:~# echo 0 > /sys/class/gpio/gpio3/value
|