armbian_build/config/bootscripts/boot-qrb2210.cmd
SuperKali 31f8803b18
Some checks failed
Data: Sync board list / Send dispatch (push) Has been cancelled
Infrastructure: Dispatch to fork / 📢 Run repository dispatch on fork (push) Has been cancelled
Infrastructure: Mirror to Codeberg / codeberg (push) Has been cancelled
Maintenance: Announce merge / announcepush (push) Has been cancelled
Maintenance: Security scan / Scorecards analysis (push) Has been cancelled
Add support for Arduino UNO Q (Qualcomm QRB2210) (#9623)
* add support for arduino-uno-q

* arduino-uno-q: fix boot with boot.scr and correct memory addresses

ABL overwrites kernel_addr_r/fdt_addr_r/ramdisk_addr_r at runtime,
causing memory overlap that corrupts the kernel Image header.

Switch from extlinux to boot.scr which sets correct addresses in the
0xC0000000 RAM bank before loading kernel, initrd and dtb.
U-Boot env loads boot.scr from partition 0x43 (GPT 67 "efi") with
sysboot as fallback.

* arduino-uno-q: update board and family config

- Use boot.scr instead of extlinux (BOOTSCRIPT/BOOTENV_FILE in family)
- Add SERIALCON=ttyMSM0 for serial console
- BOOTSIZE=512 to fit kernel + initrd
- Remove BOARD_FIRMWARE_INSTALL="-full", copy only needed firmware
- Add WiFi ath10k firmware copy
- Add ADB daemon with Armbian branding
- Add first-boot rootfs resize service
- Update kernel to 6.19.0 from qcom-v6.19.0-unoq branch

* arduino-uno-q: fix image-output extension

Use dd with sector offsets instead of loop device partitions to extract
boot and rootfs images. The previous approach failed because the build
framework releases the loop device before the extension runs.

* arduino-uno-q: add first-boot rootfs resize for eMMC

Add systemd service that expands the rootfs partition to fill the entire
eMMC on first boot using sgdisk. Removes the empty userdata partition
and recreates rootfs with all remaining space.

* arduino-uno-q: update ath10k WiFi firmware to upstream

Update board-2.bin from linux-firmware (ath-20260204) with support for
additional board IDs.

* arduino-uno-q: update kernel config for 6.19

* arduino-uno-q: revert board-2.bin to original version

Restore the ath10k board-2.bin firmware to the version provided in the
original board bring-up, as the upstream version has not been validated
on this hardware.

* arduino-uno-q: move flash binaries to armbian/qcombin

Move EDL flash binaries (ABL, XBL, TrustZone, GPT tables, etc.) from
packages/blobs/arduino/flash/ to the external armbian/qcombin repository
under the Agatti folder, following the same pattern as rkbin for
Rockchip and mtkbin for MediaTek.

Add qcombin.sh extension to fetch binaries during build. Update
image-output-arduino.sh to source flash files from qcombin cache and
derive U-Boot package path from BRANCH/BOARD variables.

* arduino-uno-q: add BOARD_VENDOR

* arduino-uno-q: update qcombin path to Agatti/arduino-uno-q

* arduino-uno-q: move firmware to armbian/firmware, rename boot script

Move firmware blobs to armbian/firmware repository (armbian/firmware#123)
and remove manual firmware copies from post_family_tweaks. Firmware is
now installed via the armbian-firmware package.

Rename boot-qcom to boot-qrb2210 to be family-specific.

* arduino-uno-q: include prog_firehose_ddr.elf from Agatti root

* arduino-uno-q: add qbootctl to prevent fastboot fallback

---------

Co-authored-by: Hsun Lai <i@chainsx.cn>
2026-04-08 10:44:14 +02:00

76 lines
3.1 KiB
Batchfile

# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#
# Set load addresses for Qualcomm QRB2210
# These must be set explicitly because ABL overwrites defaults at runtime
setenv kernel_addr_r "0xc0000000"
setenv fdt_addr_r "0xc3000000"
setenv ramdisk_addr_r "0xc4000000"
setenv load_addr "0xd4000000"
setenv overlay_error "false"
# Qualcomm eMMC device and boot partition (0x43 = GPT partition 67 "efi")
setenv devtype "mmc"
setenv devnum "0"
test -n "${distro_bootpart}" || setenv distro_bootpart "43"
# default values
setenv rootdev "/dev/mmcblk0p1"
setenv verbosity "1"
setenv console "serial"
setenv bootlogo "false"
setenv rootfstype "ext4"
setenv docker_optimizations "on"
echo "Boot script loaded from ${devtype} ${devnum}:${distro_bootpart}"
if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}armbianEnv.txt; then
load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}armbianEnv.txt
env import -t ${load_addr} ${filesize}
fi
if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyMSM0,115200n8 ${consoleargs}"; fi
if test "${bootlogo}" = "true"; then
setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}"
else
setenv consoleargs "splash=verbose ${consoleargs}"
fi
# get PARTUUID of partition the boot script was loaded from
if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:${distro_bootpart} partuuid; fi
setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} clk_ignore_unused pd_ignore_unused audit=0 deferred_probe_timeout=30 ${extraargs} ${extraboardargs}"
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"; fi
load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${prefix}Image
load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
fdt addr ${fdt_addr_r}
fdt resize 65536
for overlay_file in ${overlays}; do
if load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}dtb/qcom/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
fdt apply ${load_addr} || setenv overlay_error "true"
fi
done
for overlay_file in ${user_overlays}; do
if load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
echo "Applying user provided DT overlay ${overlay_file}.dtbo"
fdt apply ${load_addr} || setenv overlay_error "true"
fi
done
if test "${overlay_error}" = "true"; then
echo "Error applying DT overlays, restoring original DT"
load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
fi
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr