一,前言
上一篇blog中驱动开发环境都搭建好了,我需要先复习下设备树的一些属性。最简单的就是先控制一个LED灯。bb-black有4个用户灯,其中有一个是kernel的心跳灯gpio1-21,我先将其disable,然后作为我将使用的led资源。
我当前制作的Ubuntu18.04中驱动和应用代码路径:/home/applecai/mydriver/AppleLED/。代码就不贴了,关于驱动代码就是基本框架中使用of_xxx函数,也不需要添加中断或者锁相关的内容。因为一个资源之后只有一个app在使用,为什么这样说,因为app是我写的,哈哈!app控制就更加简单了,仅仅open,write,close而已。因为我的主要目的是复习下设备树,看了些资料回顾了下,又想起来了。那就开工咯~
二,修改设备树
基于原理图先查看了我需要使用的是gpio1_21引脚,设置为高电平则灯亮,设置为低电平则灯灭。然后通过UM中的数据来查看和修改设备树信息。
先要看懂原来的,才可以修改,通过搜索pinctrl查到原来的设置如下。能和UM信息对应上。
Pinctrl设置的电气属性
image.png
原来有一个节点用来显示kernel心跳的,它使用了gpio1 21如下。
led2 {
label = "beaglebone:green:heartbeat";
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
所以我需要修改禁用此节点,修改如下
led2 {
label = "beaglebone:green:heartbeat";
/*gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;*/
linux,default-trigger = "heartbeat";
default-state = "off";
status = “disabled”
};
主节点下增加applele节点(添加pinctrl-0引用及gpio引脚设置)
appleled{
/* #address-cells = <1>; */
/* #size-cells = <1>; */
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&usr_led_test>;
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
status = "okay";
};
在&am33xx_pinmux中追加,pinctrl设置(电气属性及功能脚定义)
usr_led_test:usr_led_test {
pinctrl-single,pins = <
/* gpmc_a5.gpio1_21 */
AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE7)
>;
};
网友评论