1
1
#! /bin/bash
2
2
3
3
# version of me
4
- __VERSION__=" 2011-04-21"
4
+ __VERSION__=" 2011-08-28"
5
+ echo " File name: $0 , Version of me: ${__VERSION__} "
5
6
6
- BASE_URL_HTTP=" http://www.milkymist.org/snapshots"
7
- VERSION=" latest"
8
- WORKING_DIR=" ${HOME} /.qi/milkymist/${VERSION} "
9
7
10
8
FJMEM=" fjmem.bit"
11
9
STANDBY=" standby.fpg"
@@ -18,47 +16,54 @@ SPLASH="splash.raw"
18
16
FLICKERNOISE=" flickernoise.fbi"
19
17
DATA=" data.flash5.bin"
20
18
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
22
29
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
+ "
31
33
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 ##########################################
52
61
53
- # UrJtag option
54
- NOVERIFY=" noverify"
55
- # DEBUG="debug all"
56
- DEBUG=" "
62
+ # UrJtag batch file
63
+ JTAG_BATCH_FILE=` mktemp`
57
64
58
- # UrJtag batch file
59
- BATCH_FILE=` mktemp`
60
- cat > ${BATCH_FILE} << EOF
61
- ${DEBUG}
65
+ cat > ${JTAG_BATCH_FILE} << EOF
66
+ ${JTAG_DEBUG}
62
67
63
68
cable milkymist
64
69
detect
@@ -70,33 +75,135 @@ frequency 6000000
70
75
detectflash 0
71
76
endian big
72
77
73
- flashmem 0x000000 ${WORKING_DIR} / ${STANDBY} ${NOVERIFY}
78
+ EOF
74
79
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}
79
81
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}
83
87
84
- flashmem 0x920000 ${WORKING_DIR} / ${FLICKERNOISE} ${NOVERIFY }
88
+ echo " lockflash 0x000000 55 " >> ${JTAG_BATCH_FILE }
85
89
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}
88
94
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
91
99
92
- jtag ${BATCH_FILE}
93
- if [ " $? " == " 0" ]; then
94
- rm -f ${BATCH_FILE}
100
+ echo " pld reconfigure" >> ${JTAG_BATCH_FILE}
95
101
102
+ jtag ${JTAG_BATCH_FILE}
96
103
echo " -------------------------------------------------------------"
104
+ echo " jtag batch file is ${JTAG_BATCH_FILE} "
97
105
echo " Your m1 was successfully reflashed. To boot the new software,"
98
106
echo " Please now press the middle button of your Milkymist One."
99
107
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
102
184
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