Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
Stefan Reinauer | 489da9f | 2018-10-09 10:45:19 -0700 | [diff] [blame] | 3 | # Copyright 2012 Google Inc. |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 4 | # |
| 5 | # This program 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; version 2 of the License. |
| 8 | # |
| 9 | # This program is distributed in the hope that it will be useful, |
| 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | # GNU General Public License for more details. |
| 13 | # |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 14 | |
Stefan Reinauer | 21b60e6 | 2020-11-16 12:03:50 -0800 | [diff] [blame] | 15 | URL="https://www.dediprog.com/download/save/78.msi" |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 16 | |
| 17 | if ! which curl > /dev/null; then |
| 18 | echo "Install curl to run this script." |
| 19 | exit 1; |
| 20 | fi |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 21 | if ! which msiextract > /dev/null; then |
| 22 | echo "Install msitools (https://wiki.gnome.org/msitools) to run this script." |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 23 | exit 1 |
| 24 | fi |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 25 | |
Stefan Reinauer | ddb3001 | 2018-10-09 10:43:49 -0700 | [diff] [blame] | 26 | FILE=EM100Pro.msi |
Vadim Bendebury | 16f048e | 2013-09-24 11:00:58 -0700 | [diff] [blame] | 27 | TEMP=$(mktemp -d /tmp/makech.XXXXXX) |
Stefan Reinauer | 3f66bc6 | 2019-11-30 16:39:47 -0800 | [diff] [blame] | 28 | WD=$(cd "$(dirname `eval echo "$0"`)"; pwd) |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 29 | TD=$WD/em100_home |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 30 | |
| 31 | cd $TEMP |
Stefan Reinauer | 8a6e341 | 2012-10-18 09:51:50 -0700 | [diff] [blame] | 32 | if [ -r $WD/$FILE ]; then |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 33 | echo " Copying $FILE..." |
Stefan Reinauer | 8a6e341 | 2012-10-18 09:51:50 -0700 | [diff] [blame] | 34 | cp $WD/$FILE . |
| 35 | else |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 36 | echo " Downloading $FILE..." |
Stefan Reinauer | 8a6e341 | 2012-10-18 09:51:50 -0700 | [diff] [blame] | 37 | curl -s $URL -o $FILE || exit |
| 38 | fi |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 39 | echo " Unpacking ..." |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 40 | if ! msiextract $FILE > /dev/null ; then |
| 41 | echo " Could not unpack Windows installer..." |
Vadim Bendebury | 16f048e | 2013-09-24 11:00:58 -0700 | [diff] [blame] | 42 | rm -rf $TEMP |
| 43 | exit 1 |
| 44 | fi |
Stefan Reinauer | e2d4837 | 2019-12-01 21:51:36 -0800 | [diff] [blame] | 45 | VERSION="$( strings -e l Program\ Files/DediProg/EM100/EM100.exe | grep -A1 ProductVersion | grep EM100 )" |
| 46 | echo " Detected SPI flash database \"$VERSION\"" |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 47 | |
| 48 | echo " Creating configs..." |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 49 | mkdir -p $TD/configs |
| 50 | cp -a $TEMP/Program\ Files/DediProg/EM100/config/EM100Pro/*.cfg $TD/configs |
| 51 | echo -n "${VERSION}" > $TD/configs/VERSION |
Stefan Reinauer | 1dc8086 | 2017-11-21 12:27:07 -0800 | [diff] [blame] | 52 | |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 53 | echo " Extract firmware files..." |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 54 | mkdir -p $TD/firmware |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 55 | for i in $TEMP/Program\ Files/DediProg/EM100/firmware/EM100ProFW_* |
Stefan Reinauer | 1dc8086 | 2017-11-21 12:27:07 -0800 | [diff] [blame] | 56 | do |
Stefan Reinauer | dcf351f | 2018-01-22 14:48:57 -0800 | [diff] [blame] | 57 | firmware=$( basename "$i" ) |
| 58 | tuple=${firmware#EM100ProFW_} |
| 59 | v=${tuple: -3} |
| 60 | voltage=${v/V/.}V |
| 61 | mcu_version=${tuple: 1:1}.${tuple: 2:2} |
| 62 | fpga_version=${tuple: 4:1}.${tuple: 5:2} |
| 63 | |
| 64 | $WD/makedpfw -m "$i/2.bin" -M $mcu_version -f "$i/1.bin" -F $fpga_version \ |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 65 | -o $TD/firmware/em100pro_fw_${mcu_version}_${fpga_version}_${voltage}.dpfw |
Stefan Reinauer | 1dc8086 | 2017-11-21 12:27:07 -0800 | [diff] [blame] | 66 | done |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 67 | echo -n "${VERSION}" > $TD/firmware/VERSION |
Stefan Reinauer | 1dc8086 | 2017-11-21 12:27:07 -0800 | [diff] [blame] | 68 | |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 69 | cd $TD |
| 70 | LANG=C tar cJf configs.tar.xz --sort=name configs |
| 71 | LANG=C tar cJf firmware.tar.xz --sort=name firmware |
| 72 | echo -n "Time: " > VERSION |
| 73 | date +%s >> VERSION |
| 74 | echo "Version: ${VERSION}" >> VERSION |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 75 | cd $WD |
Stefan Reinauer | c57d9af | 2019-11-22 00:31:13 -0800 | [diff] [blame] | 76 | |
Stefan Reinauer | 0ce691f | 2012-08-03 14:20:24 -0700 | [diff] [blame] | 77 | rm -rf $TEMP |