gsus
Пункты: 217
Регистрация: 01.09.2020
Здравствуйте.
На плате SK-iMX6S-SODIMM пытаюсь изменить состояние выводов GPIO2_IO16 и GPIO3_IO27.
Делаю так (для GPIO3_IO27):
Код echo 91 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio91/direction
echo 1 > /sys/class/gpio/gpio91/value
Всё работает.
Для GPIO2_IO16 - аналогично, с заменой 91 на 48.
Не работает.
Вопрос: есть какие-то тонкости с выводом GPIO2_IO16?
В документации оба - GPIO3_IO27 и GPIO2_IO16 помечены как GPIO по умолчанию.
sasamy
Пункты: 83540
Регистрация: 14.08.2009
Цитата
Делаю так (для GPIO3_IO27):
echo 91 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio91/direction
echo 1 > /sys/class/gpio/gpio91/value
Всё работает.
Для GPIO2_IO16 - аналогично, с заменой 91 на 48.
Не работает.
gpio2 16 свободен и должен работать, наоборот gpio3 27 используется для тачскрина. Какая версия buildroot и ядра у вас используется ? может на gpio не переключен пин. Может еще ошиблись с выводом и не на том пине смотрите ?
gsus
Пункты: 217
Регистрация: 01.09.2020
Для сборки использовалась виртуальная машина buildroot-2014.08-sk-3.10.17. Насколько я понимаю, buildroot - 2014-08, ядро - 3.10.17.
Смотрю на выводах 30 (GPIO2_IO16) и 32 (GPIO3_IO27).
sasamy
Пункты: 83540
Регистрация: 14.08.2009
Цитата Для сборки использовалась виртуальная машина buildroot-2014.08-sk-3.10.17. Насколько я понимаю, buildroot - 2014-08, ядро - 3.10.17.
Смотрю на выводах 30 (GPIO2_IO16) и 32 (GPIO3_IO27).
проверил у себя на штатной MB
http://www.starterkit.ru/html/index.php?name=shop&op=view&id=101
разъем Х9, пин 3 "GPIO2_16" - все работает как надо, в ядре ничего не менял - собрал дефолтный минимальный конфиг
# echo 48 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio48/direction
# echo 1 > /sys/class/gpio/gpio48/value
# echo 0 > /sys/class/gpio/gpio48/value
вы свою плату выбрали в меню загрузчика в buildroot ?
gsus
Пункты: 217
Регистрация: 01.09.2020
Я попробовал собрать минимальную конфигурацию, и у меня тоже GPIO2_IO16 работает (правда, не работает GPIO3_IO27).
Видимо, коллеги, делавшие сборку, что-то меняли в конфигурации оборудования.
Подскажите, пожалуйста, можно ли на уже имеющейся сборке (т.е. не пересобирая ОС) сконфигурировать GPIO2_IO16, чтобы он работал как GPIO?
sasamy
Пункты: 83540
Регистрация: 14.08.2009
Цитата
Видимо, коллеги, делавшие сборку, что-то меняли в конфигурации оборудования.
Подскажите, пожалуйста, можно ли на уже имеющейся сборке (т.е. не пересобирая ОС) сконфигурировать GPIO2_IO16, чтобы он работал как GPIO?
если вам не важно что и для чего меняли коллеги вы можете изменить DTS
buildroot-2014.08-sk/output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi
пересобрать ядро и закинуть на плату свой dtb из
buildroot-2014.08-sk/output/images/imx6dl-sodimm.dtb
ничего больше не меняя
gsus
Пункты: 217
Регистрация: 01.09.2020
sasamy, а нельзя ли поменять только dts, перекомпилировать его с помощью dtc и обновить соответствующий dtb в rootfs, не пересобирая всё ядро?
Я понимаю, что вопрос, наверное, идиотский, но есть вероятность, что добыть нужный .config не удастся. А если я начну делать его с нуля (ну, с imx6sk_min_defconfig), то подобных идиотских вопросов будет слишком много :)
sasamy
Пункты: 83540
Регистрация: 14.08.2009
Цитата а нельзя ли поменять только dts, перекомпилировать его с помощью dtc и обновить соответствующий dtb в rootfs, не пересобирая всё ядро?
я вам об этом и написал
Цитата
А если я начну делать его с нуля (ну, с imx6sk_min_defconfig), то подобных идиотских вопросов будет слишком много :)
так вы уже сделали это
Цитата
Я попробовал собрать минимальную конфигурацию, и у меня тоже GPIO2_IO16 работает (правда, не работает GPIO3_IO27).
поправьте после этого что вам нужно и запустите
./kernel_rebuild.sh
пересоберется только device tree и он не зависит от конфига ядра. В buildroot пересобрать проще.
gsus
Пункты: 217
Регистрация: 01.09.2020
Всё получилось.
Спасибо за помощь!