This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
你好
我正在将基于 AM3358的电路板从 ti-linux 5.4内核升级到 ti-linux 6.6内核、并且存在一些与 GPIO 引脚映射相关的问题。 我知道已经对6.6内核进行了更改、不再使用 sysfs 接口、因此我将尝试改用 libgpiod。
在 ti-linux 5.4系列内核下、GPIO "chips"以升序排列/枚举、即44e07,000,4804804c000,481ac000和481ae000、这将导致处理器和设备树(DT)芯片编号与 Linux 下的"gpiochipN"器件相匹配。 例如、CPU 引脚 GPIO1_22会映射到/dev/gpiochip1引脚22、CPU 引脚 GPIO3_15会映射到/dev/gpiochip3引脚15等 使用 ti-Linux 6.6系列内核时、以不同的顺序(4804c000,481481ac000,481ae000和44e07000)探测/枚举 GPIO 器件、从而导致 Linux 下的处理器/DT 编号与编号不匹配、因此 CPU 引脚 GPIO1_22现在映射到/dev/gpiochip0引脚22等 我确实为我想要使用的 GPIO 引脚分配了信号名称、但是、libgpiod v2.x 库中似乎没有方法来确定信号所属的芯片、我不确定是否可以安全地假设新顺序已固定。
如对下列问题有任何意见、将不胜感激:
1) 1)是否有办法使 GPIO 器件按与它们在5.4系列内核下相同的顺序枚举? 处理器引脚(加上器件树名称)和 Linux 芯片器件之间的不匹配可能会导致严重的混淆、 尤其是当器件可以随机顺序枚举时。
2)假设6.6系列内核下 GPIO 器件的枚举可能是随机的、除了检查每个芯片器件的信号名称之外、是否可以确定信号属于哪个芯片?
谢谢
标记
尊敬的 Mark:
由于依赖于特定的 GPIO 模块、gpiochips 在 Linux 内核6.6中以不同的方式进行枚举、这会导致 GPIO 模块上的延迟探测。 由于 gpiochips 是动态枚举的(作为 Linux 内核的性质)、因此无法对它们进行硬编码。
社区中有人在附近找到了一份您可以查看的工作: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1391762/processor-sdk-am335x-porting-gpio-from-sdk7-sysfs-to-sdk9-libgpiod-not-working/5403662#5403662
此致、
Anshu