Skip to content

Commit 6a69af1

Browse files
author
Xiangfu Liu
committedAug 29, 2011
reflash_m1.sh: add --release --snapshot
1 parent 51a4d06 commit 6a69af1

File tree

1 file changed

+166
-59
lines changed

1 file changed

+166
-59
lines changed
 

‎scripts/reflash_m1.sh

+166-59
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
#!/bin/bash
22

33
# version of me
4-
__VERSION__="2011-04-21"
4+
__VERSION__="2011-08-28"
5+
echo "File name: $0, Version of me: ${__VERSION__}"
56

6-
BASE_URL_HTTP="http://www.milkymist.org/snapshots"
7-
VERSION="latest"
8-
WORKING_DIR="${HOME}/.qi/milkymist/${VERSION}"
97

108
FJMEM="fjmem.bit"
119
STANDBY="standby.fpg"
@@ -18,47 +16,54 @@ SPLASH="splash.raw"
1816
FLICKERNOISE="flickernoise.fbi"
1917
DATA="data.flash5.bin"
2018

21-
mkdir -p ${WORKING_DIR}
19+
# Functions ###########################################################
20+
call-help() {
21+
echo "
22+
Usage: ./reflash_m1.sh version: ${__VERSION__}
23+
--release [VERSION] # by default it will download 'currect' release
24+
--snapshot <VERSION> [data] # if 'data' enable will reflash data partitions
25+
--local-folder <PATH> # all files must be under <PATH>
26+
--lock-flash # lock 'standby' and 'rescue' partitions
27+
--bios-mac 00 2a # '00' '2a' is the last MAC address
28+
--rc3 00 2a # used in factory flash
2229
23-
MD5SUMS_SERVER=$(\
24-
wget -O - ${BASE_URL_HTTP}/${VERSION}/md5sums 2> /dev/null |\
25-
grep -E "(${FJMEM}|${STANDBY}|${SOC_RESCUE}|${BIOS_RESCUE}|${SPLASH_RESCUE}|\
26-
${SOC}|${BIOS}|${SPLASH}|${FLICKERNOISE}|${DATA})" | sort)
27-
if [ "${MD5SUMS_SERVER}" == "" ]; then
28-
echo "ERROR: can't fetch files from server"
29-
exit 1
30-
fi
30+
Written by: Xiangfu Liu <xiangfu@sharism.cc>
31+
Please report bugs to <devel@lists.milkymist.org>
32+
"
3133

32-
MD5SUMS_LOCAL=$( (cd "${WORKING_DIR}" ; \
33-
md5sum --binary ${FJMEM} ${STANDBY} ${SOC_RESCUE} ${BIOS_RESCUE} ${SPLASH_RESCUE} \
34-
${SOC} ${BIOS} ${SPLASH} ${FLICKERNOISE} ${DATA} 2> /dev/null) | sort )
35-
36-
if [ "${MD5SUMS_SERVER}" == "${MD5SUMS_LOCAL}" ]; then
37-
echo "present files are identical to the ones on the server - do not download them again"
38-
else
39-
(cd "${WORKING_DIR}" ; rm -f ${FJMEM} ${STANDBY} ${SOC_RESCUE} ${BIOS_RESCUE} ${SPLASH_RESCUE} \
40-
${SOC} ${BIOS} ${SPLASH} ${FLICKERNOISE} ${DATA})
41-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${FJMEM}"
42-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${STANDBY}"
43-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${SOC_RESCUE}"
44-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${BIOS_RESCUE}"
45-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${SPLASH_RESCUE}"
46-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${SOC}"
47-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${BIOS}"
48-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${SPLASH}"
49-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${FLICKERNOISE}"
50-
wget -P "${WORKING_DIR}" "${BASE_URL_HTTP}/${VERSION}/${DATA}"
51-
fi
34+
}
35+
36+
call-download() {
37+
wget -O "${WORKING_DIR}/${STANDBY}" "${BASE_URL_HTTP}/${VERSION}/${STANDBY}"
38+
39+
wget -O "${WORKING_DIR}/${SOC_RESCUE}" "${BASE_URL_HTTP}/${VERSION}/${SOC_RESCUE}"
40+
wget -O "${WORKING_DIR}/${BIOS_RESCUE}" "${BASE_URL_HTTP}/${VERSION}/${BIOS_RESCUE}"
41+
wget -O "${WORKING_DIR}/${SPLASH_RESCUE}" "${BASE_URL_HTTP}/${VERSION}/${SPLASH_RESCUE}"
42+
43+
wget -O "${WORKING_DIR}/${SOC}" "${BASE_URL_HTTP}/${VERSION}/${SOC}"
44+
wget -O "${WORKING_DIR}/${BIOS}" "${BASE_URL_HTTP}/${VERSION}/${BIOS}"
45+
wget -O "${WORKING_DIR}/${SPLASH}" "${BASE_URL_HTTP}/${VERSION}/${SPLASH}"
46+
47+
wget -O "${WORKING_DIR}/${FLICKERNOISE}" "${BASE_URL_HTTP}/${VERSION}/${FLICKERNOISE}"
48+
}
49+
50+
call-jtag() {
51+
if [ ! -f ${WORKING_DIR}/${FJMEM} ]; then
52+
wget -O "${WORKING_DIR}/${FJMEM}" http://milkymist.org/updates/2011-07-13/for-rc3/fjmem.bit
53+
fi
54+
55+
# UrJtag option ##########################################
56+
JTAG_DEBUG=""
57+
#JTAG_DEBUG="debug all"
58+
59+
JTAG_NOVERIFY="noverify"
60+
# UrJtag option ##########################################
5261

53-
#UrJtag option
54-
NOVERIFY="noverify"
55-
#DEBUG="debug all"
56-
DEBUG=""
62+
#UrJtag batch file
63+
JTAG_BATCH_FILE=`mktemp`
5764

58-
#UrJtag batch file
59-
BATCH_FILE=`mktemp`
60-
cat > ${BATCH_FILE}<<EOF
61-
${DEBUG}
65+
cat > ${JTAG_BATCH_FILE}<<EOF
66+
${JTAG_DEBUG}
6267
6368
cable milkymist
6469
detect
@@ -70,33 +75,135 @@ frequency 6000000
7075
detectflash 0
7176
endian big
7277
73-
flashmem 0x000000 ${WORKING_DIR}/${STANDBY} ${NOVERIFY}
78+
EOF
7479

75-
flashmem 0x0A0000 ${WORKING_DIR}/${SOC_RESCUE} ${NOVERIFY}
76-
flashmem 0x220000 ${WORKING_DIR}/${BIOS_RESCUE} ${NOVERIFY}
77-
flashmem 0x240000 ${WORKING_DIR}/${SPLASH_RESCUE} ${NOVERIFY}
78-
flashmem 0x2E0000 ${WORKING_DIR}/${FLICKERNOISE} ${NOVERIFY}
80+
echo "eraseflash 0x000000 105" >> ${JTAG_BATCH_FILE}
7981

80-
flashmem 0x6E0000 ${WORKING_DIR}/${SOC} ${NOVERIFY}
81-
flashmem 0x860000 ${WORKING_DIR}/${BIOS} ${NOVERIFY}
82-
flashmem 0x880000 ${WORKING_DIR}/${SPLASH} ${NOVERIFY}
82+
echo "flashmem 0x000000 ${WORKING_DIR}/${STANDBY} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
83+
echo "flashmem 0x0A0000 ${WORKING_DIR}/${SOC_RESCUE} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
84+
echo "flashmem 0x220000 ${WORKING_DIR}/${BIOS_RESCUE} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
85+
echo "flashmem 0x240000 ${WORKING_DIR}/${SPLASH_RESCUE} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
86+
echo "flashmem 0x2E0000 ${WORKING_DIR}/${FLICKERNOISE} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
8387

84-
flashmem 0x920000 ${WORKING_DIR}/${FLICKERNOISE} ${NOVERIFY}
88+
echo "lockflash 0x000000 55" >> ${JTAG_BATCH_FILE}
8589

86-
eraseflash 0xD20000 151
87-
flashmem 0xD20000 ${WORKING_DIR}/${DATA} ${NOVERIFY}
90+
echo "flashmem 0x6E0000 ${WORKING_DIR}/${SOC} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
91+
echo "flashmem 0x860000 ${WORKING_DIR}/${BIOS} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
92+
echo "flashmem 0x880000 ${WORKING_DIR}/${SPLASH} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
93+
echo "flashmem 0x920000 ${WORKING_DIR}/${FLICKERNOISE} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
8894

89-
pld reconfigure
90-
EOF
95+
if [ "$1" == "--snapshot" ] && [ "$2" == "data" ] && [ -f "${WORKING_DIR}/${DATA}" ]; then
96+
echo "eraseflash 0xD20000 151" >> ${JTAG_BATCH_FILE}
97+
echo "flashmem 0xD20000 ${WORKING_DIR}/${DATA} ${JTAG_NOVERIFY}" >> ${JTAG_BATCH_FILE}
98+
fi
9199

92-
jtag ${BATCH_FILE}
93-
if [ "$?" == "0" ]; then
94-
rm -f ${BATCH_FILE}
100+
echo "pld reconfigure" >> ${JTAG_BATCH_FILE}
95101

102+
jtag ${JTAG_BATCH_FILE}
96103
echo "-------------------------------------------------------------"
104+
echo "jtag batch file is ${JTAG_BATCH_FILE}"
97105
echo "Your m1 was successfully reflashed. To boot the new software,"
98106
echo "Please now press the middle button of your Milkymist One."
99107
echo "-------------------------------------------------------------"
100-
else
101-
echo "there are errors when running jtag. "
108+
109+
}
110+
111+
112+
# Main ###########################################################
113+
114+
if [ "$1" == "--release" ]; then
115+
BASE_URL_HTTP="http://milkymist.org/updates"
116+
VERSION="$2"
117+
118+
if [ "${VERSION}" == "" ]; then
119+
VERSION="current"
120+
fi
121+
122+
VERSION_SERVER=$(wget -O - ${BASE_URL_HTTP}/${VERSION}/version-app 2> /dev/null)
123+
if [ "${VERSION_SERVER}" == "" ]; then
124+
echo "ERROR: can't fetch files: ${BASE_URL_HTTP}/${VERSION}/version-app"
125+
exit 1
126+
fi
127+
128+
WORKING_DIR="${HOME}/.qi/milkymist/release/${VERSION}"
129+
mkdir -p ${WORKING_DIR}
130+
131+
VERSION_LOCAL=$(cat "${WORKING_DIR}/version-app")
132+
133+
if [ "${VERSION_SERVER}" == "${VERSION_LOCAL}" ]; then
134+
echo "local version same with server version - do not download them again"
135+
else
136+
(cd "${WORKING_DIR}" ; rm -f \
137+
${STANDBY} ${SOC_RESCUE} ${BIOS_RESCUE} ${SPLASH_RESCUE} \
138+
${SOC} ${BIOS} ${SPLASH} ${FLICKERNOISE} \
139+
version-app)
140+
wget -O ${WORKING_DIR}/version-app ${BASE_URL_HTTP}/${VERSION}/version-app
141+
call-download
142+
fi
143+
144+
call-jtag $1
145+
exit 0
146+
fi
147+
148+
149+
if [ "$1" == "--snapshot" ]; then
150+
if [ "$2" == "" ]; then
151+
call-help
152+
exit 1
153+
fi
154+
155+
BASE_URL_HTTP="http://fidelio.qi-hardware.com/~xiangfu/build-milkymist"
156+
VERSION="$2"
157+
158+
MD5SUMS_SERVER=$(\
159+
wget -O - ${BASE_URL_HTTP}/${VERSION}/md5sums 2> /dev/null |\
160+
grep -E "(${STANDBY}|${SOC_RESCUE}|${BIOS_RESCUE}|${SPLASH_RESCUE}|${SOC}|${BIOS}|${SPLASH}|${FLICKERNOISE}|${DATA})" | sort)
161+
if [ "${MD5SUMS_SERVER}" == "" ]; then
162+
echo "ERROR: can't fetch files: ${BASE_URL_HTTP}/${VERSION}/md5sums"
163+
exit 1
164+
fi
165+
166+
WORKING_DIR="${HOME}/.qi/milkymist/snapshots/${VERSION}"
167+
mkdir -p ${WORKING_DIR}
168+
169+
MD5SUMS_LOCAL=$( (cd "${WORKING_DIR}" ; \
170+
md5sum --binary ${STANDBY} ${SOC_RESCUE} ${BIOS_RESCUE} ${SPLASH_RESCUE} \
171+
${SOC} ${BIOS} ${SPLASH} ${FLICKERNOISE} ${DATA} 2> /dev/null) | sort )
172+
173+
if [ "${MD5SUMS_SERVER}" == "${MD5SUMS_LOCAL}" ]; then
174+
echo "present files are identical to the ones on the server - do not download them again"
175+
else
176+
(cd "${WORKING_DIR}" ; rm -f ${STANDBY} ${SOC_RESCUE} ${BIOS_RESCUE} ${SPLASH_RESCUE} \
177+
${SOC} ${BIOS} ${SPLASH} ${FLICKERNOISE} ${DATA})
178+
wget -O "${WORKING_DIR}/${DATA}" "${BASE_URL_HTTP}/${VERSION}/${DATA}"
179+
call-download
180+
fi
181+
182+
call-jtag $1 $3
183+
exit 0
102184
fi
185+
186+
if [ "$1" == "--local-folder" ]; then
187+
echo "Not support yet!"
188+
exit 1
189+
fi
190+
191+
if [ "$1" == "--lock-flash" ]; then
192+
echo "Not support yet!"
193+
exit 1
194+
fi
195+
196+
if [ "$1" == "--bios-mac" ]; then
197+
echo "Not support yet!"
198+
exit 1
199+
fi
200+
201+
if [ "$1" == "--rc3" ]; then
202+
echo "Not support yet!"
203+
exit 1
204+
fi
205+
206+
207+
# nomally not reach here
208+
call-help
209+
exit 1

0 commit comments

Comments
 (0)
Please sign in to comment.