From c382c3862bb3e4e6874c837fb2a090532d32a569 Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@freedombone.net> Date: Fri, 7 Dec 2018 18:46:22 +0000 Subject: [PATCH] Preparation for possible future rockchip images --- src/freedombone-image-hardware-setup | 67 ++++++++++++++++++++++++++++ src/freedombone-image-make | 15 ++++++- src/freedombone-image-makefile | 8 ++++ 3 files changed, 89 insertions(+), 1 deletion(-) diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup index a594cd1de..1b1dd6eaa 100755 --- a/src/freedombone-image-hardware-setup +++ b/src/freedombone-image-hardware-setup @@ -243,6 +243,69 @@ setup_flash_kernel() { $INSTALL_PACKAGES flash-kernel } +rockchip_setup_boot() { + dtb="$1" + rockchip_root_device='mmcblk0p2' + if [ "$2" ]; then + rockchip_root_device="$2" + fi + + # Setup boot.cmd + if grep -q btrfs /etc/fstab ; then + fstype=btrfs + else + fstype=ext4 + fi + # shellcheck disable=SC2012,SC2086 + kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4) + version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/') + initRd=initrd.img-$version + vmlinuz=vmlinuz-$version + + # Create boot.cmd + cat >> /boot/boot.cmd <<EOF +setenv mmcdev 0 +setenv mmcpart 1 + +setenv mmcroot /dev/${rockchip_root_device} ro +setenv mmcrootfstype $fstype rootwait fixrtc +setenv mmcrootflags subvol=@ + +setenv console ttyS0,115200n8 + +setenv kernel_file $vmlinuz +setenv initrd_file $initRd +setenv fdtfile $dtb + +setenv loadaddr 0x46000000 +setenv initrd_addr 0x48000000 +setenv fdtaddr 0x47000000 + +setenv initrd_high 0xffffffff +setenv fdt_high 0xffffffff + +setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} +setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize} +setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} + +setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt +setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 + +run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} +EOF + + # boot.scr for rockchip based device + mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr + + # Copy all DTBs + mkdir -p /boot/dtbs + # shellcheck disable=SC2086 + cp /usr/lib/$kernelVersion/* /boot/dtbs + + # extra boot modules + { echo "vfat"; } >> /etc/initramfs-tools/modules +} + case "$MACHINE" in beagleboneblack) beaglebone_setup_boot am335x-boneblack @@ -290,4 +353,8 @@ case "$MACHINE" in a20_setup_boot sun7i-a20-pcduino3.dtb "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; + rock64) + rockchip_setup_boot "rockchip/rk3328-rock64.dtb" "$EXTERNAL_DRIVE" + enable_serial_console ttyS0 + ;; esac diff --git a/src/freedombone-image-make b/src/freedombone-image-make index a8d589fd7..36f9bb80a 100755 --- a/src/freedombone-image-make +++ b/src/freedombone-image-make @@ -99,7 +99,7 @@ logrotate kmod netbase rsyslog udev debian-archive-keyring" beaglebone_pkgs="linux-image-armmp u-boot-tools u-boot" # Packages needed on rockchip boards (maybe in future debian versions) -#rockchip_pkgs="linux-image-arm64 u-boot-tools u-boot u-boot-rockchip" +rockchip_pkgs="linux-image-arm64 u-boot-tools u-boot u-boot-rockchip" # Packages needed on the Allwinner A20 devices: a20_pkgs="linux-image-armmp-lpae u-boot-tools u-boot u-boot-sunxi" @@ -160,6 +160,19 @@ case "$MACHINE" in --no-extlinux \ --foreign /usr/bin/qemu-arm-static \ --roottype btrfs \ +" + ;; + rock64) + extra_pkgs="$rockchip_pkgs" + extra_opts="\ + --variant minbase \ + --bootoffset=1mib \ + --bootsize 128M \ + --boottype vfat \ + --no-kernel \ + --no-extlinux \ + --foreign /usr/bin/qemu-arm-static \ + --roottype btrfs \ " ;; qemu) diff --git a/src/freedombone-image-makefile b/src/freedombone-image-makefile index aba3e26d6..f8f8558ea 100755 --- a/src/freedombone-image-makefile +++ b/src/freedombone-image-makefile @@ -108,6 +108,14 @@ beaglex15: prep @echo "" @echo "Build complete." +rock64: prep + $(eval ARCHITECTURE = arm64) + $(eval MACHINE = rock64) + $(MAKE_IMAGE) + @rm -f $(ARCHIVE) + @echo "" + @echo "Build complete." + # build Cubieboard2 SD card image cubieboard2: prep $(eval ARCHITECTURE = armhf) -- GitLab