diff options
author | Daniel Stenberg <daniel@haxx.se> | 2006-08-03 08:08:40 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2006-08-03 08:08:40 +0000 |
commit | ca4bd6f599b8dfebc4d0a037cbba0bf0402b832c (patch) | |
tree | 5b364cc93775731ba66e20627e01d946a878e2de /tools/mkmi4.sh | |
parent | bb5330cb881c3a400f29871c839fe15515b57565 (diff) |
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
Diffstat (limited to 'tools/mkmi4.sh')
-rwxr-xr-x | tools/mkmi4.sh | 97 |
1 files changed, 97 insertions, 0 deletions
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 <e200/h10> <input> <output>" + 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 |