gpio怎么与pinctrl产生联系?gpio怎么使用pinctrl?若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
PC端开发环境 | Windows | Windows11 |
Ubuntu | Ubuntu20.04.2的64位版本 |
VMware® Workstation 17 Pro | 17.6.0 build-24238078 |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) |
Win32DiskImager | Win32DiskImager v1.0 |
Linux开发板环境 | Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04 |
linux内核 | linux-4.19.71(NXP官方提供) |
点击查看本文参考资料
点击查看相关文件下载
一、一个示例
1. 硬件原理
假设使用这个虚拟的GPIO Controller的 pin0 来控制LED:
要使用pin0来控制LED,首先要通过Pinctrl子系统把它设置为GPIO功能,然后才能设置它为输出引脚、设置它的输出值。
2. 设备树
2.1 pincontroller节点
1 2 3 4 5 6 7 8
| virtual_pincontroller { compatible = "100ask,virtual_pinctrl"; myled_pin: myled_pin { functions = "gpio"; groups = "pin0"; configs = <0x11223344>; }; };
|
2.2 GPIO controller节点
1 2 3 4 5 6
| gpio_virt: virtual_gpiocontroller { compatible = "100ask,virtual_gpio"; gpio-controller; #gpio-cells = <2>; ngpios = <4>; };
|
2.3 led设备节点
1 2 3 4 5 6
| myled { compatible = "100ask,leddrv"; led-gpios = <&gpio_virt 0 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&myled_pin>; };
|