From 33e6f2c2bef3992acd91ac465955938f0292a430 Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob.mottram@codethink.co.uk> Date: Tue, 28 Jun 2016 17:18:15 +0100 Subject: [PATCH] Beginning of support for odroid c2 --- README.md | 2 +- man/freedombone-image.1.gz | Bin 3377 -> 3383 bytes src/freedombone-image-hardware-setup | 243 ++++++++++++++++----------- src/freedombone-image-make | 16 ++ src/freedombone-image-makefile | 11 ++ 5 files changed, 176 insertions(+), 96 deletions(-) diff --git a/README.md b/README.md index 49eb69d41..023772762 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ To build a 64bit Qemu image: freedombone-image -t qemu-x86_64 -s 8G -Other supported boards are cubieboard2, cubietruck, olinuxino-lime, olinuxino-lime2 and olinuxino-micro. +Other supported boards are cubieboard2, cubietruck, olinuxino-lime, olinuxino-lime2, olinuxino-micro and odroid-c2. If the image build fails with an error such as "/Error reading from server. Remote end closed connection/" then you can specify a debian package mirror repository manually with: diff --git a/man/freedombone-image.1.gz b/man/freedombone-image.1.gz index 497cc86f9736ef4d2fa00b0966c3fd0562576c82..0b97ff4d04713765baca84ba4bbd140761b6d98d 100644 GIT binary patch delta 3339 zcmV+m4fOJ{8n+rAABzY8KcaG100XsIZExJT5&o`ULF|{bfTc}*%^{H<PJfpZF~NUt zhgIUvsrs1{m(sMdm_$*scqb-Tv&-{I^mMa-#p1M9vQbV*k*icoBm5iJ>PDu85-VE^ zZCoRZLYuX)rm@29U871DHeY<ay1rS=7hgLdZp3{f>$Pfr6>%%>TUcjgsqkAR?knls z&el18i#2{v?Pr0L8l8#xjen4NUMuJP%i6Y$s>S{AT-X&1!$YGQ;a}5I<6emSx4L$X zIJ;U1oVUey^Be!}SllmEW=;O&WhU<Ne5KcI4FjwZD_xM8PTU8N=r8npyjDilu<(Ab z-0#NHqf#5JDaMbS+u(k-ZiH#elug@;`>m|uV)8{?tIA?UZGTf)BY)N!cc3S2UEpmg z?n5+6UDt?!e{9Dm_yyJ!`|(ru$Vz5P-0uo$o=;Vid3$s&?%^u<`+*+p^h!7T3hTPx zC>lN{)uxtC{TkwXcD^{ho!>0y*H@EhxzSE!-+`H3ts4Ri;39F0thS3Yk;ytw!nX6P z#d7xk{mk!srYdD}Wq&e_eKTyCst$H47dzc-UPqC@KiB5iv1$;9M#TGWkw{xz<S}re zOrsGC@@TbhHrB+s&Dus6PLvOgt!pe0+Y**r+qkBdmH7N6<^|t8Ah&Mi8f&pn+SDr- z`=8b428q#r?hn)0(;^NlE6TL~=9ZsS*~XL-aX@{F&¬ZGXkkX=Ac697KzwXucAA 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 VRQkG`Hy@rA{RgU90v6LA000YGY2E+; delta 3319 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 BaY_IH diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup index 1d6b82a0e..f22d7fc90 100755 --- a/src/freedombone-image-hardware-setup +++ b/src/freedombone-image-hardware-setup @@ -32,27 +32,27 @@ export TEXTDOMAIN=${PROJECT_NAME}-image-hardware-setup export TEXTDOMAINDIR="/usr/share/locale" enable_serial_console() { - # By default, spawn a console on the serial port - device="$1" - echo $"Adding a getty on the serial port" - echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab + # By default, spawn a console on the serial port + device="$1" + echo $"Adding a getty on the serial port" + echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab } beaglebone_setup_boot() { - # Setup uEnv.txt - if grep -q btrfs /etc/fstab ; then - fstype=btrfs - else - fstype=ext4 - fi - kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4) - version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/') - initRd=initrd.img-$version - vmlinuz=vmlinuz-$version - - # uEnv.txt for Beaglebone - # based on https://github.com/beagleboard/image-builder/blob/master/target/boot/beagleboard.org.txt - cat >> /boot/uEnv.txt <<EOF + # Setup uEnv.txt + if grep -q btrfs /etc/fstab ; then + fstype=btrfs + else + fstype=ext4 + fi + kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4) + version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/') + initRd=initrd.img-$version + vmlinuz=vmlinuz-$version + + # uEnv.txt for Beaglebone + # based on https://github.com/beagleboard/image-builder/blob/master/target/boot/beagleboard.org.txt + cat >> /boot/uEnv.txt <<EOF mmcroot=/dev/mmcblk0p2 ro mmcrootfstype=$fstype rootwait fixrtc mmcrootflags=subvol=@ @@ -79,17 +79,17 @@ mmcargs=setenv bootargs console=tty0 console=\${console} root=\${mmcroot} rootfs uenvcmd=run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} EOF - mkdir -p /boot/dtbs - cp /usr/lib/linux-image-*-armmp/* /boot/dtbs + mkdir -p /boot/dtbs + cp /usr/lib/linux-image-*-armmp/* /boot/dtbs } beaglebone_flash() { - # allow flash-kernel to work without valid /proc contents - # ** this doesn't *really* work, since there are too many checks - # that fail in an emulated environment! We'll have to do it by - # hand below anyway... - export FK_MACHINE="TI AM335x BeagleBone" - apt-get install -y flash-kernel + # allow flash-kernel to work without valid /proc contents + # ** this doesn't *really* work, since there are too many checks + # that fail in an emulated environment! We'll have to do it by + # hand below anyway... + export FK_MACHINE="TI AM335x BeagleBone" + apt-get install -y flash-kernel } beaglebone_repack_kernel() { @@ -105,50 +105,99 @@ beaglebone_repack_kernel() { # on the kernel command line is completely ignored! repack the initrd # to remove this evil... - echo "info: repacking beaglebone kernel and initrd" + echo "info: repacking beaglebone kernel and initrd" - kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4) - version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/') - initRd=initrd.img-$version - vmlinuz=vmlinuz-$version + kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4) + version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/') + initRd=initrd.img-$version + vmlinuz=vmlinuz-$version - mkdir /tmp/initrd-repack + mkdir /tmp/initrd-repack - (cd /tmp/initrd-repack ; \ - zcat /boot/$initRd | cpio -i ; \ - rm -f conf/param.conf ; \ - find . | cpio --quiet -o -H newc | \ - gzip -9 > /boot/$initRd ) + (cd /tmp/initrd-repack ; \ + zcat /boot/$initRd | cpio -i ; \ + rm -f conf/param.conf ; \ + find . | cpio --quiet -o -H newc | \ + gzip -9 > /boot/$initRd ) - rm -rf /tmp/initrd-repack + rm -rf /tmp/initrd-repack - (cd /boot ; \ - cp /usr/lib/$kernelVersion/am335x-boneblack.dtb dtb ; \ - cat $vmlinuz dtb >> temp-kernel ; \ - mkimage -A arm -O linux -T kernel -n "Debian kernel ${version}" \ - -C none -a 0x80200000 -e 0x80200000 -d temp-kernel uImage ; \ - rm -f temp-kernel ; \ - mkimage -A arm -O linux -T ramdisk -C gzip -a 0x81000000 -e 0x81000000 \ - -n "Debian ramdisk ${version}" \ - -d $initRd uInitrd ) + (cd /boot ; \ + cp /usr/lib/$kernelVersion/am335x-boneblack.dtb dtb ; \ + cat $vmlinuz dtb >> temp-kernel ; \ + mkimage -A arm -O linux -T kernel -n "Debian kernel ${version}" \ + -C none -a 0x80200000 -e 0x80200000 -d temp-kernel uImage ; \ + rm -f temp-kernel ; \ + mkimage -A arm -O linux -T ramdisk -C gzip -a 0x81000000 -e 0x81000000 \ + -n "Debian ramdisk ${version}" \ + -d $initRd uInitrd ) +} + +odroidc2_setup_boot() { + dtb="$1" + + # Setup uEnv.txt + if grep -q btrfs /etc/fstab ; then + fstype=btrfs + else + fstype=ext4 + fi + kernelVersion=$(ls /usr/lib/*/${dtb}.dtb | head -1 | cut -d/ -f4) + version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/') + initRd=initrd.img-$version + vmlinuz=vmlinuz-$version + + # based on http://odroid.com/dokuwiki/doku.php?id=en:c2_building_u-boot + cat >> /boot/uEnv.txt <<EOF +mmcroot=/dev/mmcblk0p2 ro +mmcrootfstype=$fstype rootwait fixrtc +mmcrootflags=subvol=@ + +console=ttyO0,115200n8 + +kernel_file=$vmlinuz +initrd_file=$initRd + +loadaddr=0x11000000 +initrd_addr=0x13000000 +fdtaddr=0x1000000 + +initrd_high=0xffffffff +fdt_high=0xffffffff + +loadkernel=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} +loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv initrd_size \${filesize} +loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} + +m="1080p60hz" +m_bpp="32" + +loadfiles=run loadkernel; run loadinitrd; run loadfdt +mmcargs=setenv bootargs rootwait rw console=tty0 console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} no_console_suspend hdmimode=${m} m_bpp=${m_bpp} fsck.fix=yes + +uenvcmd=run loadfiles; run mmcargs; booti \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} +EOF + + mkdir -p /boot/dtbs + cp /usr/lib/linux-image-*-armmp/* /boot/dtbs } a20_setup_boot() { - dtb="$1" - - # Setup boot.cmd - if grep -q btrfs /etc/fstab ; then - fstype=btrfs - else - fstype=ext4 - fi - 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 + dtb="$1" + + # Setup boot.cmd + if grep -q btrfs /etc/fstab ; then + fstype=btrfs + else + fstype=ext4 + fi + 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 @@ -179,42 +228,46 @@ setenv mmcargs setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\ run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} EOF - # boot.scr for Allwinner A20 based device - mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr + # boot.scr for Allwinner A20 based device + mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr - # Copy all DTBs - mkdir -p /boot/dtbs - cp /usr/lib/$kernelVersion/* /boot/dtbs + # Copy all DTBs + mkdir -p /boot/dtbs + cp /usr/lib/$kernelVersion/* /boot/dtbs - # extra boot modules - echo "rtc_sunxi" >> /etc/initramfs-tools/modules + # extra boot modules + echo "rtc_sunxi" >> /etc/initramfs-tools/modules } case "$MACHINE" in - beaglebone) - beaglebone_setup_boot - beaglebone_flash - beaglebone_repack_kernel - enable_serial_console ttyO0 - ;; - cubietruck) - a20_setup_boot sun7i-a20-cubietruck.dtb - enable_serial_console ttyS0 - ;; - a20-olinuxino-lime) - a20_setup_boot sun7i-a20-olinuxino-lime.dtb - enable_serial_console ttyS0 - ;; - a20-olinuxino-lime2) - a20_setup_boot sun7i-a20-olinuxino-lime2.dtb - enable_serial_console ttyS0 - ;; - a20-olinuxino-micro) - a20_setup_boot sun7i-a20-olinuxino-micro.dtb - enable_serial_console ttyS0 - ;; - cubieboard2) - a20_setup_boot sun7i-a20-cubieboard2.dtb - enable_serial_console ttyS0 - ;; + beaglebone) + beaglebone_setup_boot + beaglebone_flash + beaglebone_repack_kernel + enable_serial_console ttyO0 + ;; + odroid-c2) + odroidc2_setup_boot meson64_odroidc2 + enable_serial_console ttyO0 + ;; + cubietruck) + a20_setup_boot sun7i-a20-cubietruck.dtb + enable_serial_console ttyS0 + ;; + a20-olinuxino-lime) + a20_setup_boot sun7i-a20-olinuxino-lime.dtb + enable_serial_console ttyS0 + ;; + a20-olinuxino-lime2) + a20_setup_boot sun7i-a20-olinuxino-lime2.dtb + enable_serial_console ttyS0 + ;; + a20-olinuxino-micro) + a20_setup_boot sun7i-a20-olinuxino-micro.dtb + enable_serial_console ttyS0 + ;; + cubieboard2) + a20_setup_boot sun7i-a20-cubieboard2.dtb + enable_serial_console ttyS0 + ;; esac diff --git a/src/freedombone-image-make b/src/freedombone-image-make index 25ab91aa4..c614237a1 100755 --- a/src/freedombone-image-make +++ b/src/freedombone-image-make @@ -83,6 +83,9 @@ logrotate module-init-tools netbase rsyslog udev debian-archive-keyring" # Packages needed on the beaglebone beaglebone_pkgs="linux-image-armmp u-boot-tools u-boot" +# Packages needed on the Odroid C2 devices: +odroidc2_pkgs="linux-image-armmp-lpae u-boot-tools u-boot" + # Packages needed on the Allwinner A20 devices: a20_pkgs="linux-image-armmp-lpae u-boot-tools u-boot u-boot-sunxi" @@ -103,6 +106,19 @@ case "$MACHINE" in --no-extlinux \ --foreign /usr/bin/qemu-arm-static \ --roottype btrfs \ +" + ;; + odroid-c2) + extra_pkgs="$odroidc2_pkgs" + extra_opts="\ + --variant minbase \ + --bootoffset=2mib \ + --bootsize 128M \ + --boottype ext2 \ + --no-kernel \ + --no-extlinux \ + --foreign /usr/bin/qemu-arm-static \ + --roottype btrfs \ " ;; cubietruck | a20-olinuxino-lime | a20-olinuxino-lime2 | a20-olinuxino-micro | cubieboard2) diff --git a/src/freedombone-image-makefile b/src/freedombone-image-makefile index 0d7610272..c66839aba 100755 --- a/src/freedombone-image-makefile +++ b/src/freedombone-image-makefile @@ -89,6 +89,17 @@ beaglebone: prep $(SIGN) @echo "Build complete." +# build Odroid C2 SD card image +odroid-c2: prep + $(eval ARCHITECTURE = aarch64) + $(eval MACHINE = odroid-c2) + $(MAKE_IMAGE) + @rm -f $(ARCHIVE) + $(XZ) $(IMAGE) + @echo "" + $(SIGN) + @echo "Build complete." + # build Cubieboard2 SD card image cubieboard2: prep $(eval ARCHITECTURE = armhf) -- GitLab