如何将简单的 GPIO 定义添加到设备树(Yocto)?

问题描述 投票:0回答:2

我正在使用 TI AM64XX 和一个基础项目,该项目在设备树上对电路板的某些 GPIO 进行了有限的定义。我需要比 DTS 中定义的更多的 GPIO,以便稍后在我的 C/C++ 代码中使用并将它们作为简单输出进行操作。根据数据表,我选择了引脚

gpio1_26
gpio1_25
,但我不知道如何准确修改设备树,以实现这三个GPIO

 &gpio1 { 
     status = "okay";
     pinctrl-names = "default";
     pinctrl-0 = <&main_gpio1_pins_default>;
     gpio-controller;
};

main_gpio1_pins_default: main-gpio1-pins-default {
pinctrl-single,pins = <
        AM64X_IOPAD(0x01C8, PIN_OUTPUT, 7) /* gpio1_26 */
        AM64X_IOPAD(0x01C4, PIN_OUTPUT, 7) /* gpio1_25 */
        AM64X_IOPAD(0x01C0, PIN_OUTPUT, 7) /*gpio1_24 */
        >;
        };

你有什么想法吗?

我尝试过一些像这样的定义,但它在编译部分失败,这是错误screenshow

找不到 gpio1 标签或路径

embedded-linux yocto gpio device-tree texas-instruments
2个回答
0
投票

我不知道你的CPU,但一般来说应该可以通过额外的GPIO来扩展当前块。

main_gpio1_pins_default: main-gpio1-pins-default { pinctrl-单,引脚 = < AM64X_IOPAD(0x01C8, PIN_OUTPUT, 7) /* gpio1_26 / AM64X_IOPAD(0x01C4, PIN_OUTPUT, 7) / gpio1_25 */ AM64X_IOPAD(0x01C0, PIN_OUTPUT, 7) /*gpio1_24 */ [在此放置更多条目] >; };

查看 CPU 的说明,找到所需 GPIO 的 PIN。还应该有一个计算地址的描述。对于其他 TI CPU,可以使用在线工具完成此操作。 或者可能有一个包含所有可用 GPIO 引脚的映射文件。 Grep 代码。


0
投票

正如您在编译输出中看到的,

gpio1
节点没有定义。 dts 中的
&
符号引用先前定义的节点,如果默认情况下未定义该节点或者您没有明确定义它,则该引用没有任何意义。 查看您正在使用的 dts“k3-am642-sk.dts”,我发现第 130 行中有一个名为
main_pmx0
的节点,这是主要的 pinmux 模式节点,您应该在其中添加您的配置。 另一种选择(实际上是推荐的)是制作一个
.dtsi
文件并将其包含在您的主文件中,但为了简单起见,您可以修改原始文件。

在主 pinmux 节点内,您可以定义引脚:

&main_pmx0 {
    custom_pins: custom_pins {
            pinctrl-single,pins = <
                AM64X_IOPAD(0x01C8, PIN_OUTPUT, 7) 
                AM64X_IOPAD(0x01C4, PIN_OUTPUT, 7) 
            >;
};

在示例中我刚刚添加了 2 个引脚,请随意添加您想要的数量。

这样做,您应该能够使用 gpios

sys/class/gpio
或 gpio char dev 驱动程序(或 libgpiod 等工具)

注意:请务必对 pinmux 模式进行适当的研究(请参阅相应的参考处理器手册),有些引脚不能用作 gpios。我刚刚复制了您在问题中写的引脚方向和 pinmuxmode,假设您已经获得了该信息。

注意 2:如果您使用 bitbake 进行编译,那么您应该重新编译 .wic 映像,否则 nvm

注3(回复您的评论): 如果您没有看到

/sys/class/gpio
,那是因为它已被弃用,新标准是使用
gpio char device
。如果你这样做
ls /dev
,你会发现一些名为
gpiochipX
的角色开发驱动器。 如果你想添加 sys/class/gpio 那么你必须在内核 menuconfig 中配置它:

打开内核菜单配置并激活以下内容:

Symbol: EXPERT [=y]
Location:
General Setup --->
    [*] Configure standard kernel features (expert users)

Symbol: SYSFS [=y]
Location:
File systems --->
    Pseudo file systems --->
        -*- sysfs file system support

Symbol: GPIO_SYSFS [=y]
Location:
Device Drivers --->
    [*] GPIO support --->
        [*] sys/class/gpio
© www.soinside.com 2019 - 2024. All rights reserved.