From f876bfa66b9c4df6f8f9180448fa3986f1ca6ad1 Mon Sep 17 00:00:00 2001 From: Uli Middelberg Date: Sat, 13 Feb 2016 23:07:55 +0100 Subject: [PATCH] Initial ODROID-C2 support --- builder/boot.ini | 122 +++++++++++++++++++++------------------ builder/build.sh | 8 ++- builder/chroot-script.sh | 6 +- 3 files changed, 75 insertions(+), 61 deletions(-) diff --git a/builder/boot.ini b/builder/boot.ini index 2a5e019..155f9e3 100644 --- a/builder/boot.ini +++ b/builder/boot.ini @@ -1,73 +1,85 @@ -ODROIDC-UBOOT-CONFIG +ODROIDC2-UBOOT-CONFIG # Possible screen resolutions # Uncomment only a single Line! The line with setenv written. # At least one mode must be selected. -# setenv m "vga" # 640x480 -# setenv m "480p" # 720x480 -# setenv m "576p" # 720x576 -# setenv m "800x480p60hz" # 800x480 -# setenv m "800x600p60hz" # 800x600 -# setenv m "1024x600p60hz" # 1024x600 -# setenv m "1024x768p60hz" # 1024x768 -# setenv m "1360x768p60hz" # 1360x768 -# setenv m "1440x900p60hz" # 1440x900 -# setenv m "1600x900p60hz" # 1600x900 -# setenv m "1680x1050p60hz" # 1680x1050 -# setenv m "720p" # 720p 1280x720 -# setenv m "800p" # 1280x800 -# setenv m "sxga" # 1280x1024 -# setenv m "1080i50hz" # 1080I@50Hz -# setenv m "1080p24hz" # 1080P@24Hz -# setenv m "1080p50hz" # 1080P@50Hz -setenv m "1080p" # 1080P@60Hz -# setenv m "1920x1200" # 1920x1200 - -# HDMI DVI Mode Configuration -setenv vout_mode "hdmi" -# setenv vout_mode "dvi" +# 480 Lines (720x480) +# setenv m "480i60hz" # Interlaced 60Hz +# setenv m "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz +# setenv m "480p60hz" # 480 Progressive 60Hz +# setenv m "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz + +# 576 Lines (720x576) +# setenv m "576i50hz" # Interlaced 50Hz +# setenv m "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz +# setenv m "576p50hz" # Progressive 50Hz +# setenv m "576p_rpt" # Progressive for Rear Projection Televisions 50Hz + +# 720 Lines (1280x720) +# setenv m "720p50hz" # 50Hz +# setenv m "720p60hz" # 60Hz + +# 1080 Lines (1920x1080) +# setenv m "1080i60hz" # Interlaced 60Hz +setenv m "1080p60hz" # Progressive 60Hz +# setenv m "1080i50hz" # Interlaced 50Hz +# setenv m "1080p50hz" # Progressive 50Hz +# setenv m "1080p24hz" # Progressive 24Hz + +# 4K (3840x2160) +# setenv m "2160p30hz" # Progressive 30Hz +# setenv m "2160p25hz" # Progressive 25Hz +# setenv m "2160p24hz" # Progressive 24Hz +# setenv m "smpte24hz" # Progressive 24Hz SMPTE +# setenv m "2160p50hz" # Progressive 50Hz +# setenv m "2160p60hz" # Progressive 60Hz +# setenv m "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv m "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) + +### VESA modes ### +# setenv m "640x480p60hz" +# setenv m "800x480p60hz" +# setenv m "800x600p60hz" +# setenv m "1024x600p60hz" +# setenv m "1024x768p60hz" +# setenv m "1280x800p60hz" +# setenv m "1280x1024p60hz" +# setenv m "1360x768p60hz" +# setenv m "1366x768p60hz" +# setenv m "1440x900p60hz" +# setenv m "1600x900p60hz" +# setenv m "1680x1050p60hz" +# setenv m "1920x1200p60hz" + # HDMI BPP Mode setenv m_bpp "32" # setenv m_bpp "24" # setenv m_bpp "16" -# HDMI Hotplug Force (HPD) -# 1 = Enables HOTPlug Detection -# 0 = Disables HOTPlug Detection and force the connected status -setenv hpd "0" - -# CEC Enable/Disable (Requires Hardware Modification) -# 1 = Enables HDMI CEC -# 0 = Disables HDMI CEC -setenv cec "0" - -# UHS Card Configuration -# Uncomment the line below to __DISABLE__ UHS-1 MicroSD support -# This might break boot for some brand models of cards. -setenv disableuhs "disableuhs" +# HDMI DVI/VGA modes +# Uncomment only a single Line! The line with setenv written. +# At least one mode must be selected. +# setenv vout "dvi" +# setenv vout "vga" -# Disable VPU (Video decoding engine, Saves RAM!!!) -# 0 = disabled -# 1 = enabled -setenv vpu "1" +# Default Console Device Setting +setenv condev "console=ttyS0,115200n8 console=tty0" # on both -# Disable HDMI Output (Again, saves ram!) -# 0 = disabled -# 1 = enabled -setenv hdmioutput "1" +########################################### -if test "${hpd}" = "0"; then setenv hdmi_hpd "disablehpd=true"; fi -if test "${cec}" = "1"; then setenv hdmi_cec "hdmitx=cecf"; fi +# Boot Arguments +setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw ${condev} no_console_suspend hdmimode=${m} m_bpp=${m_bpp} vout=${vout} fsck.fix=yes" -setenv bootargs "console=ttyS0,115200n8 console=tty0 root=/dev/mmcblk0p1 rootwait rw no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec}" -ext4load mmc 0:1 0x21000000 /boot/uImage -ext4load mmc 0:1 0x21800000 /boot/meson8b_odroidc.dtb -fdt addr 21800000 +# Booting -if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi +setenv loadaddr "0x11000000" +setenv dtb_loadaddr "0x1000000" +setenv initrd_loadaddr "0x13000000" -if test "${hdmioutput}" = "0"; then fdt rm /mesonfb; fi +fatload mmc 0:1 ${initrd_loadaddr} uInitrd +fatload mmc 0:1 ${loadaddr} Image +fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb -bootm 0x21000000 - 0x21800000 +booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} diff --git a/builder/build.sh b/builder/build.sh index 1f205cc..d20e449 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -24,7 +24,7 @@ ROOT_PARTITION_SIZE="800M" HYPRIOT_IMAGE_VERSION=${VERSION:="dirty"} HYPRIOT_IMAGE_NAME="sd-card-odroid-c2-${HYPRIOT_IMAGE_VERSION}.img" IMAGE_ROOTFS_PATH="/image-rootfs.tar.gz" -QEMU_ARCH="arm" +QEMU_ARCH="aarch64" export HYPRIOT_IMAGE_VERSION # specific versions of kernel/firmware and docker tools @@ -82,8 +82,10 @@ tar -czf $IMAGE_ROOTFS_PATH -C $BUILD_PATH . #FIXME: use latest upstream u-boot files from hardkernel # download current bootloader/u-boot images from hardkernel -wget -q https://raw.githubusercontent.com/mdrjr/c2_uboot_binaries/master/bl1.bin.hardkernel -wget -q https://raw.githubusercontent.com/mdrjr/c2_uboot_binaries/master/u-boot.bin +curl -sSL http://dn.odroid.com/S905/BootLoader/ODROID-C2/c2_bootloader.tar.gz | tar -C /tmp -xzvf - +cp /tmp/c2_bootloader/bl1.bin.hardkernel . +cp /tmp/c2_bootloader/u-boot.bin . +rm -rf /tmp/c2_bootloader/ guestfish < /etc/resolv.conf # set up ODROID repository apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9 -echo "deb http://deb.odroid.in/c2/ trusty main" > /etc/apt/sources.list.d/odroid.list -echo "deb http://deb.odroid.in/ trusty main" >> /etc/apt/sources.list.d/odroid.list +echo "deb http://deb.odroid.in/c2/ xenial main" > /etc/apt/sources.list.d/odroid.list +echo "deb http://deb.odroid.in/ xenial main" >> /etc/apt/sources.list.d/odroid.list # set up Hypriot Schatzkiste repository wget -q https://packagecloud.io/gpg.key -O - | apt-key add - @@ -48,7 +48,7 @@ apt-get install -y u-boot-tools initramfs-tools # make the kernel package create a copy of the current kernel here touch /boot/uImage -apt-get install -y linux-image-c2 +apt-get install -y linux-image-c2 bootini # set device label and version number echo "HYPRIOT_DEVICE=\"$HYPRIOT_DEVICE\"" >> /etc/os-release