Debian 启用BeagleBone上的所有GPIO引脚,包括eMMC引脚

Debian 启用BeagleBone上的所有GPIO引脚,包括eMMC引脚,debian,beagleboneblack,gpio,beagleboard,Debian,Beagleboneblack,Gpio,Beagleboard,我在比格蓝绿色上运行Debian Jessie IOT图像。 我喜欢使用最大GPIOs,这是根据文档应该给我65 GPIOs。 除与eMMC共享的管脚外的所有工作: P8_3-6,P8_20-25 所以这是可行的: config pin-a P8_7 in+ bash: /sys/devices/platform/ocp/ocp*P8_22_pinmux/state: No such file or directory Cannot write pinmux file: /sys/devic

我在比格蓝绿色上运行Debian Jessie IOT图像。 我喜欢使用最大GPIOs,这是根据文档应该给我65 GPIOs。

除与eMMC共享的管脚外的所有工作: P8_3-6,P8_20-25

所以这是可行的:

config pin-a P8_7 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
这不起作用:

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
通用角应出口所有引脚 在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
我正在从sd卡引导BeagleBone,因此不必使用eMMC


怎么了?

这个目录,我相信您熟悉这个程序,/boot中有一个名为uEnv.txt的文件

有一种更老的调整设置的方法,它可能仍然适用。此注释应用程序将eMMC部件注释为unev.txt文件,应允许您使用这些特定管脚

现在请听

我以前做过这件事,一旦我取消了注释,就无法从我的eMMC启动,删除了#标记,即eMMC。我知道你正在使用SD卡。我可以很快测试,然后再给你回复

我只是想让你们知道这是存在的,新的Debian映像中的uboot覆盖就是现在所做的。所以,我很确定我们不会在特定的Debian发行版上使用设备树覆盖。我想这一切都取决于你有什么内核和你在你的机器上启动了什么映像

嗯…我现在已经插入了我的机器,在我更改了/boot目录文件uEnv.txt以取消对文件中eMMC部分的注释后,我将要测试SD卡支持。我在我的机器上使用Linux beaglebone 4.4.91-ti-r136与Adafruit_BBIO的PWM兼容

在该文件中,即/boot目录中的uEnv.txt文件中,我必须取消对该部分的注释:禁用\u uboot\u overlay\u emmc=1

我要重新启动了

好的……我可以通过取消对uEnv.txt文件的disable_uboot_overlay_emmc=1部分的注释来启动

这将打开销。我会很快测试它

赛斯

p.S.是显示可用引脚的良好工具


我发现我一直在努力。。。 以下是如何使用所有可用的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

就这样

最新图片,uname:4.9.78-ti-r94,忽略所有覆盖内容

作为一个全新的图像,我启用了轨道上的所有GPIO: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
\uboot\u overlay\u addr2=/lib/firmware/.dtbo
#uboot\u overlay\u addr3=/lib/firmware/.dtbo
###
###额外定制披风
#uboot\u overlay\u addr4=/lib/firmware/.dtbo
#uboot\u overlay\u addr5=/lib/firmware/.dtbo
#uboot\u overlay\u addr6=/lib/firmware/.dtbo
#uboot\u overlay\u addr7=/lib/firmware/.dtbo
###
###定制斗篷
#dtb_overlay=/lib/firmware/.dtbo
###
###禁用虚拟CAPE的自动加载(emmc/视频/无线/adc)
禁用\u uboot\u overlay\u emmc=1
禁用\u uboot\u overlay\u video=1
禁用\u uboot\u overlay\u audio=1
#禁用\u uboot\u overlay\u wireless=1
#禁用\u uboot\u overlay\u adc=1
###
###普鲁士期权
###pru_rproc(4.4.x-ti内核)
###mco mco
#uboot\u overlay\u pru=/lib/firmware/AM335X-pru-RPROC-4-4-TI-00A0.dtbo
###pru_uio(4.4.x-ti和主线/骨内核)
#uboot\u overlay\u pru=/lib/firmware/AM335X-pru-UIO-00A0.dtbo
###
###Cape Universal Enable
启用_uboot_cape_universal=1
###
###调试:禁用Cape的uboot自动加载
#禁用\u uboot\u overlay\u addr0=1
#禁用\u uboot\u overlay\u addr1=1
#禁用\u uboot\u overlay\u addr2=1
#禁用\u uboot\u overlay\u addr3=1
###
###U-Boot fdt调整。。。(60000=384KB)
#uboot\u fdt\u缓冲区=0x60000
###U-Boot覆盖层###
cmdline=coherent\u pool=1M net.ifnames=0安静omap\u wdt.nowayout=0
#如果edid real失败,请取消注释下一行:
#cmdline=coherent_pool=1M网络。ifnames=0安静视频=HDMI-A-1:1024x768@60e
##示例v3.8.x
#cape\u disable=capemgr.disable\u零件号=
#cape\u enable=capemgr.enable\u零件号=
##示例v4.1.x
#cape\u disable=骨骼capemgr.disable\u零件号=
#cape\u enable=bone\u capemgr.enable\u partno=
##启用通用eMMC闪光器:
##确保已安装以下工具:dosftools 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并正确对齐pwm引脚

#!/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
#/bin/bash
ERRORF=/tmp/pwmerrors.txt
PWMF=/tmp/pwmsetup
[[-f$PWMF]]&退出
回声>$PWMF
同步
pushd/sys/class/pwm
idx=0
pwms=(20000)
dutys=(0 0 0)
世博会=(011010)
右=(48302200 48302200 48300100 48300200 48300200 48304200 48304200)
对于P9.14 P9.16 P9.42 P9.21 P9.22 P8.13 P8.19中的p;做
配置引脚$p pwm
美元链接(ls-l|awk'{print$11}');做
如果[[$link=~${right[$idx]}]];然后
#echo$链接
#echo“用于$p的sys文件夹是$(echo$link | awk-F'/''{print$NF}')”
sysfld=$(echo$link | awk-F'/''{print$NF}')
pushd$sysfld

echo“>”$(pwd)导出:${expo[$idx]}”只需在/boot/uEnv.txt行下取消注释并重新启动

#disable_uboot_overlay_emmc=1


这将禁用emmc并释放分配给emmc的所有管脚。请注意,您已从SD卡运行beaglebone。

检查设备树中emmc使用的管脚分配。是否已禁用这些分配?谢谢Seth…我在uEnv.txt中尝试了各种引导选项,但均无效。请发布完整的uEnv.txt。谢谢凯…给我几天或者明天。我