Я использую 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