gpiolib函数调用

GPIO Mappings — The Linux Kernel documentationicon-default.png?t=N7T8https://docs.kernel.org/5.17/driver-api/gpio/board.html

dts配置

         如果想在其它模块中改变gpio引脚的配置,需要在dts中做出相应修改,具体内容如下。不建议在dtsi中修改,我个人理解dtsi面向芯片,由芯片设计厂家完成。开发人员拿到芯片后,依据芯片设计硬件电路板,硬件电路板相关的模块配置都记录在dts文件中,编译时,dts中的配置会覆盖dtsi中的配置。

1.在dts(dtsi)的目标模块中添加-gpio或者gpios节点。

&dvb_widgets {
    status = "disabled";
    dw_name = "dvb-widgets";
    dw_num = <8>;
    led-gpios = <&porta 27 GPIO_ACTIVE_HIGH>;
};

2.dts的gpio节点需要添加gpio-ranges,pinctrl-names,pinctrl-0属性。

&gpio0 {
    status = "disabled";
    porta: gpio-port@0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio27_default>;
        gpio-ranges = <&pinctrl 27 55 111>;

3.dts的pinctrl节点需要添加引脚复用相关配置。如果不进行引脚复用,倘若要操作的引脚被复用成spi功能引脚,gpiolib函数调用后可能无法改变引脚电平。

&pinctrl {
    status = "disabled";
    pinctrl_gpio27_default: gpio27-default{
        mux{
            groups = "gpio27_group";
            function = "gpio27_func";
        };
        conf {
            groups = "gpio27_group";
            input-enable = <1>;
        };
    };
};

驱动配置

Linux driver dts使用,实例驱动编写-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/songyulong8888/article/details/78115512      具体的驱动配置,可以参考这篇文章。在使用过程中,需要添加相关头文件,必须要添加#include <linux/gpio/consumer.h>。我是通过中断加打印信息的方式,验证gpiolib函数调用有无成功。本人是通过zebu环境,远程操作验证的,如果单纯验证功能是否实现,可以使用软件示波器操作。但抓波形后,系统加载过程终止(我是在芯片原厂进行驱动维护,要保证系统正常加载)。所以我采用上面的博客链接,添加了虚拟驱动,并在该驱动中改变gpio27引脚的电平,以触发与之相连的gpio0引脚的中断。这样,可以兼顾系统加载与gpiolib测试的需要。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值