From 5e4b7880fb3e27247e76fd057c693da0aea939c1 Mon Sep 17 00:00:00 2001 From: parazyd Date: Mon, 26 Jun 2017 12:16:20 +0200 Subject: [PATCH] preliminary odroidxu4 test --- boards/odroid-xu4.sh | 152 ++++++++++++++++++ ...uboothardkernel-tftp-path-len-bigger.patch | 13 ++ extra/u-boot | 2 +- lib/libdevuansdk | 2 +- sdk | 1 + 5 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 boards/odroid-xu4.sh create mode 100644 extra/patches/uboothardkernel-tftp-path-len-bigger.patch diff --git a/boards/odroid-xu4.sh b/boards/odroid-xu4.sh new file mode 100644 index 0000000..baf0144 --- /dev/null +++ b/boards/odroid-xu4.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env zsh +# Copyright (c) 2017 Dyne.org Foundation +# arm-sdk is written and maintained by Ivan J. +# +# This file is part of arm-sdk +# +# This source code is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this source code. If not, see . + +## kernel build script for ODROID XU4 boards +## https://lastlog.de/blog/posts/odroid_xu4_with_nixos.html + +## settings & config +vars+=(device_name arch size parted_type parted_boot parted_root inittab) +vars+=(gitkernel gitbranch hosttuple) +arrs+=(custmodules extra_packages) + +device_name="odroidxu4" +arch="armhf" +size=1337 +inittab="T1:12345:respawn:/sbin/agetty -L ttyS0 115200 vt100" + +parted_type="dos" +parted_boot="fat32 2048s 264191s" +parted_root="ext4 264192s 100%" + +extra_packages+=() +custmodules=() + +gitkernel="https://github.com/tobetter/linux" +gitbranch="odroidxu4-v4.8" + + +prebuild() { + fn prebuild + req=(device_name strapdir) + ckreq || return 1 + + notice "executing $device_name prebuild" + + copy-root-overlay + + mkdir -p $R/tmp/kernels/$device_name +} + +postbuild() { + fn postbuild + + notice "executing $device_name postbuild" + + notice "building u-boot" + pushd "$R/extra/u-boot-hardkernel" + act "patching" + git checkout -- . + patch -p1 < "$R/extra/patches/uboothardkernel-tftp-path-len-bigger.patch" \ + || zerr + + make distclean + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + odroid_config || zerr + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler || zerr + + notice "dd-ing blobs and u-boot to the image" + sudo dd if=/dev/zero bs=512 count=4000 of=$loopdevice + sudo dd if=sd_fuse/hardkernel_1mb_uboot/bl1.bin.hardkernel \ + bs=512 seek=1 of=$loopdevice + sudo dd if=sd_fuse/hardkernel_1mb_uboot/bl2.bin.hardkernel.1mb_uboot \ + bs=512 seek=31 of=$loopdevice + sudo dd if=u-boot-dtb.bin bs=512 seek=63 of=$loopdevice + sudo dd if=sd_fuse/hardkernel_1mb_uboot/tzsw.bin.hardkernel \ + bs=512 seek=2111 of=$loopdevice + popd + + + postbuild-clean +} + +build_kernel_armhf() { + fn build_kernel_armhf + req=(R arch device_name gitkernel gitbranch MAKEOPTS) + req+=(strapdir loopdevice) + ckreq || return 1 + + notice "building $arch kernel" + + prebuild || zerr + + get-kernel-sources + pushd $R/tmp/kernels/$device_name/${device_name}-linux + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + odroidxu4_defconfig || zerr + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler || zerr + sudo -E PATH="$PATH" \ + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + INSTALL_MOD_PATH=$strapdir \ + modules_install || zerr + sudo cp -v arch/arm/boot/zImage $strapdir/boot/ + popd + + pushd $R/tmp/kernels/$device_name/${device_name}-linux + sudo -E PATH="$PATH" \ + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + INSTALL_MOD_PATH=$strapdir \ + firmware_install || zerr + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + mrproper + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + odroidxu4_defconfig || zerr + sudo -E PATH="$PATH" \ + make \ + $MAKEOPTS \ + ARCH=arm \ + CROSS_COMPILE=$compiler \ + modules_prepare || zerr + popd + + postbuild || zerr +} diff --git a/extra/patches/uboothardkernel-tftp-path-len-bigger.patch b/extra/patches/uboothardkernel-tftp-path-len-bigger.patch new file mode 100644 index 0000000..422b648 --- /dev/null +++ b/extra/patches/uboothardkernel-tftp-path-len-bigger.patch @@ -0,0 +1,13 @@ +diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c +index 77a7dd17ac..f75ba205ab 100644 +--- a/common/cmd_pxe.c ++++ b/common/cmd_pxe.c +@@ -24,7 +24,7 @@ + + #include "menu.h" + +-#define MAX_TFTP_PATH_LEN 127 ++#define MAX_TFTP_PATH_LEN 512 + + /* + * Like getenv, but prints an error if envvar isn't defined in the diff --git a/extra/u-boot b/extra/u-boot index 22f3368..7df4ff2 160000 --- a/extra/u-boot +++ b/extra/u-boot @@ -1 +1 @@ -Subproject commit 22f3368e71321db1e0e15dfbf54b052367890ec7 +Subproject commit 7df4ff2c2689a6d3c16eb0c3cce098fcac622b0c diff --git a/lib/libdevuansdk b/lib/libdevuansdk index e2738e9..ee56a54 160000 --- a/lib/libdevuansdk +++ b/lib/libdevuansdk @@ -1 +1 @@ -Subproject commit e2738e9aefcf1fe9f7604f79eb2231a2a6273d12 +Subproject commit ee56a54cf5b9e0569ce34a7c890551986c7d0257 diff --git a/sdk b/sdk index ad06c0a..f6d3896 100755 --- a/sdk +++ b/sdk @@ -70,6 +70,7 @@ load() { "chromeveyron" "$R/boards/chromebook-veyron.sh" "n900" "$R/boards/nokia-n900.sh" "odroidxu" "$R/boards/odroid-xu.sh" + "odroidxu4" "$R/boards/odroid-xu4.sh" "ouya" "$R/boards/ouya.sh" "raspi1" "$R/boards/raspberry-pi1.sh" "raspi2" "$R/boards/raspberry-pi2.sh"