From ca4bd6f599b8dfebc4d0a037cbba0bf0402b832c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 3 Aug 2006 08:08:40 +0000 Subject: The sansa build now uses this new mi4 creation script, working as a frontend to the mi4code tool to do all steps from raw binary to complete mi4 file git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10429 a1c6a512-1295-4272-9138-f99709370657 --- tools/mkmi4.sh | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100755 tools/mkmi4.sh (limited to 'tools/mkmi4.sh') diff --git a/tools/mkmi4.sh b/tools/mkmi4.sh new file mode 100755 index 0000000000..8dc90d886f --- /dev/null +++ b/tools/mkmi4.sh @@ -0,0 +1,97 @@ +#!/bin/sh +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# +# Purpose of this script: +# +# Inputs: music player model name and a file name +# +# Action: Build a valid mi4 file (prepending and appending magic) +# Encrypt the file with TEA encryption so that the model's own +# bootloader accepts this file. +# Sign the file with a DSA signature the bootloader accepts +# +# Output: A built, encrypted and signed mi4 file image. +# +# Requirement: +# +# This script assumes that you have the mi4code tool in your path, that +# you have the environment variable MI4CODE pointing to the tool or that you +# have it in the same dir that you invoke this script with. +# +# mi4 info and tool are here: http://daniel.haxx.se/sansa/mi4.html +# + +mkmi4=$0 +target=$1 +input=$2 +output=$3 + +# scan the $PATH for the given command +findtool(){ + file="$1" + + IFS=":" + for path in $PATH + do + # echo "checks for $file in $path" >&2 + if test -f "$path/$file"; then + echo "$path/$file" + return + fi + done +} + +help () { + echo "Usage: mi4fix.sh " + exit +} + +if test -z "$output"; then + help +fi + +case $target in + e200) + tea=sansa + ;; + h10) + tea=20gc_eng + ;; + *) + echo "unsupported target" + help + ;; +esac + +if test -z "$MI4CODE"; then + tool=`findtool mi4code` + if test -z "$tool"; then + # not in path + tool=`dirname $mkmi4`/mi4code + if ! test -f $tool; then + echo "Couldn't find mi4code" + exit + fi + fi +else + tool=$MI4CODE +fi + + + + +# build a 010301 version +echo "$tool build $input $output.raw" +$tool build $input $output.raw +# encrypt +echo "$tool encrypt $output.raw $output.encrypt $tea" +$tool encrypt $output.raw $output.encrypt $tea +# sign +echo "$tool sign $output.encrypt $output" +$tool sign $output.encrypt $output -- cgit v1.2.3