Включите все контакты GPIO на BeagleBone, включая контакты eMMC.

Я запускаю образ Debian Jessie IOT на BeagleBone Green. Мне нравится использовать максимум GPIO, который, согласно документации, должен дать мне 65 GPIO. GPIO на BeagleBone Green

Все работает, кроме контактов, которые используются совместно с eMMC: P8_3-6, P8_20-25.

Итак, это работает:

config-pin -a P8_7 in+

Это не работает:

config-pin -a P8_22 in+

bash: /sys/devices/platform/ocp/ocp*P8_22_pinmux/state: No such file or directory 
Cannot write pinmux file: /sys/devices/platform/ocp/ocp*P8_22_pinmux/state

Немного информации.....

root@beaglebone:~# cat /sys/devices/platform/bone_capemgr/slots
0: PF----  -1
1: PF----  -1
2: PF----  -1
3: PF----  -1
4: P-O-L-   0 Override Board Name,00A0,Override Manuf,cape-universala

cape-universala должен экспортировать все контакты в dmesg....

 [    4.002843] pinctrl-single 44e10800.pinmux: pin 44e10814.0 already requested by 481d8000.mmc; cannot claim for ocp:P8_22_pinmux
 [    4.014528] pinctrl-single 44e10800.pinmux: pin-5 (ocp:P8_22_pinmux) status -22
 [    4.021901] pinctrl-single 44e10800.pinmux: could not request pin 5 (44e10814.0) from group pinmux_P8_22_default_pin  on device pinctrl-single
 [    4.034756] bone-pinmux-helper ocp:P8_22_pinmux: Error applying setting, reverse things back
 [    4.089416] pinctrl-single 44e10800.pinmux: pin 44e10814.0 already requested by 481d8000.mmc; cannot claim for ocp:P8_22_pinmux
 [    4.101069] pinctrl-single 44e10800.pinmux: pin-5 (ocp:P8_22_pinmux) status -22

Я не могу отключить eMMC, это /boot/uEnv.txt

  cmdline=coherent_pool=1M net.ifnames=0 quiet cape_enable=bone_capemgr.enable_partno=cape-universala cape_disable=bone_capemgr.disable_partno=BB-BONE-EMMC-2G

Я загружаю BeagleBone с SD-карты, поэтому eMMC не нужно использовать.

что случилось?


person deeler    schedule 04.12.2017    source источник
comment
Проверьте свое дерево устройств на наличие назначений контактов, которые использует eMMC. Вы отключили эти задания?   -  person sawdust    schedule 05.12.2017


Ответы (4)


Каталог, я уверен, что вы знакомы с этой процедурой, в /boot есть файл с именем uEnv.txt.

Был старый способ настройки параметров, и он все еще может применяться. Это приложение комментирования раскомментирования части eMMC в файле uEnv.txt должно позволить вам использовать эти конкретные контакты для использования.

А теперь...пожалуйста, послушайте.

Я делал это раньше и не мог загрузиться с моего eMMC после того, как раскомментировал, удалил метку #, файл eMMC. Я знаю, что вы используете SD-карту. Я могу проверить это очень быстро и вернуться к вам.

Я просто хотел, чтобы вы знали, что это существует, и что оверлеи uboot в новых образах Debian — это то, что делается сейчас. Итак, я почти уверен, что мы не используем оверлеи дерева устройств в определенных дистрибутивах Debian. Я думаю, все зависит от того, какое у вас ядро ​​и какой образ вы загрузили на своей машине.

Хм... Сейчас моя машина подключена, и я собираюсь проверить поддержку SD-карты после того, как я изменил файл каталога /boot uEnv.txt, чтобы раскомментировать часть eMMC в файле. Я использую Linux beaglebone 4.4.91-ti-r136 на своей машине для совместимости с PWM Adafruit_BBIO.

В этом файле, файле uEnv.txt в каталоге /boot, мне пришлось раскомментировать этот раздел: disable_uboot_overlay_emmc=1.

Я собираюсь перезагрузиться.

Хорошо... Я смог загрузиться, раскомментировав часть disable_uboot_overlay_emmc=1 в файле uEnv.txt.

Это должно открыть штифты. Я буду тестировать это очень быстро.

Сет

P.S. https://github.com/mvduin/bbb-pin-utils — хороший утилита для отображения доступных пинов.

Это фотография моей распечатки с использованием этой утилиты для булавок.

person De Funct    schedule 05.12.2017
comment
спасибо Сет ... Я пробовал разные варианты загрузки в uEnv.txt, но ни один из них не работает. Можете ли вы опубликовать свой полный uEnv.txt, пожалуйста? Спасибо - person deeler; 05.12.2017
comment
Ладно... дай мне пару дней или до завтра. Прошу прощения за поздний ответ. Сет - person De Funct; 07.12.2017
comment
Привет... чертов сайт говорит, что я больше не могу публиковать (слишком много плохих комментариев или что-то в этом роде). Извиняюсь. Сет - person De Funct; 08.12.2017

Оказывается, я очень старался... Вот как можно использовать все доступные контакты GPIO:

  root@beaglebone:~# more /boot/uEnv.txt | grep -v '#'
  uname_r=4.4.91-ti-r133
  dtb=am335x-boneblack-overlay.dtb
  cmdline=coherent_pool=1M net.ifnames=0 quiet

Это оно!

person deeler    schedule 07.12.2017
comment
Кроме того, мне нужно было получить это: apt install bb-cape-overlays - person deeler; 27.12.2017

Последнее изображение, uname: 4.9.78-ti-r94 и игнорировать все оверлеи

О, новый новый образ, я включил все GPIO на Rail: P8 и P9, просто изменив файл uEnv. Смотрите комментарии #mco. Это единственные изменения

#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=/lib/firmware/<file4>.dtbo
#uboot_overlay_addr5=/lib/firmware/<file5>.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
###
###Custom Cape
#dtb_overlay=/lib/firmware/<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
disable_uboot_overlay_emmc=1
disable_uboot_overlay_video=1
disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###PRUSS OPTIONS
###pru_rproc (4.4.x-ti kernel)
### mco-mco

# uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-4-TI-00A0.dtbo

###pru_uio (4.4.x-ti & mainline/bone kernel)
#uboot_overlay_pru=/lib/firmware/AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

cmdline=coherent_pool=1M net.ifnames=0 quiet omap_wdt.nowayout=0

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 quiet video=HDMI-A-1:1024x768@60e

##Example v3.8.x
#cape_disable=capemgr.disable_partno=
#cape_enable=capemgr.enable_partno=

##Example v4.1.x
#cape_disable=bone_capemgr.disable_partno=
#cape_enable=bone_capemgr.enable_partno=

##enable Generic eMMC Flasher:
##make sure, these tools are installed: dosfstools rsync
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

# mco-mco
### optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
### optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN

#dtb=am335x-boneblack-emmc-overlay.dtb

Затем я выполняю сценарий при загрузке, чтобы «разоблачить» системные файлы pwm, которые могут меняться между перезагрузками. Этот скрипт генерирует /tmp/gpiossetup и правильно выравнивает выводы ШИМ.

#!/bin/bash
ERRORF=/tmp/pwmerrors.txt
PWMF=/tmp/pwmsetup
[[ -f $PWMF ]] && exit
echo > $PWMF
sync
pushd /sys/class/pwm
idx=0
pwms=(20000     20000    20000    20000    20000    20000    20000)
dutys=( 0       0        0        0        0        0        0)
expo=(  0       1        0        1        0        1        0)
right=(48302200 48302200 48300100 48300200 48300200 48304200 48304200)
for p in P9.14  P9.16    P9.42    P9.21    P9.22    P8.13    P8.19;do
    config-pin $p pwm
    for link in $(ls -l | awk '{print $11}');do
        if [[ $link =~ ${right[$idx]} ]];then
            #echo $link
            #echo "sys folder for $p is $(echo $link | awk -F '/' '{print $NF}')"
            sysfld=$(echo $link | awk -F '/' '{print $NF}')
            pushd $sysfld
                echo ">"$(pwd)   exporting: ${expo[$idx]}"<"
                ex=${expo[$idx]}
                echo $ex > unexport
        sync
                echo $ex > export
                if [[ -d "pwm$ex" ]];then
                    echo $(pwd) $p  $ex >> $PWMF
                    echo ${pwms[$idx]} > "pwm$ex/period"
                    echo ${dutys[$idx]} > "pwm$ex/duty_cycle"
                    echo "1" > "pwm${ex}/enable"
                    #echo $(pwd)/pwm$ex/
                else
                    echo "? cannot export ($pwd)" >> $ERRORF
                fi
            popd
        fi
        sleep 0.2
    done
    idx=$((idx+1))
    sleep 0.2
done
popd
person user2195463    schedule 25.05.2018

Просто раскомментируйте строку ниже в /boot/uEnv.txt и перезагрузитесь.

#disable_uboot_overlay_emmc=1

to

disable_uboot_overlay_emmc=1

Это отключит emmc и освободит все контакты, выделенные для emmc. Обратите внимание, что вы запустили beaglebone с SD-карты.

person AvadhanaSolutions    schedule 07.04.2019