Я пытался заставить GPIO-Poweroff отключить блок питания платы с помощью GPIO, но, что бы я ни пытался, это никогда не работало. Если я вручную переключаю контакт GPIO, устройство немедленно выключается. Если я возьму Raspbian-Lite и добавлю следующую строку в config.txt, это сработает. Но U-Boot, похоже, игнорирует это. Я использую Raspbian Lite 2017-07-5 с последней основной версией U-Boot: git://git.denx.de/u-boot.git, скомпилированной с помощью rpi_defconfig.
dtoverlay=gpio-poweroff,gpiopin=6,active_low=1
С U-Boot Raspberry Pi загружается и работает нормально, он даже выключается, но никогда не переключает GPIO6. Это оставляет блок питания включенным, и единственный способ исправить это — удерживать кнопку питания не менее 5 секунд. Я знаю, что dt-blob.bin загружается и применяется, так как на плате есть камера, которая работает только с правильным dt-blob.bin.
На данный момент у меня нет идей. Я пытался:
- Обновление ядра Linux с помощью rpi-update
- Декомпиляция gpio-poweroff.dtbo и dt-blob.bin. Изменение 0x1a на 0x06 и 0x0 на 0x1 внутри gpio -poweroff.dtbo, объединение их вместе, и это не работает.
- Вручную выполняя вышеперечисленное и переплетая декомпилированный код.
- Используя
fdt addr
иfdt apply
внутри boot.scr, чтобы применить его вручную, это не сработало, потому что fdt_overlay_apply FDT_ERR_NOSPACE, и я не мог пройти мимо этого. - Клонирую linux и пытаюсь сделать dtsb, target не существует.
- Клонирование linux/arch/arm/boot/dts, написание MakeFile и компиляция их с моими изменениями приводит к загрузке U-Boot, загрузке Raspbian, но gpio-poweroff не работает.
- Другие попытки, о которых едва ли стоит упоминать.
Ничто из того, что я пытаюсь, кажется, не работает, и я не уверен, куда двигаться дальше.
Для справки, вот некоторые из используемых файлов:
загрузка.cmd:
#Setting default bootargs
setenv original_bootargs console=ttyS0 console=tty1 rootfstype=ext4 fsck.repair=yes hdmi.audio=0 disp.screen0_output_mode=1920x1080p60:1280x720p60:800x600p60:EDID rootwait panic=10 # console MUST be ttyS0 or it WILL NOT BOOT!
# Identify if we are using partition 2 or 3
if fatload mmc 0:1 ${loadaddr} swap; then echo "Using Partition 3"; setenv partition 3; else echo "Using Partition 2"; setenv partition 2; fi
# Check for recovery
if fatload mmc 0:1 ${loadaddr} recovery; then echo "Using Recovery Partition"; setenv partition 4; fi
#if gpio input 32 || fatload mmc 0:1 ${loadaddr} recovery; then echo "Using Recovery Partition"; setenv partition 4; fi
# Create an empty file to detect boot failures
fatwrite mmc 0:1 ${kernel_addr_r} recovery 0
# Set bootargs
setenv bootargs "${original_bootargs} root=/dev/mmcblk0p${partition}"
# Load the existing Linux kernel into RAM
echo Loading partition ${partition}
ext4load mmc 0:${partition} ${kernel_addr_r} kernel.img
# Boot the kernel we have just loaded
bootz ${kernel_addr_r} - ${fdt_addr}
Не знаю почему, но он загружается с красным и синим местами и с низким разрешением. Скомпилировано с помощью mkimage -A arm -O linux -T script -C none -a 0x00000000 -e 0x00000000 -n "Boot Script" -d boot.cmd boot.scr
конфиг.txt:
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4
# uncomment for composite PAL
#sdtv_mode=2
#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi
# Additional overlays and parameters are documented /boot/overlays/README
# Enable audio (loads snd_bcm2835)
#dtparam=audio=on
gpu_mem=128
start_x=1
dtoverlay=gpio-poweroff,gpiopin=6,active_low=1
dtdebug=1
bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720 bcm2708_fb.fbswap=1
. Измените ширину и высоту на желаемое разрешение. - person Matthew   schedule 20.08.2017