打印
[技术问答]

【MA35D1】如何添加GPIO-line-name

[复制链接]
604|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2023-6-9 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pi, GPIO, IO, gp, BSP
假设给GPIO0~GPIO7命名分别为“test0...test7”,需要在ma35d1.dtsi配置,相关配置如下:
                gpioa: gpioa@40040000 {
                        reg = <0x0 0x40040000 0 0x40>,
                              <0x0 0x40040800 0 0x40>;
                        interrupts = <GIC_SPI  14 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk GPA_GATE>;
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        gpio-line-names =
                              "test0",
                              "test1",
                              "test2",
                              "test3",
                              "test4",
                              "test5",
                              "test6",
                              "test7","","","","","","","","";
                };
编译后用工具gpioinfo可以查询GPIO的信息如下:
# ./gpioinfo
gpiochip0 - 16 lines:
        line   0:      "test0"       unused   input  active-high
        line   1:      "test1"       unused   input  active-high
        line   2:      "test2"       unused   input  active-high
        line   3:      "test3"       unused   input  active-high
        line   4:      "test4"       unused   input  active-high
        line   5:      "test5"       unused   input  active-high
        line   6:      "test6"       unused   input  active-high
        line   7:      "test7"       unused   input  active-high
        line   8:      unnamed       unused   input  active-high
        line   9:      unnamed       unused   input  active-high
        line  10:      unnamed       unused   input  active-high
        line  11:      unnamed       unused   input  active-high
        line  12:      unnamed       unused   input  active-high
        line  13:      unnamed       unused   input  active-high
        line  14:      unnamed       unused   input  active-high
        line  15:      unnamed       unused   input  active-high
......
第一列是GPIO的编号,第二列是line-name,在dts里面通过配置gpio-line-names来配置,第三列是被使用者名字,第四列是方向,最后一列是激活状态


控制GPiO时就不用管在哪个端口哪个pin了,直接给名字就可以调用
类似,比如上面定义了一个IO叫test0,用libgpiod自带的控制程序可以这样控制:

gpiofind test0,这个程序会输出对应的gpiochip和offset
# ./gpiofind test0
gpiochip0 0

再用gpioset gpiochipXX offset=1来控制输出高电平
# ./gpioget gpiochip0 0
0
# ./gpioset gpiochip0 0=1
# ./gpioget gpiochip0 0
1
#

使用特权

评论回复
沙发
xixi2017| | 2023-6-13 08:55 | 只看该作者
要在设备树(Device Tree)中添加 GPIO 行名称(GPIO line name),你需要进行以下步骤:

确定你要添加 GPIO 行名称的设备树文件(.dts 文件)。这通常是在 Buildroot 的 output/build/linux-<version> 目录中的 Linux 内核源代码副本下的设备树文件。如果你在其他地方修改了设备树文件,请确保使用的是正确的文件。

在设备树文件中找到要添加 GPIO 行名称的 GPIO 控制器节点(GPIO controller node)。该节点通常以 gpio-controller 或类似的标识开始。

在 GPIO 控制器节点中添加一个新的属性,使用 gpio-line-names 标签,并在其中指定 GPIO 行名称。例如:
gpio-line-names = "gpio-line-name1", "gpio-line-name2", ...;

将 "gpio-line-name1"、"gpio-line-name2" 等替换为你**添加的 GPIO 行名称。

保存并关闭设备树文件。

接下来,重新构建设备树二进制文件(Device Tree Blob,DTB)。可以按照之前提供的方法,使用 make linux-rebuild 或 make linux-dirclean 和 make linux 命令来重新编译内核并生成新的设备树二进制文件。

构建完成后,在 output/images 目录中可以找到更新后的设备树二进制文件(.dtb 文件)。

将新的设备树二进制文件用于你的嵌入式系统时,请确保将其加载到正确的位置,并更新系统配置以反映新的设备树。

请注意,上述步骤假定你已经熟悉设备树的基本概念和设备树编写语法。如果你对设备树不熟悉,建议参考 Linux 内核文档和设备树的相关资料以获取更详细的指导。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

500

主题

1906

帖子

4

粉丝