summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-01-13 03:05:29 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-01-13 03:05:29 +0000
commit8b926e98f82a8b6ffccc40a65388b6bbcd1c2538 (patch)
treed4e2c1794138b589276e8f61a54580038a161c67
parentc2dae8742cdd9724fcd0189a762df684c0fed2bd (diff)
downloadrockbox-8b926e98f82a8b6ffccc40a65388b6bbcd1c2538.tar.gz
rockbox-8b926e98f82a8b6ffccc40a65388b6bbcd1c2538.zip
Add Sansa Clip+ target to test mkamsboot
UNTESTED, could ver well brick your Clip+ If it works, booting should just be delayed by a small delay (perhaps not noticeable) Hopefully the Clipv2 checks will work for Clip+ and then we'll be able to test the other Clipv2 code (LCD/button) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24219 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/mkamsboot/README2
-rw-r--r--rbutil/mkamsboot/dualboot.c14
-rw-r--r--rbutil/mkamsboot/dualboot.h1
-rw-r--r--rbutil/mkamsboot/dualboot/Makefile7
-rw-r--r--rbutil/mkamsboot/dualboot/dualboot.S8
-rw-r--r--rbutil/mkamsboot/mkamsboot.c21
-rw-r--r--rbutil/mkamsboot/mkamsboot.h1
-rwxr-xr-xtools/configure36
-rw-r--r--tools/scramble.c4
9 files changed, 78 insertions, 16 deletions
diff --git a/rbutil/mkamsboot/README b/rbutil/mkamsboot/README
index 53f1fba9b9..a9eba35d21 100644
--- a/rbutil/mkamsboot/README
+++ b/rbutil/mkamsboot/README
@@ -23,6 +23,7 @@ Supported models
23---------------- 23----------------
24 24
25Sansa Clip : firmware version starting with "01." 25Sansa Clip : firmware version starting with "01."
26Sansa Clip+ : firmware version starting with "01."
26Sansa Clipv2: firmware version starting with "02." 27Sansa Clipv2: firmware version starting with "02."
27Sansa Fuze : firmware version starting with "01." 28Sansa Fuze : firmware version starting with "01."
28Sansa E200v2: firmware version starting with "03." 29Sansa E200v2: firmware version starting with "03."
@@ -37,6 +38,7 @@ For the firmware upgrade to happen, the firmware has to be named specially:
37 38
38clip v2 : m30pa.bin 39clip v2 : m30pa.bin
39clip : m300a.bin 40clip : m300a.bin
41clip+ : clppa.bin
40fuze : fuzea.bin 42fuze : fuzea.bin
41e200v2 : e200pa.bin 43e200v2 : e200pa.bin
42c200v2 : c200pa.bin 44c200v2 : c200pa.bin
diff --git a/rbutil/mkamsboot/dualboot.c b/rbutil/mkamsboot/dualboot.c
index 2eda3930cd..01a3083f58 100644
--- a/rbutil/mkamsboot/dualboot.c
+++ b/rbutil/mkamsboot/dualboot.c
@@ -116,3 +116,17 @@ unsigned char dualboot_clipv2[272] = {
116 0x01, 0x00, 0x83, 0xe2, 0x00, 0x20, 0xa0, 0xe3, 0x15, 0xff, 0x2f, 0xe1, 0x38, 0x00, 0x00, 0x00, 116 0x01, 0x00, 0x83, 0xe2, 0x00, 0x20, 0xa0, 0xe3, 0x15, 0xff, 0x2f, 0xe1, 0x38, 0x00, 0x00, 0x00,
117 0xff, 0xff, 0x0f, 0x00, 0x14, 0x00, 0x0f, 0xc8, 0x00, 0x00, 0x0b, 0xc8, 0x00, 0x00, 0x0e, 0xc8 117 0xff, 0xff, 0x0f, 0x00, 0x14, 0x00, 0x0f, 0xc8, 0x00, 0x00, 0x0b, 0xc8, 0x00, 0x00, 0x0e, 0xc8
118}; 118};
119unsigned char dualboot_clipplus[188] = {
120 0xa8, 0xf0, 0x9f, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1f, 0xe5, 0x20, 0x10, 0x1f, 0xe5,
124 0x01, 0x20, 0x40, 0xe0, 0x68, 0x30, 0x9f, 0xe5, 0x01, 0x40, 0x50, 0xe4, 0x01, 0x40, 0x43, 0xe4,
125 0x00, 0x00, 0x52, 0xe1, 0xfb, 0xff, 0xff, 0x1a, 0x02, 0x50, 0x83, 0xe2, 0x54, 0x00, 0x9f, 0xe5,
126 0x00, 0x10, 0x90, 0xe5, 0x01, 0x18, 0x81, 0xe3, 0x00, 0x10, 0x80, 0xe5, 0x05, 0x06, 0xa0, 0xe3,
127 0x01, 0x00, 0x50, 0xe2, 0xfd, 0xff, 0xff, 0x1a, 0x02, 0x00, 0x00, 0xea, 0x54, 0x00, 0x1f, 0xe5,
128 0x54, 0x10, 0x1f, 0xe5, 0x01, 0x00, 0x00, 0xea, 0x68, 0x00, 0x1f, 0xe5, 0x68, 0x10, 0x1f, 0xe5,
129 0x01, 0x40, 0x43, 0xe0, 0x01, 0x20, 0x50, 0xe4, 0x01, 0x20, 0x43, 0xe4, 0x04, 0x00, 0x53, 0xe1,
130 0xfb, 0xff, 0xff, 0x1a, 0x01, 0x00, 0x83, 0xe2, 0x00, 0x20, 0xa0, 0xe3, 0x15, 0xff, 0x2f, 0xe1,
131 0x38, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x14, 0x00, 0x0f, 0xc8
132};
diff --git a/rbutil/mkamsboot/dualboot.h b/rbutil/mkamsboot/dualboot.h
index b88a18240f..f3f1fc7654 100644
--- a/rbutil/mkamsboot/dualboot.h
+++ b/rbutil/mkamsboot/dualboot.h
@@ -7,3 +7,4 @@ extern unsigned char dualboot_c200v2[228];
7extern unsigned char dualboot_m200v4[204]; 7extern unsigned char dualboot_m200v4[204];
8extern unsigned char dualboot_fuze[228]; 8extern unsigned char dualboot_fuze[228];
9extern unsigned char dualboot_clipv2[272]; 9extern unsigned char dualboot_clipv2[272];
10extern unsigned char dualboot_clipplus[188];
diff --git a/rbutil/mkamsboot/dualboot/Makefile b/rbutil/mkamsboot/dualboot/Makefile
index 06b90c7fb9..94ec718574 100644
--- a/rbutil/mkamsboot/dualboot/Makefile
+++ b/rbutil/mkamsboot/dualboot/Makefile
@@ -4,8 +4,8 @@ CC=gcc
4# adding a new target. mkamsboot.c also needs to be edited to refer to these 4# adding a new target. mkamsboot.c also needs to be edited to refer to these
5# new images. 5# new images.
6 6
7BOOTOBJS = nrv2e_d8.o dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o dualboot_clipv2.o 7BOOTOBJS = nrv2e_d8.o dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o dualboot_clipv2.o dualboot_clipplus.o
8BOOTBINS = nrv2e_d8.arm-bin dualboot_clip.arm-bin dualboot_e200v2.arm-bin dualboot_c200v2.arm-bin dualboot_m200v4.arm-bin dualboot_fuze.arm-bin dualboot_clipv2.arm-bin 8BOOTBINS = nrv2e_d8.arm-bin dualboot_clip.arm-bin dualboot_e200v2.arm-bin dualboot_c200v2.arm-bin dualboot_m200v4.arm-bin dualboot_fuze.arm-bin dualboot_clipv2.arm-bin dualboot_clipplus.arm-bin
9 9
10all: dualboot.h 10all: dualboot.h
11 11
@@ -31,6 +31,9 @@ dualboot_c200v2.o: dualboot.S
31dualboot_clipv2.o: dualboot.S 31dualboot_clipv2.o: dualboot.S
32 arm-elf-gcc -DSANSA_CLIPV2 -c -o dualboot_clipv2.o dualboot.S 32 arm-elf-gcc -DSANSA_CLIPV2 -c -o dualboot_clipv2.o dualboot.S
33 33
34dualboot_clipplus.o: dualboot.S
35 arm-elf-gcc -DSANSA_CLIPPLUS -c -o dualboot_clipplus.o dualboot.S
36
34# Rules for the ucl unpack function 37# Rules for the ucl unpack function
35nrv2e_d8.o: nrv2e_d8.S 38nrv2e_d8.o: nrv2e_d8.S
36 arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.o nrv2e_d8.S 39 arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.o nrv2e_d8.S
diff --git a/rbutil/mkamsboot/dualboot/dualboot.S b/rbutil/mkamsboot/dualboot/dualboot.S
index 5210ba5160..fe1a64befb 100644
--- a/rbutil/mkamsboot/dualboot/dualboot.S
+++ b/rbutil/mkamsboot/dualboot/dualboot.S
@@ -21,7 +21,7 @@
21 21
22.text 22.text
23 23
24 #if defined(SANSA_CLIPV2) 24#if defined(SANSA_CLIPV2) || defined(SANSA_CLIPPLUS)
25.set RAM_SIZE, 0x100000 /* Use 1MB of SDRAM on v2 firmwares (bigger firmware) */ 25.set RAM_SIZE, 0x100000 /* Use 1MB of SDRAM on v2 firmwares (bigger firmware) */
26#else 26#else
27.set RAM_SIZE, 0x50000 /* Use full IRAM on v1 firmwares */ 27.set RAM_SIZE, 0x50000 /* Use full IRAM on v1 firmwares */
@@ -156,6 +156,12 @@ uclcopy:
156 156
157 cmp r1, #0 /* C3 = #0 means button pressed */ 157 cmp r1, #0 /* C3 = #0 means button pressed */
158 beq boot_of 158 beq boot_of
159#elif defined(SANSA_CLIPPLUS)
160 /* TODO */
161 mov r0, #0x500000 /* Approximately 5 seconds */
1621: subs r0, r0, #1 /* just to prove we are running */
163 bne 1b
164 b boot_of /* branch to OF */
159#elif defined(SANSA_C200V2) 165#elif defined(SANSA_C200V2)
160 /* check for RIGHT on C6, should changed to LEFT as soon as it 166 /* check for RIGHT on C6, should changed to LEFT as soon as it
161 * known in which pin that is in order for consistency */ 167 * known in which pin that is in order for consistency */
diff --git a/rbutil/mkamsboot/mkamsboot.c b/rbutil/mkamsboot/mkamsboot.c
index 8d40a1966c..d983d37853 100644
--- a/rbutil/mkamsboot/mkamsboot.c
+++ b/rbutil/mkamsboot/mkamsboot.c
@@ -109,7 +109,7 @@ execution to the uncompressed firmware.
109#define O_BINARY 0 109#define O_BINARY 0
110#endif 110#endif
111 111
112/* 4 for m200, 2 for e200/c200, 1 or 2 for fuze/clop */ 112/* 4 for m200, 2 for e200/c200, 1 or 2 for fuze/clip, 1 for clip+ */
113const unsigned short hw_revisions[] = { 113const unsigned short hw_revisions[] = {
114 [MODEL_FUZE] = 1, 114 [MODEL_FUZE] = 1,
115 [MODEL_CLIP] = 1, 115 [MODEL_CLIP] = 1,
@@ -117,9 +117,10 @@ const unsigned short hw_revisions[] = {
117 [MODEL_E200V2] = 2, 117 [MODEL_E200V2] = 2,
118 [MODEL_M200V4] = 4, 118 [MODEL_M200V4] = 4,
119 [MODEL_C200V2] = 2, 119 [MODEL_C200V2] = 2,
120 [MODEL_CLIPPLUS]= 1,
120}; 121};
121 122
122/* version 2 is used in Clipv2 and Fuzev2 firmwares */ 123/* version 2 is used in Clipv2, Clip+ and Fuzev2 firmwares */
123const unsigned short fw_revisions[] = { 124const unsigned short fw_revisions[] = {
124 [MODEL_FUZE] = 1, 125 [MODEL_FUZE] = 1,
125 [MODEL_CLIP] = 1, 126 [MODEL_CLIP] = 1,
@@ -127,6 +128,7 @@ const unsigned short fw_revisions[] = {
127 [MODEL_E200V2] = 1, 128 [MODEL_E200V2] = 1,
128 [MODEL_M200V4] = 1, 129 [MODEL_M200V4] = 1,
129 [MODEL_C200V2] = 1, 130 [MODEL_C200V2] = 1,
131 [MODEL_CLIPPLUS]= 2,
130}; 132};
131 133
132/* Descriptive name of these models */ 134/* Descriptive name of these models */
@@ -134,6 +136,7 @@ const char* model_names[] = {
134 [MODEL_FUZE] = "Fuze", 136 [MODEL_FUZE] = "Fuze",
135 [MODEL_CLIP] = "Clip", 137 [MODEL_CLIP] = "Clip",
136 [MODEL_CLIPV2] = "Clip", 138 [MODEL_CLIPV2] = "Clip",
139 [MODEL_CLIPPLUS]= "Clip+",
137 [MODEL_E200V2] = "e200", 140 [MODEL_E200V2] = "e200",
138 [MODEL_M200V4] = "m200", 141 [MODEL_M200V4] = "m200",
139 [MODEL_C200V2] = "c200", 142 [MODEL_C200V2] = "c200",
@@ -147,6 +150,7 @@ static const unsigned char* bootloaders[] = {
147 [MODEL_E200V2] = dualboot_e200v2, 150 [MODEL_E200V2] = dualboot_e200v2,
148 [MODEL_M200V4] = dualboot_m200v4, 151 [MODEL_M200V4] = dualboot_m200v4,
149 [MODEL_C200V2] = dualboot_c200v2, 152 [MODEL_C200V2] = dualboot_c200v2,
153 [MODEL_CLIPPLUS]= dualboot_clipplus,
150}; 154};
151 155
152/* Size of dualboot functions for these models */ 156/* Size of dualboot functions for these models */
@@ -157,6 +161,7 @@ const int bootloader_sizes[] = {
157 [MODEL_E200V2] = sizeof(dualboot_e200v2), 161 [MODEL_E200V2] = sizeof(dualboot_e200v2),
158 [MODEL_M200V4] = sizeof(dualboot_m200v4), 162 [MODEL_M200V4] = sizeof(dualboot_m200v4),
159 [MODEL_C200V2] = sizeof(dualboot_c200v2), 163 [MODEL_C200V2] = sizeof(dualboot_c200v2),
164 [MODEL_CLIPPLUS]= sizeof(dualboot_clipplus),
160}; 165};
161 166
162/* Model names used in the Rockbox header in ".sansa" files - these match the 167/* Model names used in the Rockbox header in ".sansa" files - these match the
@@ -168,6 +173,7 @@ static const char* rb_model_names[] = {
168 [MODEL_E200V2] = "e2v2", 173 [MODEL_E200V2] = "e2v2",
169 [MODEL_M200V4] = "m2v4", 174 [MODEL_M200V4] = "m2v4",
170 [MODEL_C200V2] = "c2v2", 175 [MODEL_C200V2] = "c2v2",
176 [MODEL_CLIPPLUS]= "cli+",
171}; 177};
172 178
173/* Model numbers used to initialise the checksum in the Rockbox header in 179/* Model numbers used to initialise the checksum in the Rockbox header in
@@ -178,7 +184,8 @@ static const int rb_model_num[] = {
178 [MODEL_CLIPV2] = 60, 184 [MODEL_CLIPV2] = 60,
179 [MODEL_E200V2] = 41, 185 [MODEL_E200V2] = 41,
180 [MODEL_M200V4] = 42, 186 [MODEL_M200V4] = 42,
181 [MODEL_C200V2] = 44 187 [MODEL_C200V2] = 44,
188 [MODEL_CLIPPLUS]= 66,
182}; 189};
183 190
184/* Checksums of unmodified original firmwares - for safety, and device 191/* Checksums of unmodified original firmwares - for safety, and device
@@ -212,7 +219,11 @@ static struct md5sums sansasums[] = {
212 { MODEL_CLIP, "1.01.32", "d835d12342500732ffb9c4ee54abec15" }, 219 { MODEL_CLIP, "1.01.32", "d835d12342500732ffb9c4ee54abec15" },
213 220
214 { MODEL_CLIPV2, "2.01.16", "c57fb3fcbe07c2c9b360f060938f80cb" }, 221 { MODEL_CLIPV2, "2.01.16", "c57fb3fcbe07c2c9b360f060938f80cb" },
215 { MODEL_CLIPV2, "2.01.32", "0ad3723e52022509089d938d0fbbf8c5" } 222 { MODEL_CLIPV2, "2.01.32", "0ad3723e52022509089d938d0fbbf8c5" },
223
224#if 0 /* uncomment when Clip+ support is tested */
225 { MODEL_CLIPPLUS, "01.02.09", "656d38114774c2001dc18e6726df3c5d" },
226#endif
216}; 227};
217 228
218#define NUM_MD5S (sizeof(sansasums)/sizeof(sansasums[0])) 229#define NUM_MD5S (sizeof(sansasums)/sizeof(sansasums[0]))
@@ -293,6 +304,8 @@ static int get_model(int model_id)
293 return MODEL_M200V4; 304 return MODEL_M200V4;
294 case 0x27: 305 case 0x27:
295 return MODEL_CLIPV2; 306 return MODEL_CLIPV2;
307 case 0x28:
308 return MODEL_CLIPPLUS;
296 } 309 }
297 310
298 return MODEL_UNKNOWN; 311 return MODEL_UNKNOWN;
diff --git a/rbutil/mkamsboot/mkamsboot.h b/rbutil/mkamsboot/mkamsboot.h
index 647770ff46..06fd329c8c 100644
--- a/rbutil/mkamsboot/mkamsboot.h
+++ b/rbutil/mkamsboot/mkamsboot.h
@@ -41,6 +41,7 @@ enum {
41 MODEL_E200V2, 41 MODEL_E200V2,
42 MODEL_M200V4, 42 MODEL_M200V4,
43 MODEL_C200V2, 43 MODEL_C200V2,
44 MODEL_CLIPPLUS,
44}; 45};
45 46
46 47
diff --git a/tools/configure b/tools/configure
index d14875aef1..33c272d1b1 100755
--- a/tools/configure
+++ b/tools/configure
@@ -900,14 +900,14 @@ cat <<EOF
900 ==Onda== 59) Sansa c200v2 900 ==Onda== 59) Sansa c200v2
901 120) VX747 ==Meizu== 60) Sansa Clipv2 901 120) VX747 ==Meizu== 60) Sansa Clipv2
902 121) VX767 110) M6SL 61) Sansa View 902 121) VX767 110) M6SL 61) Sansa View
903 122) VX747+ 111) M6SP 903 122) VX747+ 111) M6SP 62) Sansa Clip+
904 123) VX777 112) M3 ==Logik== 904 123) VX777 112) M3
905 80) DAX 1GB MP3/DAB 905 ==Logik==
906 ==Samsung== ==Tatung== 906 ==Samsung== ==Tatung== 80) DAX 1GB MP3/DAB
907 140) YH-820 150) Elio TPJ-1022 ==Lyre project== 907 140) YH-820 150) Elio TPJ-1022
908 141) YH-920 130) Lyre proto 1 908 141) YH-920 ==Lyre project==1
909 142) YH-925 131) Mini2440 909 142) YH-925 130) Lyre proto 1
910 143) YP-S3 910 143) YP-S3 131) Mini2440
911EOF 911EOF
912 912
913 buildfor=`input`; 913 buildfor=`input`;
@@ -2048,6 +2048,26 @@ fi
2048 t_model="sansa-view" 2048 t_model="sansa-view"
2049 ;; 2049 ;;
2050 2050
2051 62|sansaclipplus)
2052 target_id=66
2053 modelname="sansaclipplus"
2054 target="-DSANSA_CLIPPLUS"
2055 memory=8
2056 arm926ejscc
2057 bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
2058 bmp2rb_native="$bmp2rb_mono"
2059 tool="$rootdir/tools/scramble -add=cli+"
2060 output="rockbox.sansa"
2061 bootoutput="bootloader-clipplus.sansa"
2062 appextra="recorder:gui"
2063 plugins="yes"
2064 swcodec="yes"
2065 toolset=$scramblebitmaptools
2066 t_cpu="arm"
2067 t_manufacturer="as3525"
2068 t_model="sansa-clipplus"
2069 ;;
2070
2051 150|tatungtpj1022) 2071 150|tatungtpj1022)
2052 target_id=25 2072 target_id=25
2053 modelname="tatungtpj1022" 2073 modelname="tatungtpj1022"
diff --git a/tools/scramble.c b/tools/scramble.c
index 9bfdbda905..3ee8b26aa4 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -125,7 +125,7 @@ void usage(void)
125 "\t tpj2, c200, e200, giga, gigs, m100, m500, d2,\n"); 125 "\t tpj2, c200, e200, giga, gigs, m100, m500, d2,\n");
126 printf("\t 9200, 1630, 6330, ldax, m200, c100, clip, e2v2,\n" 126 printf("\t 9200, 1630, 6330, ldax, m200, c100, clip, e2v2,\n"
127 "\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n" 127 "\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n"
128 "\t 747p, x777, nn2g, m244)\n"); 128 "\t 747p, x777, nn2g, m244, cli+)\n");
129 printf("\nNo option results in Archos standard player/recorder format.\n"); 129 printf("\nNo option results in Archos standard player/recorder format.\n");
130 130
131 exit(1); 131 exit(1);
@@ -320,6 +320,8 @@ int main (int argc, char** argv)
320 modelnum = 64; 320 modelnum = 64;
321 else if (!strcmp(&argv[1][5], "6330")) /* Philips HDD6330 */ 321 else if (!strcmp(&argv[1][5], "6330")) /* Philips HDD6330 */
322 modelnum = 65; 322 modelnum = 65;
323 else if (!strcmp(&argv[1][5], "cli+")) /* Sansa Clip+ */
324 modelnum = 66;
323 else if (!strcmp(&argv[1][5], "m244")) 325 else if (!strcmp(&argv[1][5], "m244"))
324 modelnum = 131; 326 modelnum = 131;
325 else { 327 else {