1、在泰山派设备树的/根节点上添加zbl_led子节点(路径:Z:\sdk\linux\kernel\arch\arm64\boot\dts\rockchip) 打开tspi-rk3566-user-v10-linux.dts设备树源文件 在根目录下添加gpioled子节点 2、在SDK上编译kernel(./build.sh kernel) 执行内核编译:./build.sh kernel 内核编译成功输出: 查看boot.img是否生成...
led_node = of_find_node_by_path("/taxue_leds");//从设备树路径获取节点if(led_node ==NULL){ printk("find node failed\n");return-1; } ledgpios[0] = of_get_named_gpio( led_node,"gpios1",0);//获取gpio编号,存在ledgpios[0]里} 6. 向内核申请gpio 在probe函数里 ret = gpio_reque...
第10行:指定了该 LED 设备所使用的 GPIO 引脚。&gpio0 是引脚控制器的引用,RK_PB7 是引脚的编号或标识,GPIO_ACTIVE_HIGH 表示该 GPIO 引脚的活动电平是高电平。 至此,关于led的设备树就讲解完成了。 60.3 其他SOC设备树对比 而无论使用的是瑞芯微SOC还是恩智浦、三星的SOC,在设备树关于gpio相关的描述都是类似...
Pintrl子系统,顾名思义,就是管理pin引脚的一个系统,比如要点亮LED,即要控制LED对应引脚的高低电平,就要先通过Pintrl子系统将LED对应的引脚复用为GPIO功能(这一点是不是和之前寄存器配置时使用的MUX寄存器的功能有点像)。 1.1 设备树中iomuxc节点 如何使用Pintrl子系统呢?其实它也是要依赖设备树的,先来了解一下设...
以前我们通过寄存器来操作GPIO引脚,即使LED驱动程序,对于不同的板子它的代码也完全不同。 当BSP工程师实现了GPIO子系统后,我们就可以: a. 在设备树里指定GPIO引脚 b. 在驱动代码中: 使用GPIO子系统的标准函数获得GPIO、设置GPIO方向、读取/设置GPIO值。 这样的驱动代码,将是单板无关的。
以配置 bl_led 为例,首先打开官方的底板硬件原理图,可以看到: 可以看到,该LED接在 GPIO2_B6 这个位置。 3.2、 GPIO 驱动实现 3.2.1、设备树节点配置 管脚绑定编号位于:/kernel/include/dt-bindings/pinctrl/rockchip.h 以下是 bl_led 的设备树节点: ...
三、GPIO设备树配置 1. BSP工程师实现的gpio驱动,驱动工程师直接在设备树中配置使用。 //client节点 device { led-gpios = <组, 哪个几个,flag>; //"组"是必须要有的元素,为gpio控制器的描述,这里除了组之外还有几个域是由组中的#gpio-cells的值决定的。
以LED为例,需要设置GPIO电平。但是有些电路可能是高电平点亮LED,有些是低电平点亮LED。 可以使用如下代码: gpiod_set_value(gpio, 1); // 输出高电平点亮LED gpiod_set_value(gpio, 0); // 输出低电平点亮LED 1. 2. 对应同一个目标:点亮LED,对于不同的LED,就需要不同的代码,原因在于上面的代码中1、...
Pintrl子系统,顾名思义,就是管理pin引脚的一个系统,比如要点亮LED,即要控制LED对应引脚的高低电平,就要先通过Pintrl子系统将LED对应的引脚复用为GPIO功能(这一点是不是和之前寄存器配置时使用的MUX寄存器的功能有点像)。 1.1 设备树中iomuxc节点 如何使用Pintrl子系统呢?其实它也是要依赖设备树的,先来了解一下设...
Pintrl子系统,顾名思义,就是管理pin引脚的一个系统,比如要点亮LED,即要控制LED对应引脚的高低电平,就要先通过Pintrl子系统将LED对应的引脚复用为GPIO功能(这一点是不是和之前寄存器配置时使用的MUX寄存器的功能有点像)。 1.1 设备树中iomuxc节点 如何使用Pintrl子系统呢?其实它也是要依赖设备树的,先来了解一下设...