arm-sdk

os build toolkit for various embedded devices
git clone https://git.parazyd.org/arm-sdk
Log | Files | Refs | Submodules | README | LICENSE

odroid-xu.sh (5654B)


      1 #!/usr/bin/env zsh
      2 # Copyright (c) 2016-2021 Ivan J. <parazyd@dyne.org>
      3 # This file is part of arm-sdk
      4 #
      5 # This source code is free software: you can redistribute it and/or modify
      6 # it under the terms of the GNU General Public License as published by
      7 # the Free Software Foundation, either version 3 of the License, or
      8 # (at your option) any later version.
      9 #
     10 # This software is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU General Public License
     16 # along with this source code. If not, see <http://www.gnu.org/licenses/>.
     17 
     18 ## kernel build script for ODROID XU boards
     19 
     20 ## settings & config
     21 vars+=(device_name arch size parted_type parted_boot parted_root bootfs inittab)
     22 vars+=(gitkernel gitbranch hosttuple)
     23 arrs+=(custmodules extra_packages)
     24 
     25 device_name="odroidxu"
     26 arch="armhf"
     27 size=1337
     28 inittab=("T1:12345:respawn:/bin/login -f root ttySAC2 /dev/ttySAC2 2>&1")
     29 
     30 ## this is used for crosscompiling exynos5-hwcomposer.
     31 ## without it there is no framebuffer console.
     32 hosttuple=${compiler:0:-1}
     33 
     34 parted_type="dos"
     35 bootfs="vfat"
     36 rootfs="ext4"
     37 dos_boot="fat32 2048s 264191s"
     38 dos_root="$rootfs 264192s 100%"
     39 
     40 extra_packages+=()
     41 custmodules=()
     42 
     43 gitkernel="https://github.com/hardkernel/linux.git"
     44 gitbranch="odroidxu-3.4.y"
     45 
     46 
     47 prebuild() {
     48 	fn prebuild
     49 	req=(device_name strapdir)
     50 	ckreq || return 1
     51 
     52 	notice "executing $device_name prebuild"
     53 
     54 	copy-root-overlay
     55 
     56 	mkdir -p $R/tmp/kernels/$device_name
     57 
     58 	print "M    ttySAC2 c 5 1" | sudo tee -a $strapdir/etc/udev/links.conf
     59 	cat <<EOF | sudo tee -a $strapdir/etc/securetty
     60 ttySAC0
     61 ttySAC1
     62 ttySAC2
     63 EOF
     64 }
     65 
     66 postbuild() {
     67 	fn postbuild
     68 
     69 	notice "executing $device_name postbuild"
     70 
     71 	## {{{ boot txts
     72 	notice "Writing bootinfos..."
     73 	# 720p
     74 	cat << EOF | sudo tee ${strapdir}/boot/boot-hdmi-720.txt
     75 setenv initrd_high "0xffffffff"
     76 setenv fdt_high "0xffffffff"
     77 setenv fb_x_res "1280"
     78 setenv fb_y_res "720"
     79 setenv hdmi_phy_res "720"
     80 setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootz 0x40008000 0x42000000"
     81 setenv bootargs "console=tty1 console=ttySAC2,115200n8 vmalloc=512M fb_x_res=\${fb_x_res} fb_y_res=\${fb_y_res} hdmi_phy_res=\${hdmi_phy_res} vout=hdmi led_blink=1 fake_fb=true root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw net.ifnames=0"
     82 boot
     83 EOF
     84 	# 1080p
     85 	cat << EOF | sudo tee ${strapdir}/boot/boot-hdmi-1080.txt
     86 setenv initrd_high "0xffffffff"
     87 setenv fdt_high "0xffffffff"
     88 setenv fb_x_res "1920"
     89 setenv fb_y_res "1080"
     90 setenv hdmi_phy_res "1080"
     91 setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootz 0x40008000 0x42000000"
     92 setenv bootargs "console=tty1 console=ttySAC2,115200n8 vmalloc=512M fb_x_res=\${fb_x_res} fb_y_res=\${fb_y_res} hdmi_phy_res=\${hdmi_phy_res} vout=hdmi led_blink=1 fake_fb=true root=/dev/mmcblk0p2 rootwait rw rootfstype=ext4 net.ifnames=0"
     93 boot
     94 EOF
     95 	## }}}
     96 
     97 	notice "creating u-boot script images"
     98 	sudo mkimage -A arm -T script -C none -d $strapdir/boot/boot-hdmi-720.txt \
     99 		$strapdir/boot/boot-720.scr
    100 	sudo mkimage -A arm -T script -C none -d $strapdir/boot/boot-hdmi-1080.txt \
    101 		$strapdir/boot/boot-1080.scr
    102 	sudo cp $CPVERBOSE $strapdir/boot/boot-720.scr $strapdir/boot/boot.scr
    103 
    104 	notice "doing u-boot magic"
    105 	pushd $R/tmp/kernels/$device_name/${device_name}-linux/tools/hardkernel/u-boot-pre-built
    106 	sudo sh sd_fusing.sh $loopdevice
    107 	act " ^ not this time :)"
    108 
    109 	postbuild-clean
    110 }
    111 
    112 build_kernel_armhf() {
    113 	fn build_kernel_armhf
    114 	req=(R arch device_name gitkernel gitbranch MAKEOPTS)
    115 	req+=(strapdir loopdevice)
    116 	ckreq || return 1
    117 
    118 	notice "building $arch kernel"
    119 
    120 	prebuild || zerr
    121 
    122 	get-kernel-sources
    123 	pushd $R/tmp/kernels/$device_name/${device_name}-linux
    124 		make \
    125 			$MAKEOPTS \
    126 			ARCH=arm \
    127 			CROSS_COMPILE=$compiler \
    128 				odroidxu_ubuntu_defconfig || zerr
    129 		make \
    130 			$MAKEOPTS \
    131 			ARCH=arm \
    132 			CROSS_COMPILE=$compiler || zerr
    133 		sudo -E PATH="$PATH" \
    134 			make \
    135 				$MAKEOPTS \
    136 				ARCH=arm \
    137 				CROSS_COMPILE=$compiler \
    138 				INSTALL_MOD_PATH=$strapdir \
    139 					modules_install || zerr
    140 		sudo cp -v arch/arm/boot/zImage $strapdir/boot/
    141 	popd
    142 
    143 	notice "building hwcomposer"
    144 	pushd $R/tmp/kernels/$device_name/${device_name}-linux/tools/hardkernel/exynos5-hwcomposer
    145 	## it's quite chatty still, so we if 0 the logging, and also add a missing #define
    146 	sed -i -e 's/if 1/if 0/g' include/log.h
    147 	sed -i -e 's/#define ALOGD/#define ALOGD\r#define ALOGF/g' include/log.h
    148 
    149 	./configure --prefix=/usr --build x86_64-pc-linux-gnu --host $hosttuple || zerr
    150 	make \
    151 		$MAKEOPTS \
    152 		ARCH=arm \
    153 		CROSS_COMPILE=$compiler || zerr
    154 	sudo -E PATH="$PATH" \
    155 		make \
    156 			$MAKEOPTS \
    157 			ARCH=arm \
    158 			CROSS_COMPILE=$compiler \
    159 			DESTDIR=$strapdir \
    160 				install || zerr
    161 	sudo sed -i -e \
    162 		's:^exit 0:exynos5-hwcomposer > /dev/null 2\&1 \&\nexit 0:' \
    163 		$strapdir/etc/rc.local
    164 
    165 	#sudo rm -rf $strapdir/lib/firmware
    166 	#get-kernel-firmware
    167 	#sudo cp $CPVERBOSE -ra $R/tmp/linux-firmware $strapdir/lib/firmware
    168 
    169 	pushd $R/tmp/kernels/$device_name/${device_name}-linux
    170 		sudo -E PATH="$PATH" \
    171 			make \
    172 				$MAKEOPTS \
    173 				ARCH=arm \
    174 				CROSS_COMPILE=$compiler \
    175 				INSTALL_MOD_PATH=$strapdir \
    176 					firmware_install || zerr
    177 		make \
    178 			$MAKEOPTS \
    179 			ARCH=arm \
    180 			CROSS_COMPILE=$compiler \
    181 				mrproper
    182 		#copy-kernel-config
    183 		make \
    184 			$MAKEOPTS \
    185 			ARCH=arm \
    186 			CROSS_COMPILE=$compiler \
    187 				odroidxu_ubuntu_defconfig || zerr
    188 		sudo -E PATH="$PATH" \
    189 			make \
    190 				$MAKEOPTS \
    191 				ARCH=arm \
    192 				CROSS_COMPILE=$compiler \
    193 					modules_prepare || zerr
    194 	popd
    195 
    196 	postbuild || zerr
    197 }