#!/bin/sh # my-mkimage # This will pad given files to 64k boundaries to make a single u-boot image. # we have to be fancy because u-boot mkimage is going to add 64 byte header, ... # and i only know basic arithmetic.. ;) # # Copyright (C) 2010 Scott Nicholas [ $# -lt 2 ] && { echo usage: $0 loader.bin [rootfs.squashfs [fs_mark [...]]] output.bin } OLDSIZE=$(stat -c%s $1) NEWSIZE=$(((OLDSIZE / 65536 + 1) * 65536 - 64)) dd if=$1 of=vmlinuz.tmp bs=$NEWSIZE conv=sync >/dev/null 2>&1 shift appends=$(($# - 1)) echo while [ $appends -gt 0 ]; do dd if=$1 of=temp bs=64k conv=sync >/dev/null 2>&1 printf "### '%s' starts at 0x%x\n" "`basename $1`" "$((NEWSIZE+64))" cat temp >>vmlinuz.tmp shift appends=$((appends-1)) NEWSIZE=$(stat -c%s vmlinuz.tmp) done echo ../../../../staging_dir/host/bin/mkimage -A mips -O linux -T kernel \ -C none -a 0x80400000 -e 0x80400000 -n "ADM8668 Linux Kernel(2.4.31)" \ -d vmlinuz.tmp $1 rm temp vmlinuz.tmp