GPIO 子系统LED驱动程序上机操作
确定引脚并生成设备树节点,NXP 公司对于 IMX6ULL 芯片,有设备树生成工具,安装 Pins_Tool_for_i.MX_Processors_v6_x64.exe
后运行,打开IMX6ULL
的配置文件 MCIMX6Y2xxx08.mex
,就可以在 GUI 界面中选择引脚,配置它的功能,这就可以自动生成 Pinctrl 的子节点信息。100ASK_IMX6ULL 使用的 LED 原理图如下,可知引脚是 GPIO5_3:
你指定好引脚,工具会帮你把 Pinctrl
对应的设备树代码生成,把自动生成的设备树信息,放到内核源码 arch/arm/boot/dts/100ask_imx6ull-14x14.dts
中
Pinctrl 信息:
&iomuxc_snvs {
……
myled_for_gpio_subsys: myled_for_gpio_subsys{
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x000110A0
>;
};
设备节点信息(放在根节点下):
myled {
compatible = "100ask,leddrv";
pinctrl-names = "default";
pinctrl-0 = <&myled_for_gpio_subsys>;//这里与上面的名字相同
led-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;//gpio5 低电平有效
};
测试
原来的这个led被用来作为cpu的指示灯; 要在设备树文件中搜索出来,然后disable一下
然后把设备树拷贝到开发板的/boot目录下,更新设备树,然后reboot,然后insmod就行了
insmod leddrv.ko
ls /dev/100ask_led0
./ledtest /dev/100ask_led0 on
./ledtest /dev/100ask_led0 off
正常情况能看到你开发板上面 LED 的亮灭的