summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenna Fox <a@creativepony.com>2012-09-25 09:32:31 +1000
committerJenna Fox <a@creativepony.com>2012-09-25 09:32:31 +1000
commitae4a95e323175420625b46b64a963187956187db (patch)
tree3c74b203fe3f79fad9275358f1811f7deaabf6f2
parent2b80821ecbada3d3729d7e29080ee9b0e654e558 (diff)
downloadmicronucleus-ae4a95e323175420625b46b64a963187956187db.tar.gz
micronucleus-ae4a95e323175420625b46b64a963187956187db.tar.bz2
micronucleus-ae4a95e323175420625b46b64a963187956187db.zip
Switched to new digistump vid/pid, removed string manufacturer and product name to try shave some more bytes off
also adding better comments to firmware/main.c for future hackers
-rw-r--r--firmware/boot-at-addr-0.binbin2158 -> 0 bytes
-rw-r--r--firmware/libs-device/osccal.c.lst20
-rwxr-xr-xfirmware/main.binbin8928 -> 8756 bytes
-rw-r--r--firmware/main.c32
-rw-r--r--firmware/main.c.lst1052
-rw-r--r--firmware/main.hex273
-rw-r--r--firmware/main.map114
-rw-r--r--firmware/main.obin5728 -> 5416 bytes
-rw-r--r--firmware/nyan-cat-dump.binbin7646 -> 0 bytes
-rw-r--r--firmware/temp-dump.binbin8162 -> 0 bytes
-rw-r--r--firmware/upload.rb2
-rw-r--r--firmware/usbconfig.h14
-rw-r--r--firmware/usbdrv/oddebug.c.lst16
13 files changed, 736 insertions, 787 deletions
diff --git a/firmware/boot-at-addr-0.bin b/firmware/boot-at-addr-0.bin
deleted file mode 100644
index 3db2a10..0000000
--- a/firmware/boot-at-addr-0.bin
+++ /dev/null
Binary files differ
diff --git a/firmware/libs-device/osccal.c.lst b/firmware/libs-device/osccal.c.lst
index 47df64a..72f5995 100644
--- a/firmware/libs-device/osccal.c.lst
+++ b/firmware/libs-device/osccal.c.lst
@@ -1,4 +1,4 @@
-GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s page 1
+GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s page 1
1 .file "osccal.c"
@@ -58,7 +58,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s page
55 004a 9095 com r25
56 004c 8195 neg r24
57 004e 9F4F sbci r25,lo8(-1)
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s page 2
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s page 2
58 .L6:
@@ -89,18 +89,18 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s page
83 007a FF90 pop r15
84 007c 0895 ret
85 .size calibrateOscillator, .-calibrateOscillator
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s page 3
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s page 3
DEFINED SYMBOLS
*ABS*:00000000 osccal.c
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:2 *ABS*:0000003f __SREG__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:3 *ABS*:0000003e __SP_H__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:4 *ABS*:0000003d __SP_L__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:5 *ABS*:00000034 __CCP__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:6 *ABS*:00000000 __tmp_reg__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:7 *ABS*:00000001 __zero_reg__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccgvKHMl.s:11 .text:00000000 calibrateOscillator
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:2 *ABS*:0000003f __SREG__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:3 *ABS*:0000003e __SP_H__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:4 *ABS*:0000003d __SP_L__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:5 *ABS*:00000034 __CCP__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:6 *ABS*:00000000 __tmp_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:7 *ABS*:00000001 __zero_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cctxPubr.s:11 .text:00000000 calibrateOscillator
UNDEFINED SYMBOLS
usbMeasureFrameLength
diff --git a/firmware/main.bin b/firmware/main.bin
index ead2242..8d7639c 100755
--- a/firmware/main.bin
+++ b/firmware/main.bin
Binary files differ
diff --git a/firmware/main.c b/firmware/main.c
index a2ed8b3..3d746af 100644
--- a/firmware/main.c
+++ b/firmware/main.c
@@ -9,7 +9,11 @@
* This Revision: $Id: main.c 786 2010-05-30 20:41:40Z cs $
*/
-#define UBOOT_VERSION 1
+#define UBOOT_VERSION 2
+// how many milliseconds should host wait till it sends another erase or write?
+// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms
+#define UBOOT_WRITE_SLEEP 8
+
#include <avr/io.h>
#include <avr/interrupt.h>
@@ -25,10 +29,6 @@ static void leaveBootloader() __attribute__((__noreturn__));
#include "bootloaderconfig.h"
#include "usbdrv/usbdrv.c"
-// how many milliseconds should host wait till it sends another erase or write?
-// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms
-#define UBOOT_WRITE_SLEEP 8
-
/* ------------------------------------------------------------------------ */
#ifndef ulong
@@ -67,18 +67,23 @@ static void leaveBootloader() __attribute__((__noreturn__));
// } longConverter_t;
//////// Stuff Bluebie Added
-#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - 6)
+// postscript are the few bytes at the end of programmable memory which store tinyVectors
+// and used to in USBaspLoader-tiny85 store the checksum iirc
+#define POSTSCRIPT_SIZE 6 /* maybe it could be 4 now we do not have checksums? */
+#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */
-// outstanding events for the mainloop to deal with
+// events system schedules functions to run in the main loop
static uchar events = 0; // bitmap of events to run
#define EVENT_ERASE_APPLICATION 1
#define EVENT_WRITE_PAGE 2
#define EVENT_FINISH 4
+// controls state of events
#define fireEvent(event) events |= (event)
#define isEvent(event) (events & (event))
#define clearEvents() events = 0
+// length of bytes to write in to flash memory in upcomming usbFunctionWrite calls
static uchar writeLength;
// becomes 1 when some programming happened
@@ -90,8 +95,8 @@ static uchar didWriteSomething = 0;
-static uint16_t vectorTemp[2];
-static addr_t currentAddress; /* in bytes */
+static uint16_t vectorTemp[2]; // remember data to create tinyVector table before BOOTLOADER_ADDRESS
+static addr_t currentAddress; // current progmem address, used for erasing and writing
/* ------------------------------------------------------------------------ */
@@ -104,11 +109,14 @@ static uchar usbFunctionWrite(uchar *data, uchar length);
static inline void initForUsbConnectivity(void);
static inline void tiny85FlashInit(void);
static inline void tiny85FlashWrites(void);
+static inline void tiny85FinishWriting(void);
static inline __attribute__((noreturn)) void leaveBootloader(void);
-
+// erase any existing application and write in jumps for usb interrupt and reset to bootloader
+// - Because flash can be erased once and programmed several times, we can write the bootloader
+// - vectors in now, and write in the application stuff around them later.
+// - if vectors weren't written back in immidately, usb would fail.
static inline void eraseApplication(void) {
- // xxxxxx erase all pages starting from end of application section down to page 1 (leaving page 0)
// erase all pages (every last one!)
currentAddress = BOOTLOADER_ADDRESS;
cli();
@@ -236,7 +244,7 @@ static uchar usbFunctionWrite(uchar *data, uchar length) {
}
// make sure we don't write over the bootloader!
- if (currentAddress >= BOOTLOADER_ADDRESS - 6) {
+ if (currentAddress >= PROGMEM_SIZE) {
__boot_page_fill_clear();
break;
}
diff --git a/firmware/main.c.lst b/firmware/main.c.lst
index 88183db..3cdf41b 100644
--- a/firmware/main.c.lst
+++ b/firmware/main.c.lst
@@ -1,4 +1,4 @@
-GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 1
+GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 1
1 .file "main.c"
@@ -16,7 +16,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
13 0000 81E0 ldi r24,lo8(1)
14 0002 8093 0000 sts didWriteSomething,r24
15 /* #APP */
- 16 ; 128 "main.c" 1
+ 16 ; 129 "main.c" 1
17 0006 F894 cli
18 ; 0 "" 2
19 /* #NOAPP */
@@ -25,7 +25,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
22 0010 3297 sbiw r30,2
23 0012 85E0 ldi r24,lo8(5)
24 /* #APP */
- 25 ; 129 "main.c" 1
+ 25 ; 130 "main.c" 1
26 0014 8093 5700 sts 87, r24
27 0018 E895 spm
28
@@ -36,7 +36,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
33 001c 00FC sbrc __tmp_reg__,0
34 001e 00C0 rjmp .L2
35 /* #APP */
- 36 ; 131 "main.c" 1
+ 36 ; 132 "main.c" 1
37 0020 7894 sei
38 ; 0 "" 2
39 /* epilogue start */
@@ -58,7 +58,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
55 0038 87E1 ldi r24,hi8(5948)
56 003a EC33 cpi r30,lo8(5948)
57 003c F807 cpc r31,r24
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 2
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 2
58 003e 01F4 brne .L7
@@ -82,20 +82,20 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
76 0066 3BEC ldi r19,hi8(-13409)
77 .L8:
78 /* #APP */
- 79 ; 165 "main.c" 1
+ 79 ; 166 "main.c" 1
80 0068 F894 cli
81 ; 0 "" 2
82 /* #NOAPP */
83 006a 81E0 ldi r24,lo8(1)
84 /* #APP */
- 85 ; 166 "main.c" 1
+ 85 ; 167 "main.c" 1
86 006c 0901 movw r0, r18
87 006e 8093 5700 sts 87, r24
88 0072 E895 spm
89 0074 1124 clr r1
90
91 ; 0 "" 2
- 92 ; 167 "main.c" 1
+ 92 ; 168 "main.c" 1
93 0076 7894 sei
94 ; 0 "" 2
95 /* #NOAPP */
@@ -107,7 +107,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
101 .L5:
102 0084 81E1 ldi r24,lo8(17)
103 /* #APP */
- 104 ; 163 "main.c" 1
+ 104 ; 164 "main.c" 1
105 0086 8093 5700 sts 87, r24
106 008a E895 spm
107
@@ -118,7 +118,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
112 .type fillFlashWithVectors, @function
113 fillFlashWithVectors:
114 008e CF93 push r28
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 3
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 3
115 0090 DF93 push r29
@@ -149,16 +149,16 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
140 /* prologue: naked */
141 /* frame size = 0 */
142 /* #APP */
- 143 ; 263 "main.c" 1
+ 143 ; 264 "main.c" 1
144 0000 00EB ldi r16, 0xB0
145 ; 0 "" 2
- 146 ; 264 "main.c" 1
+ 146 ; 265 "main.c" 1
147 0002 0F93 push r16
148 ; 0 "" 2
- 149 ; 265 "main.c" 1
+ 149 ; 266 "main.c" 1
150 0004 07E0 ldi r16, 0x07
151 ; 0 "" 2
- 152 ; 266 "main.c" 1
+ 152 ; 267 "main.c" 1
153 0006 0F93 push r16
154 ; 0 "" 2
155 /* epilogue start */
@@ -172,13 +172,13 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
163 /* frame size = 0 */
164 00b4 88E1 ldi r24,lo8(24)
165 /* #APP */
- 166 ; 333 "main.c" 1
+ 166 ; 334 "main.c" 1
167 00b6 0FB6 in __tmp_reg__, __SREG__
168 00b8 F894 cli
169 00ba 81BD out 33, r24
170 00bc 11BC out 33, __zero_reg__
171 00be 0FBE out __SREG__,__tmp_reg__
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 4
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 4
172
@@ -187,7 +187,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
175 00c0 E0E0 ldi r30,lo8(0)
176 00c2 F0E0 ldi r31,hi8(0)
177 /* #APP */
- 178 ; 284 "main.c" 1
+ 178 ; 285 "main.c" 1
179 00c4 8591 lpm r24, Z+
180 00c6 9491 lpm r25, Z
181
@@ -199,7 +199,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
187 00ce E4E0 ldi r30,lo8(4)
188 00d0 F0E0 ldi r31,hi8(4)
189 /* #APP */
- 190 ; 285 "main.c" 1
+ 190 ; 286 "main.c" 1
191 00d2 8591 lpm r24, Z+
192 00d4 9491 lpm r25, Z
193
@@ -233,16 +233,16 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
221 00fe 01F4 brne .L18
222 0100 BB98 cbi 55-32,3
223 /* #APP */
- 224 ; 277 "main.c" 1
+ 224 ; 278 "main.c" 1
225 0102 7894 sei
226 ; 0 "" 2
227 /* #NOAPP */
228 0104 EE24 clr r14
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 5
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 5
229 0106 FF24 clr r15
- 230 .L74:
+ 230 .L72:
231 0108 1091 0000 lds r17,usbRxLen
232 010c 1350 subi r17,lo8(-(-3))
233 010e 17FD sbrc r17,7
@@ -298,13 +298,13 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
283 0184 9230 cpi r25,lo8(2)
284 0186 01F4 brne .L28
285 0188 8160 ori r24,lo8(1)
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 6
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 6
- 286 018a 00C0 rjmp .L78
+ 286 018a 00C0 rjmp .L76
287 .L28:
288 018c 8460 ori r24,lo8(4)
- 289 .L78:
+ 289 .L76:
290 018e 8093 0000 sts events,r24
291 0192 20E0 ldi r18,lo8(0)
292 0194 00C0 rjmp .L24
@@ -322,7 +322,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
304 01ac 9530 cpi r25,lo8(5)
305 01ae 01F4 brne .L31
306 01b0 8093 0000 sts usbNewDeviceAddr,r24
- 307 01b4 00C0 rjmp .L41
+ 307 01b4 00C0 rjmp .L39
308 .L31:
309 01b6 9630 cpi r25,lo8(6)
310 01b8 01F4 brne .L32
@@ -331,13 +331,13 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
313 01be 01F4 brne .L33
314 01c0 80E0 ldi r24,lo8(usbDescriptorDevice)
315 01c2 90E0 ldi r25,hi8(usbDescriptorDevice)
- 316 01c4 00C0 rjmp .L76
+ 316 01c4 00C0 rjmp .L74
317 .L33:
318 01c6 8230 cpi r24,lo8(2)
319 01c8 01F4 brne .L35
320 01ca 80E0 ldi r24,lo8(usbDescriptorConfiguration)
321 01cc 90E0 ldi r25,hi8(usbDescriptorConfiguration)
- 322 .L76:
+ 322 .L74:
323 01ce 9093 0000 sts (usbMsgPtr)+1,r25
324 01d2 8093 0000 sts usbMsgPtr,r24
325 01d6 22E1 ldi r18,lo8(18)
@@ -347,553 +347,499 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page
329 01dc 01F4 brne .L36
330 01de 8A81 ldd r24,Y+2
331 01e0 8823 tst r24
- 332 01e2 01F4 brne .L37
+ 332 01e2 01F4 brne .L36
333 01e4 80E0 ldi r24,lo8(usbDescriptorString0)
334 01e6 90E0 ldi r25,hi8(usbDescriptorString0)
335 01e8 9093 0000 sts (usbMsgPtr)+1,r25
336 01ec 8093 0000 sts usbMsgPtr,r24
337 01f0 24E0 ldi r18,lo8(4)
338 01f2 00C0 rjmp .L34
- 339 .L37:
- 340 01f4 8130 cpi r24,lo8(1)
- 341 01f6 01F4 brne .L38
- 342 01f8 80E0 ldi r24,lo8(usbDescriptorStringVendor)
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 7
-
-
- 343 01fa 90E0 ldi r25,hi8(usbDescriptorStringVendor)
- 344 01fc 9093 0000 sts (usbMsgPtr)+1,r25
- 345 0200 8093 0000 sts usbMsgPtr,r24
- 346 0204 22E2 ldi r18,lo8(34)
- 347 0206 00C0 rjmp .L34
- 348 .L38:
- 349 0208 8230 cpi r24,lo8(2)
- 350 020a 01F4 brne .L36
- 351 020c 80E0 ldi r24,lo8(usbDescriptorStringDevice)
- 352 020e 90E0 ldi r25,hi8(usbDescriptorStringDevice)
- 353 0210 9093 0000 sts (usbMsgPtr)+1,r25
- 354 0214 8093 0000 sts usbMsgPtr,r24
- 355 0218 2CE0 ldi r18,lo8(12)
- 356 021a 00C0 rjmp .L34
- 357 .L36:
- 358 021c 20E0 ldi r18,lo8(0)
- 359 .L34:
- 360 021e 80E4 ldi r24,lo8(64)
- 361 0220 8093 0000 sts usbMsgFlags,r24
- 362 0224 00C0 rjmp .L24
- 363 .L32:
- 364 0226 9830 cpi r25,lo8(8)
- 365 0228 01F4 brne .L39
- 366 022a 80E0 ldi r24,lo8(usbConfiguration)
- 367 022c 90E0 ldi r25,hi8(usbConfiguration)
- 368 022e 00C0 rjmp .L77
- 369 .L39:
- 370 0230 9930 cpi r25,lo8(9)
- 371 0232 01F4 brne .L40
- 372 0234 8093 0000 sts usbConfiguration,r24
- 373 0238 00C0 rjmp .L41
- 374 .L40:
- 375 023a 9A30 cpi r25,lo8(10)
- 376 023c 01F4 brne .L41
- 377 023e 80E0 ldi r24,lo8(usbTxBuf+9)
- 378 0240 90E0 ldi r25,hi8(usbTxBuf+9)
- 379 .L77:
- 380 0242 21E0 ldi r18,lo8(1)
- 381 0244 00C0 rjmp .L30
- 382 .L41:
- 383 0246 80E0 ldi r24,lo8(usbTxBuf+9)
- 384 0248 90E0 ldi r25,hi8(usbTxBuf+9)
- 385 024a 20E0 ldi r18,lo8(0)
- 386 .L30:
- 387 024c 9093 0000 sts (usbMsgPtr)+1,r25
- 388 0250 8093 0000 sts usbMsgPtr,r24
- 389 0254 00C0 rjmp .L24
- 390 .L26:
- 391 0256 9E81 ldd r25,Y+6
- 392 .L27:
- 393 0258 80E8 ldi r24,lo8(-128)
- 394 025a 8093 0000 sts usbMsgFlags,r24
- 395 025e 00C0 rjmp .L42
- 396 .L24:
- 397 0260 8F81 ldd r24,Y+7
- 398 0262 8823 tst r24
- 399 0264 01F4 brne .L43
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 8
-
-
- 400 0266 9E81 ldd r25,Y+6
- 401 0268 9217 cp r25,r18
- 402 026a 00F0 brlo .L42
- 403 .L43:
- 404 026c 922F mov r25,r18
- 405 .L42:
- 406 026e 9093 0000 sts usbMsgLen,r25
- 407 0272 00C0 rjmp .L21
- 408 .L20:
- 409 0274 8091 0000 lds r24,usbMsgFlags
- 410 0278 87FF sbrs r24,7
- 411 027a 00C0 rjmp .L21
- 412 027c 8091 0000 lds r24,writeLength
- 413 0280 811B sub r24,r17
- 414 0282 8093 0000 sts writeLength,r24
- 415 .L48:
- 416 0286 8091 0000 lds r24,currentAddress
- 417 028a 9091 0000 lds r25,(currentAddress)+1
- 418 028e 0097 sbiw r24,0
- 419 0290 01F4 brne .L44
- 420 0292 8881 ld r24,Y
- 421 0294 9981 ldd r25,Y+1
- 422 0296 9093 0000 sts (vectorTemp)+1,r25
- 423 029a 8093 0000 sts vectorTemp,r24
- 424 029e 00C0 rjmp .L45
- 425 .L44:
- 426 02a0 8430 cpi r24,4
- 427 02a2 9105 cpc r25,__zero_reg__
- 428 02a4 01F4 brne .L46
- 429 02a6 8881 ld r24,Y
- 430 02a8 9981 ldd r25,Y+1
- 431 02aa 9093 0000 sts (vectorTemp+2)+1,r25
- 432 02ae 8093 0000 sts vectorTemp+2,r24
- 433 02b2 00C0 rjmp .L45
- 434 .L46:
- 435 02b4 8A53 subi r24,lo8(5946)
- 436 02b6 9741 sbci r25,hi8(5946)
- 437 02b8 00F0 brlo .L45
- 438 02ba 81E1 ldi r24,lo8(17)
- 439 /* #APP */
- 440 ; 240 "main.c" 1
- 441 02bc 8093 5700 sts 87, r24
- 442 02c0 E895 spm
- 443
- 444 ; 0 "" 2
- 445 /* #NOAPP */
- 446 02c2 00C0 rjmp .L47
- 447 .L45:
- 448 02c4 8881 ld r24,Y
- 449 02c6 9981 ldd r25,Y+1
- 450 02c8 00D0 rcall writeWordToPageBuffer
- 451 02ca 1250 subi r17,lo8(-(-2))
- 452 02cc 01F0 breq .L47
- 453 02ce 2296 adiw r28,2
- 454 02d0 00C0 rjmp .L48
- 455 .L47:
- 456 02d2 8091 0000 lds r24,writeLength
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 9
-
-
- 457 02d6 8823 tst r24
- 458 02d8 01F4 brne .L21
- 459 02da 8091 0000 lds r24,events
- 460 02de 8260 ori r24,lo8(2)
- 461 02e0 8093 0000 sts events,r24
- 462 02e4 1092 0000 sts usbMsgLen,__zero_reg__
- 463 .L21:
- 464 02e8 1092 0000 sts usbRxLen,__zero_reg__
- 465 .L19:
- 466 02ec 8091 0000 lds r24,usbTxLen
- 467 02f0 84FF sbrs r24,4
- 468 02f2 00C0 rjmp .L49
- 469 02f4 8091 0000 lds r24,usbMsgLen
- 470 02f8 8F3F cpi r24,lo8(-1)
- 471 02fa 01F0 breq .L49
- 472 02fc 182F mov r17,r24
- 473 02fe 8930 cpi r24,lo8(9)
- 474 0300 00F0 brlo .L50
- 475 0302 18E0 ldi r17,lo8(8)
- 476 .L50:
- 477 0304 811B sub r24,r17
- 478 0306 8093 0000 sts usbMsgLen,r24
- 479 030a 8091 0000 lds r24,usbTxBuf
- 480 030e 98E8 ldi r25,lo8(-120)
- 481 0310 8927 eor r24,r25
- 482 0312 8093 0000 sts usbTxBuf,r24
- 483 0316 1123 tst r17
- 484 0318 01F0 breq .L51
- 485 031a E091 0000 lds r30,usbMsgPtr
- 486 031e F091 0000 lds r31,(usbMsgPtr)+1
- 487 0322 8091 0000 lds r24,usbMsgFlags
- 488 0326 86FF sbrs r24,6
- 489 0328 00C0 rjmp .L52
- 490 032a 912F mov r25,r17
- 491 032c A0E0 ldi r26,lo8(usbTxBuf+1)
- 492 032e B0E0 ldi r27,hi8(usbTxBuf+1)
- 493 .L53:
- 494 /* #APP */
- 495 ; 504 "usbdrv/usbdrv.c" 1
- 496 0330 8491 lpm r24, Z
- 497
- 498 ; 0 "" 2
- 499 /* #NOAPP */
- 500 0332 8D93 st X+,r24
- 501 0334 3196 adiw r30,1
- 502 0336 9150 subi r25,lo8(-(-1))
- 503 0338 01F4 brne .L53
- 504 033a 00C0 rjmp .L54
- 505 .L52:
- 506 033c 912F mov r25,r17
- 507 033e A0E0 ldi r26,lo8(usbTxBuf+1)
- 508 0340 B0E0 ldi r27,hi8(usbTxBuf+1)
- 509 .L55:
- 510 0342 8191 ld r24,Z+
- 511 0344 8D93 st X+,r24
- 512 0346 9150 subi r25,lo8(-(-1))
- 513 0348 01F4 brne .L55
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 10
-
-
- 514 .L54:
- 515 034a F093 0000 sts (usbMsgPtr)+1,r31
- 516 034e E093 0000 sts usbMsgPtr,r30
- 517 .L51:
- 518 0352 80E0 ldi r24,lo8(usbTxBuf+1)
- 519 0354 90E0 ldi r25,hi8(usbTxBuf+1)
- 520 0356 612F mov r22,r17
- 521 0358 00D0 rcall usbCrc16Append
- 522 035a 612F mov r22,r17
- 523 035c 6C5F subi r22,lo8(-(4))
- 524 035e 6C30 cpi r22,lo8(12)
- 525 0360 01F0 breq .L56
- 526 0362 8FEF ldi r24,lo8(-1)
- 527 0364 8093 0000 sts usbMsgLen,r24
- 528 .L56:
- 529 0368 6093 0000 sts usbTxLen,r22
- 530 .L49:
- 531 036c 94E1 ldi r25,lo8(20)
- 532 .L58:
- 533 036e 86B3 in r24,54-32
- 534 0370 8871 andi r24,lo8(24)
- 535 0372 01F4 brne .L57
- 536 0374 9150 subi r25,lo8(-(-1))
- 537 0376 01F4 brne .L58
- 538 0378 1092 0000 sts usbNewDeviceAddr,__zero_reg__
- 539 037c 1092 0000 sts usbDeviceAddr,__zero_reg__
- 540 .L57:
- 541 0380 10E0 ldi r17,lo8(0)
- 542 0382 9923 tst r25
- 543 0384 01F4 brne .L59
- 544 0386 11E0 ldi r17,lo8(1)
- 545 .L59:
- 546 0388 8091 0000 lds r24,wasReset.1564
- 547 038c 8117 cp r24,r17
- 548 038e 01F0 breq .L60
- 549 0390 1123 tst r17
- 550 0392 01F4 brne .L61
- 551 /* #APP */
- 552 ; 557 "usbdrv/usbdrv.c" 1
- 553 0394 F894 cli
- 554 ; 0 "" 2
- 555 /* #NOAPP */
- 556 0396 00D0 rcall calibrateOscillator
- 557 /* #APP */
- 558 ; 557 "usbdrv/usbdrv.c" 1
- 559 0398 7894 sei
- 560 ; 0 "" 2
- 561 /* #NOAPP */
- 562 .L61:
- 563 039a 1093 0000 sts wasReset.1564,r17
- 564 .L60:
- 565 039e 8CE9 ldi r24,lo8(412)
- 566 03a0 91E0 ldi r25,hi8(412)
- 567 /* #APP */
- 568 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
- 569 03a2 0197 1: sbiw r24,1
- 570 03a4 01F4 brne 1b
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 11
-
-
- 571 ; 0 "" 2
- 572 /* #NOAPP */
- 573 03a6 8091 0000 lds r24,events
- 574 03aa 8823 tst r24
- 575 03ac 01F0 breq .L62
- 576 03ae EE24 clr r14
- 577 03b0 FF24 clr r15
- 578 03b2 00C0 rjmp .L63
- 579 .L62:
- 580 03b4 0894 sec
- 581 03b6 E11C adc r14,__zero_reg__
- 582 03b8 F11C adc r15,__zero_reg__
- 583 .L63:
- 584 03ba 182F mov r17,r24
- 585 03bc 80FF sbrs r24,0
- 586 03be 00C0 rjmp .L64
- 587 /* #APP */
- 588 ; 114 "main.c" 1
- 589 03c0 F894 cli
- 590 ; 0 "" 2
- 591 /* #NOAPP */
- 592 03c2 E0E4 ldi r30,lo8(5952)
- 593 03c4 F7E1 ldi r31,hi8(5952)
- 594 .L66:
- 595 03c6 E054 subi r30,lo8(-(-64))
- 596 03c8 F040 sbci r31,hi8(-(-64))
- 597 03ca 83E0 ldi r24,lo8(3)
- 598 /* #APP */
- 599 ; 118 "main.c" 1
- 600 03cc 8093 5700 sts 87, r24
- 601 03d0 E895 spm
- 602
- 603 ; 0 "" 2
- 604 /* #NOAPP */
- 605 .L65:
- 606 03d2 07B6 in __tmp_reg__,87-32
- 607 03d4 00FC sbrc __tmp_reg__,0
- 608 03d6 00C0 rjmp .L65
- 609 03d8 3097 sbiw r30,0
- 610 03da 01F4 brne .L66
- 611 03dc 1092 0000 sts (currentAddress)+1,__zero_reg__
- 612 03e0 1092 0000 sts currentAddress,__zero_reg__
- 613 03e4 00D0 rcall fillFlashWithVectors
- 614 /* #APP */
- 615 ; 123 "main.c" 1
- 616 03e6 7894 sei
- 617 ; 0 "" 2
- 618 /* #NOAPP */
- 619 .L64:
- 620 03e8 11FF sbrs r17,1
- 621 03ea 00C0 rjmp .L67
- 622 03ec 8AE3 ldi r24,lo8(8250)
- 623 03ee 90E2 ldi r25,hi8(8250)
- 624 /* #APP */
- 625 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
- 626 03f0 0197 1: sbiw r24,1
- 627 03f2 01F4 brne 1b
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 12
-
-
- 628 ; 0 "" 2
- 629 /* #NOAPP */
- 630 03f4 8091 0000 lds r24,currentAddress
- 631 03f8 9091 0000 lds r25,(currentAddress)+1
- 632 03fc 8F73 andi r24,lo8(63)
- 633 03fe 9070 andi r25,hi8(63)
- 634 0400 892B or r24,r25
- 635 0402 01F0 breq .L68
- 636 0404 00D0 rcall fillFlashWithVectors
- 637 0406 00C0 rjmp .L67
- 638 .L68:
- 639 0408 00D0 rcall writeFlashPage
- 640 .L67:
- 641 040a 12FF sbrs r17,2
- 642 040c 00C0 rjmp .L69
- 643 040e 8091 0000 lds r24,didWriteSomething
- 644 0412 8823 tst r24
- 645 0414 01F4 brne .L70
- 646 0416 00C0 rjmp .L71
- 647 .L72:
- 648 0418 00D0 rcall fillFlashWithVectors
- 649 .L70:
- 650 041a 8091 0000 lds r24,currentAddress
- 651 041e 9091 0000 lds r25,(currentAddress)+1
- 652 0422 8054 subi r24,lo8(5952)
- 653 0424 9741 sbci r25,hi8(5952)
- 654 0426 00F0 brlo .L72
+ 339 .L36:
+ 340 01f4 20E0 ldi r18,lo8(0)
+ 341 .L34:
+ 342 01f6 80E4 ldi r24,lo8(64)
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 7
+
+
+ 343 01f8 8093 0000 sts usbMsgFlags,r24
+ 344 01fc 00C0 rjmp .L24
+ 345 .L32:
+ 346 01fe 9830 cpi r25,lo8(8)
+ 347 0200 01F4 brne .L37
+ 348 0202 80E0 ldi r24,lo8(usbConfiguration)
+ 349 0204 90E0 ldi r25,hi8(usbConfiguration)
+ 350 0206 00C0 rjmp .L75
+ 351 .L37:
+ 352 0208 9930 cpi r25,lo8(9)
+ 353 020a 01F4 brne .L38
+ 354 020c 8093 0000 sts usbConfiguration,r24
+ 355 0210 00C0 rjmp .L39
+ 356 .L38:
+ 357 0212 9A30 cpi r25,lo8(10)
+ 358 0214 01F4 brne .L39
+ 359 0216 80E0 ldi r24,lo8(usbTxBuf+9)
+ 360 0218 90E0 ldi r25,hi8(usbTxBuf+9)
+ 361 .L75:
+ 362 021a 21E0 ldi r18,lo8(1)
+ 363 021c 00C0 rjmp .L30
+ 364 .L39:
+ 365 021e 80E0 ldi r24,lo8(usbTxBuf+9)
+ 366 0220 90E0 ldi r25,hi8(usbTxBuf+9)
+ 367 0222 20E0 ldi r18,lo8(0)
+ 368 .L30:
+ 369 0224 9093 0000 sts (usbMsgPtr)+1,r25
+ 370 0228 8093 0000 sts usbMsgPtr,r24
+ 371 022c 00C0 rjmp .L24
+ 372 .L26:
+ 373 022e 9E81 ldd r25,Y+6
+ 374 .L27:
+ 375 0230 80E8 ldi r24,lo8(-128)
+ 376 0232 8093 0000 sts usbMsgFlags,r24
+ 377 0236 00C0 rjmp .L40
+ 378 .L24:
+ 379 0238 8F81 ldd r24,Y+7
+ 380 023a 8823 tst r24
+ 381 023c 01F4 brne .L41
+ 382 023e 9E81 ldd r25,Y+6
+ 383 0240 9217 cp r25,r18
+ 384 0242 00F0 brlo .L40
+ 385 .L41:
+ 386 0244 922F mov r25,r18
+ 387 .L40:
+ 388 0246 9093 0000 sts usbMsgLen,r25
+ 389 024a 00C0 rjmp .L21
+ 390 .L20:
+ 391 024c 8091 0000 lds r24,usbMsgFlags
+ 392 0250 87FF sbrs r24,7
+ 393 0252 00C0 rjmp .L21
+ 394 0254 8091 0000 lds r24,writeLength
+ 395 0258 811B sub r24,r17
+ 396 025a 8093 0000 sts writeLength,r24
+ 397 .L46:
+ 398 025e 8091 0000 lds r24,currentAddress
+ 399 0262 9091 0000 lds r25,(currentAddress)+1
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 8
+
+
+ 400 0266 0097 sbiw r24,0
+ 401 0268 01F4 brne .L42
+ 402 026a 8881 ld r24,Y
+ 403 026c 9981 ldd r25,Y+1
+ 404 026e 9093 0000 sts (vectorTemp)+1,r25
+ 405 0272 8093 0000 sts vectorTemp,r24
+ 406 0276 00C0 rjmp .L43
+ 407 .L42:
+ 408 0278 8430 cpi r24,4
+ 409 027a 9105 cpc r25,__zero_reg__
+ 410 027c 01F4 brne .L44
+ 411 027e 8881 ld r24,Y
+ 412 0280 9981 ldd r25,Y+1
+ 413 0282 9093 0000 sts (vectorTemp+2)+1,r25
+ 414 0286 8093 0000 sts vectorTemp+2,r24
+ 415 028a 00C0 rjmp .L43
+ 416 .L44:
+ 417 028c 8A53 subi r24,lo8(5946)
+ 418 028e 9741 sbci r25,hi8(5946)
+ 419 0290 00F0 brlo .L43
+ 420 0292 81E1 ldi r24,lo8(17)
+ 421 /* #APP */
+ 422 ; 241 "main.c" 1
+ 423 0294 8093 5700 sts 87, r24
+ 424 0298 E895 spm
+ 425
+ 426 ; 0 "" 2
+ 427 /* #NOAPP */
+ 428 029a 00C0 rjmp .L45
+ 429 .L43:
+ 430 029c 8881 ld r24,Y
+ 431 029e 9981 ldd r25,Y+1
+ 432 02a0 00D0 rcall writeWordToPageBuffer
+ 433 02a2 1250 subi r17,lo8(-(-2))
+ 434 02a4 01F0 breq .L45
+ 435 02a6 2296 adiw r28,2
+ 436 02a8 00C0 rjmp .L46
+ 437 .L45:
+ 438 02aa 8091 0000 lds r24,writeLength
+ 439 02ae 8823 tst r24
+ 440 02b0 01F4 brne .L21
+ 441 02b2 8091 0000 lds r24,events
+ 442 02b6 8260 ori r24,lo8(2)
+ 443 02b8 8093 0000 sts events,r24
+ 444 02bc 1092 0000 sts usbMsgLen,__zero_reg__
+ 445 .L21:
+ 446 02c0 1092 0000 sts usbRxLen,__zero_reg__
+ 447 .L19:
+ 448 02c4 8091 0000 lds r24,usbTxLen
+ 449 02c8 84FF sbrs r24,4
+ 450 02ca 00C0 rjmp .L47
+ 451 02cc 8091 0000 lds r24,usbMsgLen
+ 452 02d0 8F3F cpi r24,lo8(-1)
+ 453 02d2 01F0 breq .L47
+ 454 02d4 182F mov r17,r24
+ 455 02d6 8930 cpi r24,lo8(9)
+ 456 02d8 00F0 brlo .L48
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 9
+
+
+ 457 02da 18E0 ldi r17,lo8(8)
+ 458 .L48:
+ 459 02dc 811B sub r24,r17
+ 460 02de 8093 0000 sts usbMsgLen,r24
+ 461 02e2 8091 0000 lds r24,usbTxBuf
+ 462 02e6 98E8 ldi r25,lo8(-120)
+ 463 02e8 8927 eor r24,r25
+ 464 02ea 8093 0000 sts usbTxBuf,r24
+ 465 02ee 1123 tst r17
+ 466 02f0 01F0 breq .L49
+ 467 02f2 E091 0000 lds r30,usbMsgPtr
+ 468 02f6 F091 0000 lds r31,(usbMsgPtr)+1
+ 469 02fa 8091 0000 lds r24,usbMsgFlags
+ 470 02fe 86FF sbrs r24,6
+ 471 0300 00C0 rjmp .L50
+ 472 0302 912F mov r25,r17
+ 473 0304 A0E0 ldi r26,lo8(usbTxBuf+1)
+ 474 0306 B0E0 ldi r27,hi8(usbTxBuf+1)
+ 475 .L51:
+ 476 /* #APP */
+ 477 ; 504 "usbdrv/usbdrv.c" 1
+ 478 0308 8491 lpm r24, Z
+ 479
+ 480 ; 0 "" 2
+ 481 /* #NOAPP */
+ 482 030a 8D93 st X+,r24
+ 483 030c 3196 adiw r30,1
+ 484 030e 9150 subi r25,lo8(-(-1))
+ 485 0310 01F4 brne .L51
+ 486 0312 00C0 rjmp .L52
+ 487 .L50:
+ 488 0314 912F mov r25,r17
+ 489 0316 A0E0 ldi r26,lo8(usbTxBuf+1)
+ 490 0318 B0E0 ldi r27,hi8(usbTxBuf+1)
+ 491 .L53:
+ 492 031a 8191 ld r24,Z+
+ 493 031c 8D93 st X+,r24
+ 494 031e 9150 subi r25,lo8(-(-1))
+ 495 0320 01F4 brne .L53
+ 496 .L52:
+ 497 0322 F093 0000 sts (usbMsgPtr)+1,r31
+ 498 0326 E093 0000 sts usbMsgPtr,r30
+ 499 .L49:
+ 500 032a 80E0 ldi r24,lo8(usbTxBuf+1)
+ 501 032c 90E0 ldi r25,hi8(usbTxBuf+1)
+ 502 032e 612F mov r22,r17
+ 503 0330 00D0 rcall usbCrc16Append
+ 504 0332 612F mov r22,r17
+ 505 0334 6C5F subi r22,lo8(-(4))
+ 506 0336 6C30 cpi r22,lo8(12)
+ 507 0338 01F0 breq .L54
+ 508 033a 8FEF ldi r24,lo8(-1)
+ 509 033c 8093 0000 sts usbMsgLen,r24
+ 510 .L54:
+ 511 0340 6093 0000 sts usbTxLen,r22
+ 512 .L47:
+ 513 0344 94E1 ldi r25,lo8(20)
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 10
+
+
+ 514 .L56:
+ 515 0346 86B3 in r24,54-32
+ 516 0348 8871 andi r24,lo8(24)
+ 517 034a 01F4 brne .L55
+ 518 034c 9150 subi r25,lo8(-(-1))
+ 519 034e 01F4 brne .L56
+ 520 0350 1092 0000 sts usbNewDeviceAddr,__zero_reg__
+ 521 0354 1092 0000 sts usbDeviceAddr,__zero_reg__
+ 522 .L55:
+ 523 0358 10E0 ldi r17,lo8(0)
+ 524 035a 9923 tst r25
+ 525 035c 01F4 brne .L57
+ 526 035e 11E0 ldi r17,lo8(1)
+ 527 .L57:
+ 528 0360 8091 0000 lds r24,wasReset.1562
+ 529 0364 8117 cp r24,r17
+ 530 0366 01F0 breq .L58
+ 531 0368 1123 tst r17
+ 532 036a 01F4 brne .L59
+ 533 /* #APP */
+ 534 ; 557 "usbdrv/usbdrv.c" 1
+ 535 036c F894 cli
+ 536 ; 0 "" 2
+ 537 /* #NOAPP */
+ 538 036e 00D0 rcall calibrateOscillator
+ 539 /* #APP */
+ 540 ; 557 "usbdrv/usbdrv.c" 1
+ 541 0370 7894 sei
+ 542 ; 0 "" 2
+ 543 /* #NOAPP */
+ 544 .L59:
+ 545 0372 1093 0000 sts wasReset.1562,r17
+ 546 .L58:
+ 547 0376 8CE9 ldi r24,lo8(412)
+ 548 0378 91E0 ldi r25,hi8(412)
+ 549 /* #APP */
+ 550 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
+ 551 037a 0197 1: sbiw r24,1
+ 552 037c 01F4 brne 1b
+ 553 ; 0 "" 2
+ 554 /* #NOAPP */
+ 555 037e 8091 0000 lds r24,events
+ 556 0382 8823 tst r24
+ 557 0384 01F0 breq .L60
+ 558 0386 EE24 clr r14
+ 559 0388 FF24 clr r15
+ 560 038a 00C0 rjmp .L61
+ 561 .L60:
+ 562 038c 0894 sec
+ 563 038e E11C adc r14,__zero_reg__
+ 564 0390 F11C adc r15,__zero_reg__
+ 565 .L61:
+ 566 0392 182F mov r17,r24
+ 567 0394 80FF sbrs r24,0
+ 568 0396 00C0 rjmp .L62
+ 569 /* #APP */
+ 570 ; 115 "main.c" 1
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 11
+
+
+ 571 0398 F894 cli
+ 572 ; 0 "" 2
+ 573 /* #NOAPP */
+ 574 039a E0E4 ldi r30,lo8(5952)
+ 575 039c F7E1 ldi r31,hi8(5952)
+ 576 .L64:
+ 577 039e E054 subi r30,lo8(-(-64))
+ 578 03a0 F040 sbci r31,hi8(-(-64))
+ 579 03a2 83E0 ldi r24,lo8(3)
+ 580 /* #APP */
+ 581 ; 119 "main.c" 1
+ 582 03a4 8093 5700 sts 87, r24
+ 583 03a8 E895 spm
+ 584
+ 585 ; 0 "" 2
+ 586 /* #NOAPP */
+ 587 .L63:
+ 588 03aa 07B6 in __tmp_reg__,87-32
+ 589 03ac 00FC sbrc __tmp_reg__,0
+ 590 03ae 00C0 rjmp .L63
+ 591 03b0 3097 sbiw r30,0
+ 592 03b2 01F4 brne .L64
+ 593 03b4 1092 0000 sts (currentAddress)+1,__zero_reg__
+ 594 03b8 1092 0000 sts currentAddress,__zero_reg__
+ 595 03bc 00D0 rcall fillFlashWithVectors
+ 596 /* #APP */
+ 597 ; 124 "main.c" 1
+ 598 03be 7894 sei
+ 599 ; 0 "" 2
+ 600 /* #NOAPP */
+ 601 .L62:
+ 602 03c0 11FF sbrs r17,1
+ 603 03c2 00C0 rjmp .L65
+ 604 03c4 8AE3 ldi r24,lo8(8250)
+ 605 03c6 90E2 ldi r25,hi8(8250)
+ 606 /* #APP */
+ 607 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
+ 608 03c8 0197 1: sbiw r24,1
+ 609 03ca 01F4 brne 1b
+ 610 ; 0 "" 2
+ 611 /* #NOAPP */
+ 612 03cc 8091 0000 lds r24,currentAddress
+ 613 03d0 9091 0000 lds r25,(currentAddress)+1
+ 614 03d4 8F73 andi r24,lo8(63)
+ 615 03d6 9070 andi r25,hi8(63)
+ 616 03d8 892B or r24,r25
+ 617 03da 01F0 breq .L66
+ 618 03dc 00D0 rcall fillFlashWithVectors
+ 619 03de 00C0 rjmp .L65
+ 620 .L66:
+ 621 03e0 00D0 rcall writeFlashPage
+ 622 .L65:
+ 623 03e2 12FF sbrs r17,2
+ 624 03e4 00C0 rjmp .L67
+ 625 03e6 8091 0000 lds r24,didWriteSomething
+ 626 03ea 8823 tst r24
+ 627 03ec 01F4 brne .L68
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 12
+
+
+ 628 03ee 00C0 rjmp .L69
+ 629 .L70:
+ 630 03f0 00D0 rcall fillFlashWithVectors
+ 631 .L68:
+ 632 03f2 8091 0000 lds r24,currentAddress
+ 633 03f6 9091 0000 lds r25,(currentAddress)+1
+ 634 03fa 8054 subi r24,lo8(5952)
+ 635 03fc 9741 sbci r25,hi8(5952)
+ 636 03fe 00F0 brlo .L70
+ 637 .L69:
+ 638 0400 82E2 ldi r24,lo8(-24286)
+ 639 0402 91EA ldi r25,hi8(-24286)
+ 640 /* #APP */
+ 641 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
+ 642 0404 0197 1: sbiw r24,1
+ 643 0406 01F4 brne 1b
+ 644 ; 0 "" 2
+ 645 /* #NOAPP */
+ 646 0408 00C0 rjmp .L71
+ 647 .L67:
+ 648 040a 1092 0000 sts events,__zero_reg__
+ 649 040e 80E5 ldi r24,lo8(-15536)
+ 650 0410 E816 cp r14,r24
+ 651 0412 83EC ldi r24,hi8(-15536)
+ 652 0414 F806 cpc r15,r24
+ 653 0416 00F4 brsh .+2
+ 654 0418 00C0 rjmp .L72
655 .L71:
- 656 0428 82E2 ldi r24,lo8(-24286)
- 657 042a 91EA ldi r25,hi8(-24286)
- 658 /* #APP */
- 659 ; 105 "/usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/include/util/delay_bas
- 660 042c 0197 1: sbiw r24,1
- 661 042e 01F4 brne 1b
- 662 ; 0 "" 2
- 663 /* #NOAPP */
- 664 0430 00C0 rjmp .L73
- 665 .L69:
- 666 0432 1092 0000 sts events,__zero_reg__
- 667 0436 80E5 ldi r24,lo8(-15536)
- 668 0438 E816 cp r14,r24
- 669 043a 83EC ldi r24,hi8(-15536)
- 670 043c F806 cpc r15,r24
- 671 043e 00F4 brsh .+2
- 672 0440 00C0 rjmp .L74
- 673 .L73:
- 674 /* #APP */
- 675 ; 317 "main.c" 1
- 676 0442 F894 cli
- 677 ; 0 "" 2
- 678 /* #NOAPP */
- 679 0444 1BBE out 91-32,__zero_reg__
- 680 0446 15BA out 53-32,__zero_reg__
- 681 0448 1092 5F02 sts 607,__zero_reg__
- 682 044c 1092 5E02 sts 606,__zero_reg__
- 683 /* #APP */
- 684 ; 326 "main.c" 1
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 13
-
-
- 685 0450 00C0 rjmp __vectors - 4
- 686 ; 0 "" 2
- 687 /* epilogue start */
- 688 /* #NOAPP */
- 689 0452 0895 ret
- 690 .size main, .-main
- 691 .global usbTxLen
- 692 .data
- 693 .type usbTxLen, @object
- 694 .size usbTxLen, 1
- 695 usbTxLen:
- 696 0000 5A .byte 90
- 697 .global usbDescriptorString0
- 698 .section .progmem.data,"a",@progbits
- 699 .type usbDescriptorString0, @object
- 700 .size usbDescriptorString0, 4
- 701 usbDescriptorString0:
- 702 0000 04 .byte 4
- 703 0001 03 .byte 3
- 704 0002 09 .byte 9
- 705 0003 04 .byte 4
- 706 .global usbDescriptorStringVendor
- 707 .type usbDescriptorStringVendor, @object
- 708 .size usbDescriptorStringVendor, 34
- 709 usbDescriptorStringVendor:
- 710 0004 2203 .word 802
- 711 0006 6300 .word 99
- 712 0008 7200 .word 114
- 713 000a 6500 .word 101
- 714 000c 6100 .word 97
- 715 000e 7400 .word 116
- 716 0010 6900 .word 105
- 717 0012 7600 .word 118
- 718 0014 6500 .word 101
- 719 0016 7000 .word 112
- 720 0018 6F00 .word 111
- 721 001a 6E00 .word 110
- 722 001c 7900 .word 121
- 723 001e 2E00 .word 46
- 724 0020 6300 .word 99
- 725 0022 6F00 .word 111
- 726 0024 6D00 .word 109
- 727 .global usbDescriptorStringDevice
- 728 .type usbDescriptorStringDevice, @object
- 729 .size usbDescriptorStringDevice, 12
- 730 usbDescriptorStringDevice:
- 731 0026 0C03 .word 780
- 732 0028 7500 .word 117
- 733 002a 4200 .word 66
- 734 002c 6F00 .word 111
- 735 002e 6F00 .word 111
- 736 0030 7400 .word 116
- 737 .global usbDescriptorDevice
- 738 .type usbDescriptorDevice, @object
- 739 .size usbDescriptorDevice, 18
- 740 usbDescriptorDevice:
- 741 0032 12 .byte 18
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 14
-
-
- 742 0033 01 .byte 1
- 743 0034 10 .byte 16
- 744 0035 01 .byte 1
- 745 0036 FF .byte -1
- 746 0037 00 .byte 0
- 747 0038 00 .byte 0
- 748 0039 08 .byte 8
- 749 003a C0 .byte -64
- 750 003b 16 .byte 22
- 751 003c DC .byte -36
- 752 003d 05 .byte 5
- 753 003e 01 .byte 1
- 754 003f 01 .byte 1
- 755 0040 01 .byte 1
- 756 0041 02 .byte 2
- 757 0042 00 .byte 0
- 758 0043 01 .byte 1
- 759 .global usbDescriptorConfiguration
- 760 .type usbDescriptorConfiguration, @object
- 761 .size usbDescriptorConfiguration, 18
- 762 usbDescriptorConfiguration:
- 763 0044 09 .byte 9
- 764 0045 02 .byte 2
- 765 0046 12 .byte 18
- 766 0047 00 .byte 0
- 767 0048 01 .byte 1
- 768 0049 01 .byte 1
- 769 004a 00 .byte 0
- 770 004b 80 .byte -128
- 771 004c 32 .byte 50
- 772 004d 09 .byte 9
- 773 004e 04 .byte 4
- 774 004f 00 .byte 0
- 775 0050 00 .byte 0
- 776 0051 00 .byte 0
- 777 0052 00 .byte 0
- 778 0053 00 .byte 0
- 779 0054 00 .byte 0
- 780 0055 00 .byte 0
- 781 .lcomm events,1
- 782 .lcomm didWriteSomething,1
- 783 .data
- 784 .type usbMsgLen, @object
- 785 .size usbMsgLen, 1
- 786 usbMsgLen:
- 787 0001 FF .byte -1
- 788 .type replyBuffer.1675, @object
- 789 .size replyBuffer.1675, 4
- 790 replyBuffer.1675:
- 791 0002 17 .byte 23
- 792 0003 3A .byte 58
- 793 0004 40 .byte 64
- 794 0005 08 .byte 8
- 795 .lcomm wasReset.1564,1
- 796 .lcomm usbMsgFlags,1
- 797 .lcomm writeLength,1
- 798 .lcomm vectorTemp,4
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 15
-
-
- 799 .lcomm currentAddress,2
- 800 .comm usbMsgPtr,2,1
- 801 .comm usbRxToken,1,1
- 802 .comm usbConfiguration,1,1
- 803 .comm usbRxBuf,22,1
- 804 .comm usbInputBufOffset,1,1
- 805 .comm usbDeviceAddr,1,1
- 806 .comm usbNewDeviceAddr,1,1
- 807 .comm usbRxLen,1,1
- 808 .comm usbCurrentTok,1,1
- 809 .comm usbTxBuf,11,1
- 810 .global __do_copy_data
- 811 .global __do_clear_bss
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s page 16
+ 656 /* #APP */
+ 657 ; 318 "main.c" 1
+ 658 041a F894 cli
+ 659 ; 0 "" 2
+ 660 /* #NOAPP */
+ 661 041c 1BBE out 91-32,__zero_reg__
+ 662 041e 15BA out 53-32,__zero_reg__
+ 663 0420 1092 5F02 sts 607,__zero_reg__
+ 664 0424 1092 5E02 sts 606,__zero_reg__
+ 665 /* #APP */
+ 666 ; 327 "main.c" 1
+ 667 0428 00C0 rjmp __vectors - 4
+ 668 ; 0 "" 2
+ 669 /* epilogue start */
+ 670 /* #NOAPP */
+ 671 042a 0895 ret
+ 672 .size main, .-main
+ 673 .global usbTxLen
+ 674 .data
+ 675 .type usbTxLen, @object
+ 676 .size usbTxLen, 1
+ 677 usbTxLen:
+ 678 0000 5A .byte 90
+ 679 .global usbDescriptorString0
+ 680 .section .progmem.data,"a",@progbits
+ 681 .type usbDescriptorString0, @object
+ 682 .size usbDescriptorString0, 4
+ 683 usbDescriptorString0:
+ 684 0000 04 .byte 4
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 13
+
+
+ 685 0001 03 .byte 3
+ 686 0002 09 .byte 9
+ 687 0003 04 .byte 4
+ 688 .global usbDescriptorDevice
+ 689 .type usbDescriptorDevice, @object
+ 690 .size usbDescriptorDevice, 18
+ 691 usbDescriptorDevice:
+ 692 0004 12 .byte 18
+ 693 0005 01 .byte 1
+ 694 0006 10 .byte 16
+ 695 0007 01 .byte 1
+ 696 0008 FF .byte -1
+ 697 0009 00 .byte 0
+ 698 000a 00 .byte 0
+ 699 000b 08 .byte 8
+ 700 000c D0 .byte -48
+ 701 000d 16 .byte 22
+ 702 000e 53 .byte 83
+ 703 000f 07 .byte 7
+ 704 0010 02 .byte 2
+ 705 0011 01 .byte 1
+ 706 0012 00 .byte 0
+ 707 0013 00 .byte 0
+ 708 0014 00 .byte 0
+ 709 0015 01 .byte 1
+ 710 .global usbDescriptorConfiguration
+ 711 .type usbDescriptorConfiguration, @object
+ 712 .size usbDescriptorConfiguration, 18
+ 713 usbDescriptorConfiguration:
+ 714 0016 09 .byte 9
+ 715 0017 02 .byte 2
+ 716 0018 12 .byte 18
+ 717 0019 00 .byte 0
+ 718 001a 01 .byte 1
+ 719 001b 01 .byte 1
+ 720 001c 00 .byte 0
+ 721 001d 80 .byte -128
+ 722 001e 32 .byte 50
+ 723 001f 09 .byte 9
+ 724 0020 04 .byte 4
+ 725 0021 00 .byte 0
+ 726 0022 00 .byte 0
+ 727 0023 00 .byte 0
+ 728 0024 00 .byte 0
+ 729 0025 00 .byte 0
+ 730 0026 00 .byte 0
+ 731 0027 00 .byte 0
+ 732 .lcomm events,1
+ 733 .lcomm didWriteSomething,1
+ 734 .data
+ 735 .type usbMsgLen, @object
+ 736 .size usbMsgLen, 1
+ 737 usbMsgLen:
+ 738 0001 FF .byte -1
+ 739 .type replyBuffer.1675, @object
+ 740 .size replyBuffer.1675, 4
+ 741 replyBuffer.1675:
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 14
+
+
+ 742 0002 17 .byte 23
+ 743 0003 3A .byte 58
+ 744 0004 40 .byte 64
+ 745 0005 08 .byte 8
+ 746 .lcomm wasReset.1562,1
+ 747 .lcomm usbMsgFlags,1
+ 748 .lcomm writeLength,1
+ 749 .lcomm vectorTemp,4
+ 750 .lcomm currentAddress,2
+ 751 .comm usbMsgPtr,2,1
+ 752 .comm usbRxToken,1,1
+ 753 .comm usbConfiguration,1,1
+ 754 .comm usbRxBuf,22,1
+ 755 .comm usbInputBufOffset,1,1
+ 756 .comm usbDeviceAddr,1,1
+ 757 .comm usbNewDeviceAddr,1,1
+ 758 .comm usbRxLen,1,1
+ 759 .comm usbCurrentTok,1,1
+ 760 .comm usbTxBuf,11,1
+ 761 .global __do_copy_data
+ 762 .global __do_clear_bss
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s page 15
DEFINED SYMBOLS
*ABS*:00000000 main.c
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:2 *ABS*:0000003f __SREG__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:3 *ABS*:0000003e __SP_H__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:4 *ABS*:0000003d __SP_L__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:5 *ABS*:00000034 __CCP__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:6 *ABS*:00000000 __tmp_reg__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:7 *ABS*:00000001 __zero_reg__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:10 .text:00000000 writeFlashPage
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:781 .bss:00000001 didWriteSomething
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:798 .bss:00000009 currentAddress
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:44 .text:00000024 writeWordToPageBuffer
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:797 .bss:00000005 vectorTemp
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:113 .text:0000008e fillFlashWithVectors
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:139 .init3:00000000 PushMagicWord
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:161 .text:000000b4 main
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:2 *ABS*:0000003f __SREG__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:3 *ABS*:0000003e __SP_H__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:4 *ABS*:0000003d __SP_L__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:5 *ABS*:00000034 __CCP__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:6 *ABS*:00000000 __tmp_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:7 *ABS*:00000001 __zero_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:10 .text:00000000 writeFlashPage
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:732 .bss:00000001 didWriteSomething
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:749 .bss:00000009 currentAddress
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:44 .text:00000024 writeWordToPageBuffer
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:748 .bss:00000005 vectorTemp
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:113 .text:0000008e fillFlashWithVectors
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:139 .init3:00000000 PushMagicWord
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:161 .text:000000b4 main
*COM*:00000001 usbRxLen
*COM*:00000001 usbInputBufOffset
*COM*:00000016 usbRxBuf
*COM*:00000001 usbRxToken
*COM*:0000000b usbTxBuf
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:695 .data:00000000 usbTxLen
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:795 .bss:00000003 usbMsgFlags
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:790 .data:00000002 replyBuffer.1675
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:677 .data:00000000 usbTxLen
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:746 .bss:00000003 usbMsgFlags
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:741 .data:00000002 replyBuffer.1675
*COM*:00000002 usbMsgPtr
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:796 .bss:00000004 writeLength
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:747 .bss:00000004 writeLength
.bss:00000000 events
*COM*:00000001 usbNewDeviceAddr
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:740 .progmem.data:00000032 usbDescriptorDevice
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:762 .progmem.data:00000044 usbDescriptorConfiguration
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:701 .progmem.data:00000000 usbDescriptorString0
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:709 .progmem.data:00000004 usbDescriptorStringVendor
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:730 .progmem.data:00000026 usbDescriptorStringDevice
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:691 .progmem.data:00000004 usbDescriptorDevice
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:713 .progmem.data:00000016 usbDescriptorConfiguration
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:683 .progmem.data:00000000 usbDescriptorString0
*COM*:00000001 usbConfiguration
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:786 .data:00000001 usbMsgLen
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:737 .data:00000001 usbMsgLen
*COM*:00000001 usbDeviceAddr
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccuASyoo.s:782 .bss:00000002 wasReset.1564
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccd49vnP.s:733 .bss:00000002 wasReset.1562
*COM*:00000001 usbCurrentTok
UNDEFINED SYMBOLS
diff --git a/firmware/main.hex b/firmware/main.hex
index 2ee2244..ccefa38 100644
--- a/firmware/main.hex
+++ b/firmware/main.hex
@@ -1,141 +1,136 @@
-:1017400039C057C083C055C054C053C052C051C0E7
-:1017500050C04FC04EC04DC04CC04BC04AC0040327
-:1017600009042203630072006500610074006900CF
-:101770007600650070006F006E0079002E00630037
-:101780006F006D000C03750042006F006F00740065
-:1017900012011001FF000008C016DC050101010262
-:1017A000000109021200010100803209040000005A
-:1017B0000000000011241FBECFE5D2E0DEBFCDBF88
-:1017C00000EB0F9307E00F9310E0A0E6B0E0ECED24
-:1017D000FFE102C005900D92A636B107D9F710E0DF
-:1017E000A6E6B0E001C01D92AB39B107E1F7E6D142
-:1017F000F3C3A6CFA82FB92F80E090E041E050EAD4
-:10180000609530E009C02D9182279795879510F05B
-:1018100084279527305EC8F36F5FA8F30895EADF49
-:101820008D939D930895A6E088279927AA9569F03E
-:101830000197E1F3B399FCCFB39BFECF81E09927E9
-:10184000A6B3019611F0A871D9F70895CF93CFB739
-:10185000CF93C0915F02C03B21F4C0915E02C730BC
-:1018600021F0CF91CFBFCF916ACFCC27C395B39B47
-:10187000E9F7B39B0BC0B39B09C0B39B07C0B39BF5
-:1018800005C0B39B03C0B39B01C0D3C00F92DF93CD
-:10189000C0917E00DD27CB57DF4F012EB39B03C0E5
-:1018A000DF910F90E6CF2F930F931F934F932FEF5E
-:1018B0004F6F06B303FB20F95F933F9350E03BE08B
-:1018C00065C016B30126502953FDC89556B30127AC
-:1018D00003FB25F92F7306B3B1F05027102713FB34
-:1018E00026F906B22230F0F000C016B3012703FB40
-:1018F00027F90126502906B22430E8F54F772068F1
-:1019000016B30000F6CF50274F7D206206B2102F8D
-:10191000000000C006B300265029102713FB26F94B
-:1019200006B2E2CF4F7B06B3206400C0DACF0126B7
-:101930005029187106B269F14E7F2160012F16B34C
-:1019400028C0002650294D7F06B22260102F29C0E2
-:10195000012650294B7F06B22460012F2DC016B3FB
-:1019600001265029477F2860000006B22EC04F7E16
-:1019700006B3206130C0422706B3499300265029A0
-:10198000102706B24FEF13FB20F9297F16B379F227
-:10199000187159F10126502906B2012703FB21F9DC
-:1019A000237F06B371F2002650293150D0F006B2E1
-:1019B000102713FB22F9277E16B351F20126502976
-:1019C000012703FB06B223F92F7C49F2000006B37E
-:1019D000102713FB24F90026502906B22F7939F27B
-:1019E00070CF10E21ABF002717C03B503195C31BC0
-:1019F000D04010E21ABF0881033CF9F00B34E9F043
-:101A000020917C001981110F1213EDCF093651F18D
-:101A10000D3211F0013E39F7009383003F915F9141
-:101A20004F911F910F912F91DF910F90CAB7C5FD74
-:101A30001DCFCF91CFBFCF91189520918300222346
-:101A400069F310918100112321F5343022F1309394
-:101A5000810020937D0010917E003BE0311B30938C
-:101A60007E0019C00091810001309CF40AE530919C
-:101A7000600034FD11C000936000C1E7D0E010C0E9
-:101A8000052710E000C021C0052710E0C89508BB5D
-:101A900014C03AE501C032ED032EC0E0D0E032E0E0
-:101AA00017B31861C39A08B317BB58E120E84FEF8A
-:101AB00020FF052708BB279517951C3F28F7000036
-:101AC0004552B0F720FF0527279508BB17951C3F07
-:101AD000B8F629913A9561F7077E10918200110FAF
-:101AE00008BBC250D04011F010937C0010E21ABF26
-:101AF000086017B3177E402F477E54E05A95F1F7E0
-:101B000008BB17BB48BB8ACF81E080936700F8947D
-:101B1000E0916F00F0917000329785E0809357005C
-:101B2000E89507B600FCFDCF789408959C01E091FC
-:101B30006F00F0917000309749F1E430F105B1F099
-:101B400087E1EC33F80739F420916B0030916C0099
-:101B50002E593B4F0DC087E1EE33F80749F4209131
-:101B60006D0030916E002D593B4F02C02FE93BECC8
-:101B7000F89481E0090180935700E8951124789446
-:101B80003296F0937000E0936F00089581E18093A6
-:101B90005700E895EBCFCF93DF93C0916F00D091C2
-:101BA0007000CF73D0708FEF9FEFC0DF2296C034EC
-:101BB000D105CCF3A9DFDF91CF91089588E10FB66D
-:101BC000F89481BD11BC0FBEE0E0F0E085919491E6
-:101BD0008F599B4C39F4E4E0F0E0859194918F5952
-:101BE0009B4C09F0D8DF1092700010926F00AC9AF5
-:101BF0008BB780628BBFBB9A88E893E1ECE9F1E098
-:101C00003197F1F70197D1F7BB987894EE24FF2430
-:101C100010918100135017FDEDC080917E00CCE043
-:101C2000D0E0C81BD109CB57DF4F80917D008D32AA
-:101C300009F0A4C0183009F0DBC083EC8093710078
-:101C40008AE580936000109269002881822F807657
-:101C50009981882321F1992341F482E690E09093C1
-:101C6000800080937F0024E07FC0913069F48A81F6
-:101C700080936A008C819D819093700080936F00A7
-:101C800027FD6DC09FEF6CC080916600923011F40B
-:101C9000816001C084608093660020E065C08A8115
-:101CA00010927A00992331F410927B008AE790E039
-:101CB00022E050C0953019F48093820048C09630DD
-:101CC000B1F58B81813019F480E997E104C082304D
-:101CD00041F482EA97E19093800080937F0022E1B3
-:101CE00022C08330F9F48A81882341F48EE597E19C
-:101CF0009093800080937F0024E015C0813041F4F0
-:101D000082E697E19093800080937F0022E20BC0EF
-:101D1000823041F484E897E19093800080937F00C3
-:101D20002CE001C020E080E4809369001DC0983061
-:101D300019F484E890E009C0993019F48093840084
-:101D400006C09A3021F48AE790E021E003C08AE7D8
-:101D500090E020E09093800080937F0005C09E81FA
-:101D600080E88093690007C08F81882319F49E81E1
-:101D7000921708F0922F909361003AC08091690009
-:101D800087FF36C080916A00811B80936A00809132
-:101D90006F0090917000009739F488819981909339
-:101DA0006C0080936B0012C08430910539F48881F7
-:101DB000998190936E0080936D0008C08A5397417B
-:101DC00028F081E180935700E89507C088819981C8
-:101DD000ADDE125011F02296DACF80916A0088238E
-:101DE00039F48091660082608093660010926100F1
-:101DF000109281008091600084FF3CC0809161005E
-:101E00008F3FC1F1182F893008F018E0811B8093B3
-:101E100061008091710098E88927809371001123F7
-:101E2000E1F0E0917F00F09180008091690086FFF1
-:101E300009C0912FA2E7B0E084918D933196915023
-:101E4000D9F707C0912FA2E7B0E081918D9391500F
-:101E5000E1F7F0938000E0937F0082E790E0612F4C
-:101E6000DEDC612F6C5F6C3019F08FEF80936100C6
-:101E70006093600094E186B3887131F49150D9F792
-:101E80001092820010927C0010E0992309F411E076
-:101E900080916800811739F0112319F4F8945DD00E
-:101EA0007894109368008CE991E00197F1F78091A4
-:101EB0006600882319F0EE24FF2403C00894E11C77
-:101EC000F11C182F80FF14C0F894E0E4F7E1E0540F
-:101ED000F04083E080935700E89507B600FCFDCF03
-:101EE0003097A9F71092700010926F0054DE78942A
-:101EF00011FF0FC08AE390E20197F1F780916F0024
-:101F0000909170008F739070892B11F044DE01C0A6
-:101F1000FBDD12FF12C080916700882311F408C016
-:101F20003ADE80916F009091700080549741C0F329
-:101F300082E291EA0197F1F708C01092660080E50D
-:101F4000E81683ECF80608F463CEF8941BBE15BAC5
-:101F500010925F0210925E02F1CBFF920F931F93DB
-:101F6000CF93DF9380E8F82E00E0C0E0D0E0102FA0
-:101F70001F0D11BF58DC29E0843392070CF0102F9D
-:101F8000F6942196C830D10511F0012FF0CF1150F1
-:101F900011BF1F5F012FEC0110C045DC8453994035
-:101FA00097FF03C0909581959F4F8C179D0714F460
-:101FB00001B7EC0181B78F5F81BF21B730E0812F7E
-:101FC00090E001968217930744F701BFDF91CF910C
-:0C1FD0001F910F91FF900895F894FFCF2F
-:061FDC005AFF173A40080D
+:1017400022C040C06CC03EC03DC03CC03BC03AC09F
+:1017500039C038C037C036C035C034C033C00403C8
+:10176000090412011001FF000008D01653070201FE
+:10177000000000010902120001010080320904008A
+:1017800000000000000011241FBECFE5D2E0DEBF44
+:10179000CDBF00EB0F9307E00F9310E0A0E6B0E0A1
+:1017A000E6E8FFE102C005900D92A636B107D9F731
+:1017B00010E0A6E6B0E001C01D92AB39B107E1F739
+:1017C000E6D1DFC3BDCFA82FB92F80E090E041E084
+:1017D00050EA609530E009C02D9182279795879552
+:1017E00010F084279527305EC8F36F5FA8F3089543
+:1017F000EADF8D939D930895A6E088279927AA95FF
+:1018000069F00197E1F3B399FCCFB39BFECF81E080
+:101810009927A6B3019611F0A871D9F70895CF932F
+:10182000CFB7CF93C0915F02C03B21F4C0915E025D
+:10183000C73021F0CF91CFBFCF9181CFCC27C395B7
+:10184000B39BE9F7B39B0BC0B39B09C0B39B07C025
+:10185000B39B05C0B39B03C0B39B01C0D3C00F9221
+:10186000DF93C0917E00DD27CB57DF4F012EB39B66
+:1018700003C0DF910F90E6CF2F930F931F934F93E9
+:101880002FEF4F6F06B303FB20F95F933F9350E0B8
+:101890003BE065C016B30126502953FDC89556B3E9
+:1018A000012703FB25F92F7306B3B1F0502710274A
+:1018B00013FB26F906B22230F0F000C016B3012760
+:1018C00003FB27F90126502906B22430E8F54F77AB
+:1018D000206816B30000F6CF50274F7D206206B275
+:1018E000102F000000C006B300265029102713FB5C
+:1018F00026F906B2E2CF4F7B06B3206400C0DACFF0
+:1019000001265029187106B269F14E7F2160012F1E
+:1019100016B328C0002650294D7F06B22260102F32
+:1019200029C0012650294B7F06B22460012F2DC00B
+:1019300016B301265029477F2860000006B22EC04A
+:101940004F7E06B3206130C0422706B3499300267C
+:101950005029102706B24FEF13FB20F9297F16B349
+:1019600079F2187159F10126502906B2012703FBBB
+:1019700021F9237F06B371F2002650293150D0F0AF
+:1019800006B2102713FB22F9277E16B351F2012667
+:101990005029012703FB06B223F92F7C49F20000EE
+:1019A00006B3102713FB24F90026502906B22F791D
+:1019B00039F270CF10E21ABF002717C03B503195A3
+:1019C000C31BD04010E21ABF0881033CF9F00B346E
+:1019D000E9F020917C001981110F1213EDCF093627
+:1019E00051F10D3211F0013E39F7009383003F9120
+:1019F0005F914F911F910F912F91DF910F90CAB777
+:101A0000C5FD1DCFCF91CFBFCF91189520918300F9
+:101A1000222369F310918100112321F5343022F142
+:101A20003093810020937D0010917E003BE0311BBC
+:101A300030937E0019C00091810001309CF40AE5CA
+:101A40003091600034FD11C000936000C1E7D0E028
+:101A500010C0052710E000C021C0052710E0C89580
+:101A600008BB14C03AE501C032ED032EC0E0D0E05F
+:101A700032E017B31861C39A08B317BB58E120E8E6
+:101A80004FEF20FF052708BB279517951C3F28F728
+:101A900000004552B0F720FF0527279508BB179592
+:101AA0001C3FB8F629913A9561F7077E10918200A4
+:101AB000110F08BBC250D04011F010937C0010E20F
+:101AC0001ABF086017B3177E402F477E54E05A951F
+:101AD000F1F708BB17BB48BB8ACF81E08093670052
+:101AE000F894E0916F00F0917000329785E0809358
+:101AF0005700E89507B600FCFDCF789408959C0147
+:101B0000E0916F00F0917000309749F1E430F105F9
+:101B1000B1F087E1EC33F80739F420916B00309194
+:101B20006C002E593B4F0DC087E1EE33F80749F4A6
+:101B300020916D0030916E002D593B4F02C02FE96E
+:101B40003BECF89481E0090180935700E89511245B
+:101B500078943296F0937000E0936F00089581E1DD
+:101B600080935700E895EBCFCF93DF93C0916F0040
+:101B7000D0917000CF73D0708FEF9FEFC0DF2296AF
+:101B8000C034D105CCF3A9DFDF91CF91089588E16E
+:101B90000FB6F89481BD11BC0FBEE0E0F0E0859176
+:101BA00094918F599B4C39F4E4E0F0E08591949145
+:101BB0008F599B4C09F0D8DF1092700010926F0083
+:101BC000AC9A8BB780628BBFBB9A88E893E1ECE953
+:101BD000F1E03197F1F70197D1F7BB987894EE24B3
+:101BE000FF2410918100135017FDD9C080917E0011
+:101BF000CCE0D0E0C81BD109CB57DF4F80917D00EE
+:101C00008D3209F090C0183009F0C7C083EC809382
+:101C100071008AE580936000109269002881822F0C
+:101C200080769981882321F1992341F482E690E01E
+:101C30009093800080937F0024E06BC0913069F422
+:101C40008A8180936A008C819D819093700080933B
+:101C50006F0027FD59C09FEF58C0809166009230F9
+:101C600011F4816001C084608093660020E051C05F
+:101C70008A8110927A00992331F410927B008AE7CE
+:101C800090E022E03CC0953019F48093820034C08B
+:101C9000963011F58B81813019F482E697E104C00A
+:101CA000823041F484E797E19093800080937F0035
+:101CB00022E10EC0833059F48A81882341F48EE5F5
+:101CC00097E19093800080937F0024E001C020E0A2
+:101CD00080E4809369001DC0983019F484E890E096
+:101CE00009C0993019F48093840006C09A3021F419
+:101CF0008AE790E021E003C08AE790E020E090933B
+:101D0000800080937F0005C09E8180E880936900F9
+:101D100007C08F81882319F49E81921708F0922FB3
+:101D2000909361003AC08091690087FF36C080912E
+:101D30006A00811B80936A0080916F00909170000F
+:101D4000009739F48881998190936C0080936B009F
+:101D500012C08430910539F48881998190936E0086
+:101D600080936D0008C08A53974128F081E18093E9
+:101D70005700E89507C088819981C1DE125011F0A3
+:101D80002296DACF80916A00882339F48091660028
+:101D900082608093660010926100109281008091B1
+:101DA000600084FF3CC0809161008F3FC1F1182F1B
+:101DB000893008F018E0811B8093610080917100E8
+:101DC00098E88927809371001123E1F0E0917F006A
+:101DD000F09180008091690086FF09C0912FA2E7F1
+:101DE000B0E084918D9331969150D9F707C0912F2F
+:101DF000A2E7B0E081918D939150E1F7F0938000DC
+:101E0000E0937F0082E790E0612FF2DC612F6C5F4E
+:101E10006C3019F08FEF809361006093600094E163
+:101E200086B3887131F49150D9F7109282001092E4
+:101E30007C0010E0992309F411E08091680081177B
+:101E400039F0112319F4F8945DD078941093680058
+:101E50008CE991E00197F1F780916600882319F0F1
+:101E6000EE24FF2403C00894E11CF11C182F80FF0E
+:101E700014C0F894E0E4F7E1E054F04083E080938C
+:101E80005700E89507B600FCFDCF3097A9F71092F0
+:101E9000700010926F0068DE789411FF0FC08AE323
+:101EA00090E20197F1F780916F00909170008F732D
+:101EB0009070892B11F058DE01C00FDE12FF12C0A6
+:101EC00080916700882311F408C04EDE80916F0076
+:101ED0009091700080549741C0F382E291EA01979B
+:101EE000F1F708C01092660080E5E81683ECF8066A
+:101EF00008F477CEF8941BBE15BA10925F021092C8
+:101F00005E021CCCFF920F931F93CF93DF9380E868
+:101F1000F82E00E0C0E0D0E0102F1F0D11BF6CDCE8
+:101F200029E0843392070CF0102FF6942196C830E4
+:101F3000D10511F0012FF0CF115011BF1F5F012FFC
+:101F4000EC0110C059DC8453994097FF03C0909571
+:101F500081959F4F8C179D0714F401B7EC0181B751
+:101F60008F5F81BF21B730E0812F90E0019682170B
+:101F7000930744F701BFDF91CF911F910F91FF901D
+:061F80000895F894FFCF64
+:061F86005AFF173A400863
:0400000300001740A2
:00000001FF
diff --git a/firmware/main.map b/firmware/main.map
index 5c381d2..59b6163 100644
--- a/firmware/main.map
+++ b/firmware/main.map
@@ -158,7 +158,7 @@ LOAD /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a
.rela.plt
*(.rela.plt)
-.text 0x00001740 0x89c
+.text 0x00001740 0x846
*(.vectors)
.vectors 0x00001740 0x1e /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
0x00001740 __vectors
@@ -166,48 +166,46 @@ LOAD /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
- .progmem.data 0x0000175e 0x56 main.o
- 0x00001790 usbDescriptorDevice
+ .progmem.data 0x0000175e 0x28 main.o
+ 0x00001762 usbDescriptorDevice
0x0000175e usbDescriptorString0
- 0x000017a2 usbDescriptorConfiguration
- 0x00001762 usbDescriptorStringVendor
- 0x00001784 usbDescriptorStringDevice
- 0x000017b4 . = ALIGN (0x2)
- 0x000017b4 __trampolines_start = .
+ 0x00001774 usbDescriptorConfiguration
+ 0x00001786 . = ALIGN (0x2)
+ 0x00001786 __trampolines_start = .
*(.trampolines)
- .trampolines 0x000017b4 0x0 linker stubs
+ .trampolines 0x00001786 0x0 linker stubs
*(.trampolines*)
- 0x000017b4 __trampolines_end = .
+ 0x00001786 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
- 0x000017b4 __ctors_start = .
+ 0x00001786 __ctors_start = .
*(.ctors)
- 0x000017b4 __ctors_end = .
- 0x000017b4 __dtors_start = .
+ 0x00001786 __ctors_end = .
+ 0x00001786 __dtors_start = .
*(.dtors)
- 0x000017b4 __dtors_end = .
+ 0x00001786 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
- .init0 0x000017b4 0x0 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
- 0x000017b4 __init
+ .init0 0x00001786 0x0 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
+ 0x00001786 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
- .init2 0x000017b4 0xc /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
+ .init2 0x00001786 0xc /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
*(.init2)
*(.init3)
- .init3 0x000017c0 0x8 main.o
- 0x000017c0 PushMagicWord
+ .init3 0x00001792 0x8 main.o
+ 0x00001792 PushMagicWord
*(.init3)
*(.init4)
- .init4 0x000017c8 0x16 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_copy_data.o)
- 0x000017c8 __do_copy_data
- .init4 0x000017de 0x10 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_clear_bss.o)
- 0x000017de __do_clear_bss
+ .init4 0x0000179a 0x16 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_copy_data.o)
+ 0x0000179a __do_copy_data
+ .init4 0x000017b0 0x10 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_clear_bss.o)
+ 0x000017b0 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
@@ -218,40 +216,40 @@ LOAD /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a
*(.init8)
*(.init8)
*(.init9)
- .init9 0x000017ee 0x4 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
+ .init9 0x000017c0 0x4 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
*(.init9)
*(.text)
- .text 0x000017f2 0x2 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
- 0x000017f2 __vector_1
- 0x000017f2 __vector_12
- 0x000017f2 __bad_interrupt
- 0x000017f2 __vector_6
- 0x000017f2 __vector_3
- 0x000017f2 __vector_11
- 0x000017f2 __vector_13
- 0x000017f2 __vector_7
- 0x000017f2 __vector_5
- 0x000017f2 __vector_4
- 0x000017f2 __vector_9
- 0x000017f2 __vector_8
- 0x000017f2 __vector_14
- 0x000017f2 __vector_10
- .text 0x000017f4 0x314 usbdrv/usbdrvasm.o
- 0x000017f4 usbCrc16
- 0x0000181e usbCrc16Append
- 0x0000184c __vector_2
- 0x00001826 usbMeasureFrameLength
- .text 0x00001b08 0x452 main.o
- 0x00001bbc main
- .text 0x00001f5a 0x7e libs-device/osccal.o
- 0x00001f5a calibrateOscillator
- 0x00001fd8 . = ALIGN (0x2)
+ .text 0x000017c4 0x2 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/../../../../avr/lib/avr25/crttn85.o
+ 0x000017c4 __vector_1
+ 0x000017c4 __vector_12
+ 0x000017c4 __bad_interrupt
+ 0x000017c4 __vector_6
+ 0x000017c4 __vector_3
+ 0x000017c4 __vector_11
+ 0x000017c4 __vector_13
+ 0x000017c4 __vector_7
+ 0x000017c4 __vector_5
+ 0x000017c4 __vector_4
+ 0x000017c4 __vector_9
+ 0x000017c4 __vector_8
+ 0x000017c4 __vector_14
+ 0x000017c4 __vector_10
+ .text 0x000017c6 0x314 usbdrv/usbdrvasm.o
+ 0x000017c6 usbCrc16
+ 0x000017f0 usbCrc16Append
+ 0x0000181e __vector_2
+ 0x000017f8 usbMeasureFrameLength
+ .text 0x00001ada 0x42a main.o
+ 0x00001b8e main
+ .text 0x00001f04 0x7e libs-device/osccal.o
+ 0x00001f04 calibrateOscillator
+ 0x00001f82 . = ALIGN (0x2)
*(.text.*)
- 0x00001fd8 . = ALIGN (0x2)
+ 0x00001f82 . = ALIGN (0x2)
*(.fini9)
- .fini9 0x00001fd8 0x0 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_exit.o)
- 0x00001fd8 exit
- 0x00001fd8 _exit
+ .fini9 0x00001f82 0x0 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_exit.o)
+ 0x00001f82 exit
+ 0x00001f82 _exit
*(.fini9)
*(.fini8)
*(.fini8)
@@ -270,11 +268,11 @@ LOAD /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a
*(.fini1)
*(.fini1)
*(.fini0)
- .fini0 0x00001fd8 0x4 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_exit.o)
+ .fini0 0x00001f82 0x4 /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a(_exit.o)
*(.fini0)
- 0x00001fdc _etext = .
+ 0x00001f86 _etext = .
-.data 0x00800060 0x6 load address 0x00001fdc
+.data 0x00800060 0x6 load address 0x00001f86
0x00800060 PROVIDE (__data_start, .)
*(.data)
.data 0x00800060 0x6 main.o
@@ -305,8 +303,8 @@ LOAD /usr/local/CrossPack-AVR-20100115/lib/gcc/avr/4.3.3/avr25/libgcc.a
0x00800084 usbConfiguration
0x00800085 usbRxBuf
0x0080009b PROVIDE (__bss_end, .)
- 0x00001fdc __data_load_start = LOADADDR (.data)
- 0x00001fe2 __data_load_end = (__data_load_start + SIZEOF (.data))
+ 0x00001f86 __data_load_start = LOADADDR (.data)
+ 0x00001f8c __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x0080009b 0x0
0x0080009b PROVIDE (__noinit_start, .)
diff --git a/firmware/main.o b/firmware/main.o
index ccbea1a..d83c0c8 100644
--- a/firmware/main.o
+++ b/firmware/main.o
Binary files differ
diff --git a/firmware/nyan-cat-dump.bin b/firmware/nyan-cat-dump.bin
deleted file mode 100644
index 123a7c6..0000000
--- a/firmware/nyan-cat-dump.bin
+++ /dev/null
Binary files differ
diff --git a/firmware/temp-dump.bin b/firmware/temp-dump.bin
deleted file mode 100644
index a5bdf24..0000000
--- a/firmware/temp-dump.bin
+++ /dev/null
Binary files differ
diff --git a/firmware/upload.rb b/firmware/upload.rb
index 8561867..abfd15e 100644
--- a/firmware/upload.rb
+++ b/firmware/upload.rb
@@ -13,7 +13,7 @@ class MicroBoot
def self.all
usb = LIBUSB::Context.new
usb.devices.select { |device|
- device.product == 'uBoot'
+ device.idVendor == 0x16d0 && device.idProduct == 0x0753 #&& device.product == "\xB5B"
}.map { |device|
self.new(device)
}
diff --git a/firmware/usbconfig.h b/firmware/usbconfig.h
index bca0ec0..f093a28 100644
--- a/firmware/usbconfig.h
+++ b/firmware/usbconfig.h
@@ -177,12 +177,12 @@
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID 0xc0, 0x16 /* = 0x16c0 = 5824 = voti.nl */
+#define USB_CFG_VENDOR_ID 0xD0, 0x16 /* = 0x16d0 */
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
*/
-#define USB_CFG_DEVICE_ID 0xdc, 0x05 /* = 0x05dc = 1500 */
+#define USB_CFG_DEVICE_ID 0x53, 0x07 /* = 0x0753 = Digistump */
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -195,8 +195,8 @@
// electric arrow - not compliant with obdev's rules but we'll have our own vid-pid soon
//#define USB_CFG_VENDOR_NAME 0x2301
//#define USB_CFG_VENDOR_NAME_LEN 1
-#define USB_CFG_VENDOR_NAME 'c','r','e','a','t','i','v','e','p','o','n','y','.','c','o','m'
-#define USB_CFG_VENDOR_NAME_LEN 16
+//#define USB_CFG_VENDOR_NAME 'd','i','g','i','s','t','u','m','p','.','c','o','m'
+//#define USB_CFG_VENDOR_NAME_LEN 13
/* These two values define the vendor name returned by the USB device. The name
* must be given as a list of characters under single quotes. The characters
* are interpreted as Unicode (UTF-16) entities.
@@ -205,8 +205,8 @@
* obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
* details.
*/
-#define USB_CFG_DEVICE_NAME 'u','B','o','o','t'
-#define USB_CFG_DEVICE_NAME_LEN 5
+//#define USB_CFG_DEVICE_NAME 0x00B5,'B'
+//#define USB_CFG_DEVICE_NAME_LEN 2
/* Same as above for the device name. If you don't want a device name, undefine
* the macros. See the file USB-IDs-for-free.txt before you assign a name if
* you use a shared VID/PID.
@@ -222,6 +222,8 @@
*/
#define USB_CFG_DEVICE_CLASS 0xff /* set to 0 if deferred to interface */
#define USB_CFG_DEVICE_SUBCLASS 0
+//#define USB_CFG_DEVICE_CLASS 0xFE /* application specific */
+//#define USB_CFG_DEVICE_SUBCLASS 0x01 /* device firmware upgrade */
/* See USB specification if you want to conform to an existing device class.
* Class 0xff is "vendor specific".
*/
diff --git a/firmware/usbdrv/oddebug.c.lst b/firmware/usbdrv/oddebug.c.lst
index aeee3b7..ba3d513 100644
--- a/firmware/usbdrv/oddebug.c.lst
+++ b/firmware/usbdrv/oddebug.c.lst
@@ -1,4 +1,4 @@
-GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s page 1
+GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s page 1
1 .file "oddebug.c"
@@ -8,16 +8,16 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s page
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
- GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s page 2
+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s page 2
DEFINED SYMBOLS
*ABS*:00000000 oddebug.c
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:2 *ABS*:0000003f __SREG__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:3 *ABS*:0000003e __SP_H__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:4 *ABS*:0000003d __SP_L__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:5 *ABS*:00000034 __CCP__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:6 *ABS*:00000000 __tmp_reg__
-/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxu41o.s:7 *ABS*:00000001 __zero_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:2 *ABS*:0000003f __SREG__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:3 *ABS*:0000003e __SP_H__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:4 *ABS*:0000003d __SP_L__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:5 *ABS*:00000034 __CCP__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:6 *ABS*:00000000 __tmp_reg__
+/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccTJJzqV.s:7 *ABS*:00000001 __zero_reg__
NO UNDEFINED SYMBOLS