gpio的使用--->使用linux 系统自带的 呼吸灯驱动(第一节)

硬件上: 使用 rk3588s

软件上: 使用 android12

驱动层:

参考文档: 正点原子的 6ull 的手册。

驱动的位置:  3588s-android12/kernel-5.10/drivers/leds/ leds-gpio.c

驱动的说明:3588s-android12/kernel-5.10/Documentation/devicetree/bindings/leds/common.yaml

目前我使用的是客户的板子进行测试,

客户板子上 使用的是  GPIO4A7, r67 是没有电压的,正好我可以用来测试。

设备树的编写:

至于为什么 会有两个 节点,我不清楚,要去看 驱动源码,我这里抄的正点原子的。

        gpio_leds {
                compatible = "gpio-leds";

                led0 {
                label = "red";
                gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
                default-state = "on";
                };



                pinctrl-names = "default";
                pinctrl-0 = <&gpio_led>;
         };

接下来还需要配置一下, pinctrl

        led{
                gpio_led:gpio_led{
                        rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
                };

我自己的猜测: 必须要在设备树中加上 pinctrl-0 , 节点才行。 我看 pinctrl 节点中 ,所有的服用都写了,驱动的设置应该不是 根据 pinctrl 来设置的。

最终又加上了这些。

menuconfig 使能:

可以看到 menuconfig里面默认是是能的。

device drivers/led support/ led support for gpio connected

默认已经编译成了 .o

先来编译 + 烧写测试一下:

是可以的, gpio 已经变成了高电平。

接下来是 关于 led 驱动的解析:

我看了一下,这部分比较难的,我自己看不懂。

大致的模型是这样的。

关于设备数的配置。

看一下我自己的源码的设置。

关于 .o 文件。

去驱动文件夹 看一下。可以看到 ,这几个 文件都是有了。

所以 这几个 宏定义, 应该是 都有的。

网上的资料有一个 比较有意思。

接下来就是 关于源码的分析了。

疑问: led 驱动,使用的是 platform 子系统,但是我看到最后 也没有看到  platform_register

只有一个 关于 fs 的 regiter , 不是很理解这里。

led-gpio.c 是关于操作硬件的,最终会涉及到对寄存器的操作。

应用层:

测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值