uboot boot select via Button press

main
Links 2022-04-08 20:13:41 +02:00
rodzic 792492dbb6
commit ed4f83a059
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 68FB9F01C0C482FC
7 zmienionych plików z 154 dodań i 47 usunięć

2
.gitignore vendored
Wyświetl plik

@ -1,4 +1,4 @@
userpatches/overlay/extracted/*
userpatches/overlay/boot.scr
userpatches/overlay/boot/boot.scr
build/
uboot_sdcard.bin

Wyświetl plik

@ -69,7 +69,7 @@ git clone https://github.com/armbian/build --depth=1
cp -r userpatches/ build/
cd build
./compile.sh docker BOARD=lime-a33 BRANCH=current RELEASE=buster BUILD_MINIMAL=no BUILD_DESKTOP=yes KERNEL_ONLY=no KERNEL_CONFIGURE=no DESKTOP_ENVIRONMENT=xfce DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base DESKTOP_APPGROUPS_SELECTED="3dsupport browsers" COMPRESS_OUTPUTIMAGE=sha,gpg,img
./compile.sh docker BOARD=lime-a33 BSPFREEZE=yes BRANCH=current RELEASE=buster BUILD_MINIMAL=no BUILD_DESKTOP=yes KERNEL_ONLY=no KERNEL_CONFIGURE=no DESKTOP_ENVIRONMENT=xfce DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base DESKTOP_APPGROUPS_SELECTED="3dsupport browsers" COMPRESS_OUTPUTIMAGE=sha,gpg,img
```
## install on sdcard

54
docs/uboot.md 100644
Wyświetl plik

@ -0,0 +1,54 @@
# uboot default env
```ini
arch=arm
baudrate=115200
board=sunxi
board_name=sunxi
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtypei
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=fel mmc_auto usb0 pxe dhcp
bootcmd=run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdt;
bootcmd_fel=if test -n ${fel_booted} && test -n ${fel_scriptaddr}; then echo '(FEL boot)'; source ${fel_scriptaddr}; fi
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootcmd_mmc_auto=if test ${mmc_bootdev} -eq 1; then run bootcmd_mmc1; run bootcmd_mmc0; elif test ${mmc_bootdev} -eq 0; then run bootci
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_usb0=setenv devnum 0; run usb_boot
bootm_size=0xa000000
console=ttyS0,115200
cpu=armv7
dfu_alt_info_ram=kernel ram 0x42000000 0x1000000;fdt ram 0x43000000 0x100000;ramdisk ram 0x43300000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethaddr=de:ad:be:ef:00:01
fdt_addr_r=0x43000000
fdtcontroladdr=7af39548
fdtfile=sun8i-r16-x6100.dtb
kernel_addr_r=0x42000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
mmc_bootdev=1
preboot=usb start
pxefile_addr_r=0x43200000
ramdisk_addr_r=0x43300000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlin;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpare
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boarde
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}exti
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then eche
scriptaddr=0x43100000
serial#=16554153070f725b
soc=sunxi
stderr=serial
stdin=serial,usbkbd
stdout=serial
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
usbnet_devaddr=de:ad:be:ef:00:01
```

Wyświetl plik

@ -23,16 +23,17 @@ Main() {
apt-get -y remove chrony
systemctl enable systemd-timesyncd.service
touch /root/.no_rootfs_resize
#touch /root/.no_rootfs_resize
apt-get install -y wsjtx tightvncserver gdb-minimal gdbserver strace e2fsprogs xfce4-battery-plugin libqt5sql5-sqlite
apt-get install -y wsjtx tightvncserver gdb-minimal gdbserver strace e2fsprogs xfce4-battery-plugin xfce4-power-manager libqt5sql5-sqlite
apt-get install -y nano htop curl ncdu gpg dtrx localepurge mtr-tiny screen iotop git wget net-tools etckeeper sudo file bash-completion psmisc dnsutils software-properties-common apt-transport-https xauth aptitude fzf
cp /tmp/overlay/extracted/sun8i-r16-x6100.dtb /boot/
cp /tmp/overlay/extracted/sun8i-r16-x6100.dts /boot/
cp /tmp/overlay/extracted/zImage /boot/zImage_org
cp /tmp/overlay/boot.cmd /boot/boot.cmd
mv /boot/boot.cmd /boot/boot.cmd.armbian
cp /tmp/overlay/boot/* /boot/
mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

Wyświetl plik

@ -1,42 +0,0 @@
setenv verbosity "1"
setenv devnum "0"
setenv rootdev "/dev/mmcblk${devnum}p1"
setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x49000000
setenv ramdisk_addr_r 0x50000000
# Print boot source
itest.b *0x28 == 0x00 && echo "U-boot loaded from SD"
itest.b *0x28 == 0x02 && echo "U-boot loaded from eMMC or secondary SD"
itest.b *0x28 == 0x03 && echo "U-boot loaded from SPI"
echo "devnum: ${devnum}"
if test "${devtype}" = "mmc"; then
part uuid mmc ${devnum}:1 partuuid;
setenv devnum ${mmc_bootdev}
setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
fi
echo "Boot script loaded from ${devtype}"
echo "rootdev: ${rootdev}"
echo "devnum: ${devnum}"
echo "mmc_bootdev: ${mmc_bootdev}"
echo "prefix: ${prefix}"
echo "------------ x6100 boot script ------------"
setenv bootargs console=ttyS0,115200 root=${rootdev} rootwait panic=10 fbcon=rotate:3 video=VGA:480x800 cgroup_enable=memory swapaccount=1 loglevel=${verbosity}
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}/zImage_org
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}/uInitrd
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}/sun8i-r16-x6100.dtb
fdt addr ${fdt_addr_r}
fdt resize 65536
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
# Recompile with:
# mkimage -C none -A arm -T script -d boot.cmd boot.scr

Wyświetl plik

@ -0,0 +1,90 @@
setenv verbosity "1"
setenv devnum "0"
setenv rootdev "/dev/mmcblk${devnum}p1"
setenv nosdboot "0"
setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x49000000
setenv ramdisk_addr_r 0x50000000
setenv consoleargs ""
setenv console "both"
setenv earlycon "on"
setenv bootlogo "false"
setenv docker_optimizations "on"
setenv fdtfile "sun8i-r16-x6100.dtb"
setenv luInitrd "uInitrd"
setenv bootargs_extra ""
setenv lkernel "zImage"
# Print boot source
itest.b *0x28 == 0x00 && echo "U-boot loaded from SD"
itest.b *0x28 == 0x02 && echo "U-boot loaded from eMMC or secondary SD"
itest.b *0x28 == 0x03 && echo "U-boot loaded from SPI"
if test "${devtype}" = "mmc"; then
part uuid mmc ${devnum}:1 partuuid;
setenv devnum ${mmc_bootdev}
setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
fi
echo "Boot script loaded from ${devtype}"
echo "rootdev: ${rootdev}"
echo "devnum: ${devnum}"
echo "mmc_bootdev: ${mmc_bootdev}"
echo "prefix: ${prefix}"
if test -e ${devtype} ${devnum} ${prefix}/x6100Env.txt; then
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}/x6100Env.txt
env import -t ${kernel_addr_r} ${filesize}
fi
#set matrix row
gpio clear PG6
if gpio input PE16 ; then
echo "------------- BUTTON 1 -------------"
run BUTTON_1
elif gpio input PE17 ; then
echo "------------- BUTTON 2 -------------"
run BUTTON_2
elif gpio input PE11 ; then
echo "------------- BUTTON 3 -------------"
run BUTTON_3
else
echo "------------- NO BUTTON -------------"
run BUTTON_NONE
fi
#reset matrix
gpio input PG6
# enable key LEDs to show that the key can be released
gpio set 143
if test "${nosdboot}" = "0" ; then
echo "------------ x6100 boot script ------------"
if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=ttyS0,115200 console=tty1"; fi
if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; fi
if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi
if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.armbian ${consoleargs}"; fi
setenv bootargs "root=${rootdev} rootwait ${consoleargs} net.ifnames=0 panic=10 fbcon=rotate:3 video=VGA:480x800 ubootpart=${partuuid} ubootsource=${devtype} loglevel=${verbosity} ${bootargs_extra}"
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}/${lkernel}
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}/${luInitrd}
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}/${fdtfile}
fdt addr ${fdt_addr_r}
fdt resize 65536
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
fi
# Recompile with:
# mkimage -C none -A arm -T script -d boot.cmd boot.scr

Wyświetl plik

@ -0,0 +1,4 @@
BUTTON_NONE=setenv nosdboot 1
BUTTON_1=setenv lkernel zImage_org; setenv bootargs_extra x6100_app=1 lightdm_screen=0 lightdm_vnc=1
BUTTON_2=setenv lkernel zImage_org; setenv bootargs_extra x6100_app=0 lightdm_screen=1 lightdm_vnc=1
BUTTON_3=setenv lkernel zImage; setenv bootargs_extra x6100_app=0 lightdm_screen=0 lightdm_vnc=1