Olimex Micro A20 Некоторые GPIO не работают на 18.0.06, но работают на 17.0.1 - PullRequest
1 голос
/ 09 октября 2019

Я использую Allwinner A20 SoC на основе Olimex Micro A20 в качестве платы для разработки с openwrt 18.0.6 . Я сталкиваюсь со странной проблемой, что некоторые из GPIO работают отлично, другие будут принимать команды для установки как положенные, так и установки высокого или низкого значения, но физически выход не изменится. У меня есть предыдущее встроенное изображение на основе LEDE17.0.1 , и все эти GPIO работают нормально.

, когда я выдаю cat /sys/kernel/debug/gpio

Это результат

gpiochip0: GPIOs 0-287, parent: platform/1c20800.pinctrl, 1c20800.pinctrl:
 gpio-35  (                    |sysfs               ) in  lo
 gpio-36  (                    |sysfs               ) in  lo
 gpio-40  (                    |ahci-5v             ) out lo
 gpio-41  (                    |usb0-vbus           ) out hi
 gpio-80  (                    |sysfs               ) out lo
 gpio-81  (                    |sysfs               ) out lo
 gpio-82  (                    |sysfs               ) out lo
 gpio-87  (                    |sysfs               ) out lo
 gpio-96  (                    |sysfs               ) in  hi
 gpio-97  (                    |sysfs               ) in  hi
 gpio-98  (                    |sysfs               ) in  hi
 gpio-99  (                    |sysfs               ) in  hi
 gpio-100 (                    |sysfs               ) in  hi
 gpio-101 (                    |sysfs               ) in  hi
 gpio-102 (                    |sysfs               ) in  hi
 gpio-103 (                    |sysfs               ) in  hi
 gpio-104 (                    |sysfs               ) in  hi
 gpio-105 (                    |sysfs               ) in  hi
 gpio-106 (                    |sysfs               ) in  hi
 gpio-107 (                    |sysfs               ) in  hi
 gpio-108 (                    |sysfs               ) in  hi
 gpio-109 (                    |sysfs               ) in  hi
 gpio-110 (                    |sysfs               ) in  hi
 gpio-111 (                    |sysfs               ) in  hi
 gpio-113 (                    |sysfs               ) out hi
 gpio-114 (                    |sysfs               ) out lo
 gpio-115 (                    |sysfs               ) out hi
 gpio-117 (                    |sysfs               ) out lo
 gpio-128 (                    |sysfs               ) out lo
 gpio-129 (                    |sysfs               ) out hi
 gpio-130 (                    |sysfs               ) out lo
 gpio-132 (                    |sysfs               ) out lo
 gpio-133 (                    |sysfs               ) out lo
 gpio-134 (                    |sysfs               ) out lo
 gpio-135 (                    |sysfs               ) out lo
 gpio-136 (                    |sysfs               ) out lo
 gpio-137 (                    |sysfs               ) out lo
 gpio-138 (                    |sysfs               ) out lo
 gpio-139 (                    |sysfs               ) out lo
 gpio-202 (                    |sysfs               ) in  hi
 gpio-203 (                    |sysfs               ) in  hi
 gpio-225 (                    |cd                  ) in  lo IRQ
 gpio-226 (                    |a20-olinuxino-micro:) out lo
 gpio-227 (                    |usb2-vbus           ) out hi
 gpio-230 (                    |usb1-vbus           ) out hi
 gpio-231 (                    |sysfs               ) out lo
 gpio-235 (                    |cd                  ) in  hi IRQ
 gpio-256 (                    |sysfs               ) out hi
 gpio-257 (                    |sysfs               ) out lo
 gpio-258 (                    |sysfs               ) out hi
 gpio-259 (                    |sysfs               ) out hi
 gpio-266 (                    |sysfs               ) out lo
 gpio-267 (                    |sysfs               ) out lo
 gpio-270 (                    |sysfs               ) out hi
 gpio-271 (                    |sysfs               ) out hi
 gpio-273 (                    |sysfs               ) out hi
 gpio-275 (                    |sysfs               ) out hi

В этом случае, например, gpio257 будет работать правильно, в то время как gpio138 будет принимать все команды, но физически вывод будет одинаковым

ls /sys/class/gpio/
export        gpio109/      gpio128/      gpio139/      gpio270/      gpio96/
gpio100/      gpio110/      gpio129/      gpio202/      gpio271/      gpio97/
gpio101/      gpio111/      gpio130/      gpio203/      gpio273/      gpio98/
gpio102/      gpio113/      gpio132/      gpio231/      gpio275/      gpio99/
gpio103/      gpio114/      gpio133/      gpio256/      gpio35/       gpiochip0/
gpio104/      gpio115/      gpio134/      gpio257/      gpio36/       gpiochip413/       
gpio105/      gpio116/      gpio135/      gpio258/      gpio80/       unexport
gpio106/      gpio117/      gpio136/      gpio259/      gpio81/
gpio107/      gpio118/      gpio137/      gpio266/      gpio82/
gpio108/      gpio119/      gpio138/      gpio267/      gpio87/

Как я могу решить эту проблему.

Есть несколько таких GPIO по крайней мере 8 -9, с которыми я столкнулся

Я вижу, что все контакты, имеющие 130 -139 номеров, не будут работать. Те, у кого 250+, будут работать

Ниже приведены выводы, которые меня интересуют, и все выводы в серии 200 работают, как и ожидалось. Те в диапазоне 130-139 не будут работать в новом изображении, но они работали в предыдущем изображении

/bin/echo 0 > /sys/class/gpio/gpio257/value
/bin/echo 0 > /sys/class/gpio/gpio258/value
/bin/echo 0 > /sys/class/gpio/gpio259/value
/bin/echo 0 > /sys/class/gpio/gpio271/value
/bin/echo 0 > /sys/class/gpio/gpio270/value
/bin/echo 0 > /sys/class/gpio/gpio256/value
/bin/echo 0 > /sys/class/gpio/gpio138/value
/bin/echo 0 > /sys/class/gpio/gpio139/value
/bin/echo 0 > /sys/class/gpio/gpio135/value
/bin/echo 0 > /sys/class/gpio/gpio137/value
/bin/echo 0 > /sys/class/gpio/gpio134/value
/bin/echo 0 > /sys/class/gpio/gpio136/value
/bin/echo 0 > /sys/class/gpio/gpio133/value
/bin/echo 0 > /sys/class/gpio/gpio266/value
/bin/echo 0 > /sys/class/gpio/gpio267/value
/bin/echo 0 > /sys/class/gpio/gpio132/value
...