diff options
author | Jenna Fox <a@creativepony.com> | 2012-09-24 00:59:13 +1000 |
---|---|---|
committer | Jenna Fox <a@creativepony.com> | 2012-09-24 00:59:13 +1000 |
commit | c2bee67e1e35dda3cd1aa9fabc755be39de4a83c (patch) | |
tree | 11efff2c298d066dd5f02aa970d4552446ac382e | |
parent | d9ed646bd2495c6ab8524a35bd984f5526ee65ec (diff) | |
download | micronucleus-c2bee67e1e35dda3cd1aa9fabc755be39de4a83c.tar.gz micronucleus-c2bee67e1e35dda3cd1aa9fabc755be39de4a83c.tar.bz2 micronucleus-c2bee67e1e35dda3cd1aa9fabc755be39de4a83c.zip |
Victory
-rw-r--r-- | firmware/libs-device/osccal.c.lst | 20 | ||||
-rwxr-xr-x | firmware/main.bin | bin | 8903 -> 8969 bytes | |||
-rw-r--r-- | firmware/main.c | 46 | ||||
-rw-r--r-- | firmware/main.c.lst | 1790 | ||||
-rw-r--r-- | firmware/main.hex | 194 | ||||
-rw-r--r-- | firmware/main.map | 70 | ||||
-rw-r--r-- | firmware/main.o | bin | 5784 -> 5952 bytes | |||
-rw-r--r-- | firmware/nyan-cat-dump.bin | bin | 0 -> 7646 bytes | |||
-rw-r--r-- | firmware/upload.rb | 1 | ||||
-rw-r--r-- | firmware/usbdrv/oddebug.c.lst | 16 |
10 files changed, 1078 insertions, 1059 deletions
diff --git a/firmware/libs-device/osccal.c.lst b/firmware/libs-device/osccal.c.lst index ae4bb0c..32f898a 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//cc0r4xDP.s page 1 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s page 1 1 .file "osccal.c" @@ -58,7 +58,7 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s page 55 0046 8C17 cp r24,r28 56 0048 9D07 cpc r25,r29 57 004a 04F4 brge .L6 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s page 2 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s page 2 58 004c 01B7 in r16,81-32 @@ -85,18 +85,18 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s page 79 0070 FF90 pop r15 80 0072 0895 ret 81 .size calibrateOscillator, .-calibrateOscillator -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s page 3 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s page 3 DEFINED SYMBOLS *ABS*:00000000 osccal.c -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:2 *ABS*:0000003f __SREG__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:3 *ABS*:0000003e __SP_H__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:4 *ABS*:0000003d __SP_L__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:5 *ABS*:00000034 __CCP__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:7 *ABS*:00000001 __zero_reg__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cc0r4xDP.s:11 .text:00000000 calibrateOscillator +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:2 *ABS*:0000003f __SREG__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:3 *ABS*:0000003e __SP_H__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:4 *ABS*:0000003d __SP_L__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:5 *ABS*:00000034 __CCP__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:6 *ABS*:00000000 __tmp_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:7 *ABS*:00000001 __zero_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccmICX6q.s:11 .text:00000000 calibrateOscillator UNDEFINED SYMBOLS usbMeasureFrameLength diff --git a/firmware/main.bin b/firmware/main.bin Binary files differindex 39abe62..078f449 100755 --- a/firmware/main.bin +++ b/firmware/main.bin diff --git a/firmware/main.c b/firmware/main.c index b8a88ea..f94498f 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -121,6 +121,7 @@ static inline void eraseFlashPage(void) { } static void writeFlashPage(void) { + didWriteSomething = 1; cli(); boot_page_write(currentAddress - 2); boot_spm_busy_wait(); // Wait until the memory is written. @@ -183,29 +184,6 @@ static void fillFlashWithVectors(void) { writeFlashPage(); } - -static inline __attribute__((noreturn)) void leaveBootloader(void) { - //DBG1(0x01, 0, 0); - bootLoaderExit(); - cli(); - USB_INTR_ENABLE = 0; - USB_INTR_CFG = 0; /* also reset config bits */ - - // make sure remainder of flash is erased and write checksum and application reset vectors - if (didWriteSomething) { - while (currentAddress < BOOTLOADER_ADDRESS) { - fillFlashWithVectors(); - } - } - - // clear magic word from bottom of stack before jumping to the app - *(uint8_t*)(RAMEND) = 0x00; - *(uint8_t*)(RAMEND-1) = 0x00; - - // jump to application reset vector at end of flash - asm volatile ("rjmp __vectors - 4"); -} - /* ------------------------------------------------------------------------ */ static uchar usbFunctionSetup(uchar data[8]) { @@ -319,6 +297,28 @@ static inline void tiny85FlashWrites(void) { } } +static inline __attribute__((noreturn)) void leaveBootloader(void) { + //DBG1(0x01, 0, 0); + bootLoaderExit(); + cli(); + USB_INTR_ENABLE = 0; + USB_INTR_CFG = 0; /* also reset config bits */ + + // make sure remainder of flash is erased and write checksum and application reset vectors + if (didWriteSomething) { + while (currentAddress < BOOTLOADER_ADDRESS) { + fillFlashWithVectors(); + } + } + + // clear magic word from bottom of stack before jumping to the app + *(uint8_t*)(RAMEND) = 0x00; + *(uint8_t*)(RAMEND-1) = 0x00; + + // jump to application reset vector at end of flash + asm volatile ("rjmp __vectors - 4"); +} + int __attribute__((noreturn)) main(void) { uint16_t idlePolls = 0; diff --git a/firmware/main.c.lst b/firmware/main.c.lst index 368e7c8..cb6b60c 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//cckyYI40.s page 1 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 1 1 .file "main.c" @@ -15,905 +15,923 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 - 15 /* #APP */ - 16 ; 124 "main.c" 1 - 17 0000 F894 cli - 18 ; 0 "" 2 - 19 /* #NOAPP */ - 20 0002 E091 0000 lds r30,currentAddress - 21 0006 F091 0000 lds r31,currentAddress+1 - 22 000a 3297 sbiw r30,2 - 23 000c 85E0 ldi r24,lo8(5) - 24 /* #APP */ - 25 ; 125 "main.c" 1 - 26 000e 8093 5700 sts 87, r24 - 27 0012 E895 spm - 28 - 29 ; 0 "" 2 - 30 /* #NOAPP */ - 31 .L2: - 32 0014 07B6 in __tmp_reg__,87-32 - 33 0016 00FC sbrc __tmp_reg__,0 - 34 0018 00C0 rjmp .L2 - 35 /* #APP */ - 36 ; 127 "main.c" 1 - 37 001a 7894 sei - 38 ; 0 "" 2 - 39 /* epilogue start */ - 40 /* #NOAPP */ - 41 001c 0895 ret - 42 .size writeFlashPage, .-writeFlashPage - 43 .type writeWordToPageBuffer, @function - 44 writeWordToPageBuffer: - 45 /* prologue: function */ - 46 /* frame size = 0 */ - 47 /* stack size = 0 */ - 48 .L__stack_usage = 0 - 49 001e 2091 0000 lds r18,currentAddress - 50 0022 3091 0000 lds r19,currentAddress+1 - 51 0026 2115 cp r18,__zero_reg__ - 52 0028 3105 cpc r19,__zero_reg__ - 53 002a 01F4 brne .+2 - 54 002c 00C0 rjmp .L4 - 55 002e 2430 cpi r18,4 - 56 0030 3105 cpc r19,__zero_reg__ - 57 0032 01F0 breq .L9 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 2 - - - 58 0034 44E1 ldi r20,hi8(5372) - 59 0036 2C3F cpi r18,lo8(5372) - 60 0038 3407 cpc r19,r20 - 61 003a 01F4 brne .L6 - 62 003c 8091 0000 lds r24,vectorTemp - 63 0040 9091 0000 lds r25,vectorTemp+1 - 64 0044 8E57 subi r24,lo8(-(1410)) - 65 0046 9A4F sbci r25,hi8(-(1410)) - 66 0048 00C0 rjmp .L7 - 67 .L6: - 68 004a 44E1 ldi r20,hi8(5374) - 69 004c 2E3F cpi r18,lo8(5374) - 70 004e 3407 cpc r19,r20 - 71 0050 01F4 brne .L7 - 72 0052 8091 0000 lds r24,vectorTemp+2 - 73 0056 9091 0000 lds r25,vectorTemp+2+1 - 74 005a 8D57 subi r24,lo8(-(1411)) - 75 005c 9A4F sbci r25,hi8(-(1411)) - 76 005e 00C0 rjmp .L7 - 77 .L9: - 78 0060 8FE7 ldi r24,lo8(-13697) - 79 0062 9AEC ldi r25,hi8(-13697) - 80 .L7: - 81 /* #APP */ - 82 ; 161 "main.c" 1 - 83 0064 F894 cli - 84 ; 0 "" 2 - 85 /* #NOAPP */ - 86 0066 E091 0000 lds r30,currentAddress - 87 006a F091 0000 lds r31,currentAddress+1 - 88 006e 21E0 ldi r18,lo8(1) - 89 /* #APP */ - 90 ; 162 "main.c" 1 - 91 0070 0C01 movw r0, r24 - 92 0072 2093 5700 sts 87, r18 - 93 0076 E895 spm - 94 0078 1124 clr r1 - 95 - 96 ; 0 "" 2 - 97 ; 163 "main.c" 1 - 98 007a 7894 sei - 99 ; 0 "" 2 - 100 /* #NOAPP */ - 101 007c 4091 0000 lds r20,currentAddress - 102 0080 5091 0000 lds r21,currentAddress+1 - 103 0084 FA01 movw r30,r20 - 104 /* #APP */ - 105 ; 168 "main.c" 1 - 106 0086 2591 lpm r18, Z+ - 107 0088 3491 lpm r19, Z - 108 - 109 ; 0 "" 2 - 110 /* #NOAPP */ - 111 008a 2823 and r18,r24 - 112 008c 3923 and r19,r25 - 113 008e 2817 cp r18,r24 - 114 0090 3907 cpc r19,r25 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 3 - - - 115 0092 01F0 breq .L8 - 116 0094 8091 0000 lds r24,events - 117 0098 8160 ori r24,lo8(1) - 118 009a 8093 0000 sts events,r24 - 119 .L8: - 120 009e 4E5F subi r20,lo8(-(2)) - 121 00a0 5F4F sbci r21,hi8(-(2)) - 122 00a2 5093 0000 sts currentAddress+1,r21 - 123 00a6 4093 0000 sts currentAddress,r20 - 124 /* epilogue start */ - 125 00aa 0895 ret - 126 .L4: - 127 00ac 81E1 ldi r24,lo8(17) - 128 /* #APP */ - 129 ; 159 "main.c" 1 - 130 00ae 8093 5700 sts 87, r24 - 131 00b2 E895 spm - 132 - 133 ; 0 "" 2 - 134 /* #NOAPP */ - 135 00b4 00C0 rjmp .L9 - 136 .size writeWordToPageBuffer, .-writeWordToPageBuffer - 137 .type fillFlashWithVectors, @function - 138 fillFlashWithVectors: - 139 00b6 CF93 push r28 - 140 00b8 DF93 push r29 - 141 /* prologue: function */ - 142 /* frame size = 0 */ - 143 /* stack size = 2 */ - 144 .L__stack_usage = 2 - 145 00ba C091 0000 lds r28,currentAddress - 146 00be D091 0000 lds r29,currentAddress+1 - 147 00c2 CF73 andi r28,lo8(63) - 148 00c4 D070 andi r29,hi8(63) - 149 .L11: - 150 00c6 8FEF ldi r24,lo8(-1) - 151 00c8 9FEF ldi r25,hi8(-1) - 152 00ca 00D0 rcall writeWordToPageBuffer - 153 00cc 2296 adiw r28,2 - 154 00ce C034 cpi r28,64 - 155 00d0 D105 cpc r29,__zero_reg__ - 156 00d2 04F0 brlt .L11 - 157 00d4 00D0 rcall writeFlashPage - 158 /* epilogue start */ - 159 00d6 DF91 pop r29 - 160 00d8 CF91 pop r28 - 161 00da 0895 ret - 162 .size fillFlashWithVectors, .-fillFlashWithVectors - 163 .section .init3,"ax",@progbits - 164 .global PushMagicWord - 165 .type PushMagicWord, @function - 166 PushMagicWord: - 167 /* prologue: naked */ - 168 /* frame size = 0 */ - 169 /* stack size = 0 */ - 170 .L__stack_usage = 0 - 171 /* #APP */ -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 4 - - - 172 ; 280 "main.c" 1 - 173 0000 00EB ldi r16, 0xB0 - 174 ; 0 "" 2 - 175 ; 281 "main.c" 1 - 176 0002 0F93 push r16 - 177 ; 0 "" 2 - 178 ; 282 "main.c" 1 - 179 0004 07E0 ldi r16, 0x07 - 180 ; 0 "" 2 - 181 ; 283 "main.c" 1 - 182 0006 0F93 push r16 - 183 ; 0 "" 2 - 184 /* epilogue start */ - 185 /* #NOAPP */ - 186 .size PushMagicWord, .-PushMagicWord - 187 .text - 188 .global main - 189 .type main, @function - 190 main: - 191 00dc DF93 push r29 - 192 00de CF93 push r28 - 193 00e0 0F92 push __tmp_reg__ - 194 00e2 CDB7 in r28,__SP_L__ - 195 00e4 DEB7 in r29,__SP_H__ - 196 /* prologue: function */ - 197 /* frame size = 1 */ - 198 /* stack size = 3 */ - 199 .L__stack_usage = 3 - 200 00e6 88E1 ldi r24,lo8(24) - 201 /* #APP */ - 202 ; 326 "main.c" 1 - 203 00e8 0FB6 in __tmp_reg__, __SREG__ - 204 00ea F894 cli - 205 00ec 81BD out 33, r24 - 206 00ee 11BC out 33, __zero_reg__ - 207 00f0 0FBE out __SREG__,__tmp_reg__ - 208 - 209 ; 0 "" 2 - 210 /* #NOAPP */ - 211 00f2 E0E0 ldi r30,lo8(0) - 212 00f4 F0E0 ldi r31,hi8(0) - 213 /* #APP */ - 214 ; 301 "main.c" 1 - 215 00f6 8591 lpm r24, Z+ - 216 00f8 9491 lpm r25, Z - 217 - 218 ; 0 "" 2 - 219 /* #NOAPP */ - 220 00fa 2AEC ldi r18,hi8(-13697) - 221 00fc 8F37 cpi r24,lo8(-13697) - 222 00fe 9207 cpc r25,r18 - 223 0100 01F4 brne .L14 - 224 0102 E4E0 ldi r30,lo8(4) - 225 0104 F0E0 ldi r31,hi8(4) - 226 /* #APP */ - 227 ; 302 "main.c" 1 - 228 0106 8591 lpm r24, Z+ -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 5 - - - 229 0108 9491 lpm r25, Z - 230 - 231 ; 0 "" 2 - 232 /* #NOAPP */ - 233 010a 3AEC ldi r19,hi8(-13697) - 234 010c 8F37 cpi r24,lo8(-13697) - 235 010e 9307 cpc r25,r19 - 236 0110 01F0 breq .L15 - 237 .L14: - 238 0112 00D0 rcall fillFlashWithVectors - 239 .L15: - 240 0114 1092 0000 sts currentAddress+1,__zero_reg__ - 241 0118 1092 0000 sts currentAddress,__zero_reg__ - 242 011c 87B3 in r24,55-32 - 243 011e 8360 ori r24,lo8(3) - 244 0120 87BB out 55-32,r24 - 245 0122 C09A sbi 56-32,0 - 246 0124 C198 cbi 56-32,1 - 247 0126 AC9A sbi 53-32,4 - 248 0128 8BB7 in r24,91-32 - 249 012a 8062 ori r24,lo8(32) - 250 012c 8BBF out 91-32,r24 - 251 012e BB9A sbi 55-32,3 - 252 0130 8FE4 ldi r24,lo8(1649999) - 253 0132 9DE2 ldi r25,hi8(1649999) - 254 0134 A9E1 ldi r26,hlo8(1649999) - 255 0136 8150 1:subi r24,1 - 256 0138 9040 sbci r25,0 - 257 013a A040 sbci r26,0 - 258 013c 01F4 brne 1b - 259 013e 00C0 rjmp . - 260 0140 0000 nop - 261 0142 BB98 cbi 55-32,3 - 262 /* #APP */ - 263 ; 294 "main.c" 1 - 264 0144 7894 sei - 265 ; 0 "" 2 - 266 /* #NOAPP */ - 267 0146 EE24 clr r14 - 268 0148 FF24 clr r15 - 269 .L63: - 270 014a 2091 0000 lds r18,usbRxLen - 271 014e 2350 subi r18,lo8(-(-3)) - 272 0150 27FD sbrc r18,7 - 273 0152 00C0 rjmp .L16 - 274 0154 8091 0000 lds r24,usbInputBufOffset - 275 0158 ECE0 ldi r30,lo8(12) - 276 015a F0E0 ldi r31,hi8(12) - 277 015c E81B sub r30,r24 - 278 015e F109 sbc r31,__zero_reg__ - 279 0160 E050 subi r30,lo8(-(usbRxBuf)) - 280 0162 F040 sbci r31,hi8(-(usbRxBuf)) - 281 0164 8091 0000 lds r24,usbRxToken - 282 0168 8D32 cpi r24,lo8(45) - 283 016a 01F0 breq .+2 - 284 016c 00C0 rjmp .L17 - 285 016e 2830 cpi r18,lo8(8) -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 6 - - - 286 0170 01F0 breq .+2 - 287 0172 00C0 rjmp .L18 - 288 0174 83EC ldi r24,lo8(-61) - 289 0176 8093 0000 sts usbTxBuf,r24 - 290 017a 8AE5 ldi r24,lo8(90) - 291 017c 8093 0000 sts usbTxLen,r24 - 292 0180 1092 0000 sts usbMsgFlags,__zero_reg__ - 293 0184 9081 ld r25,Z - 294 0186 9076 andi r25,lo8(96) - 295 0188 8181 ldd r24,Z+1 - 296 018a 9923 tst r25 - 297 018c 01F0 breq .L19 - 298 018e 8823 tst r24 - 299 0190 01F4 brne .L20 - 300 0192 80E0 ldi r24,lo8(replyBuffer.1756) - 301 0194 90E0 ldi r25,hi8(replyBuffer.1756) - 302 0196 9093 0000 sts usbMsgPtr+1,r25 - 303 019a 8093 0000 sts usbMsgPtr,r24 - 304 019e 25E0 ldi r18,lo8(5) - 305 01a0 00C0 rjmp .L25 - 306 .L20: - 307 01a2 8130 cpi r24,lo8(1) - 308 01a4 01F4 brne .L22 - 309 01a6 C098 cbi 56-32,0 - 310 01a8 8281 ldd r24,Z+2 - 311 01aa 8093 0000 sts writeLength,r24 - 312 01ae 8481 ldd r24,Z+4 - 313 01b0 9581 ldd r25,Z+5 - 314 01b2 9093 0000 sts currentAddress+1,r25 - 315 01b6 8093 0000 sts currentAddress,r24 - 316 01ba 8081 ld r24,Z - 317 01bc 87FD sbrc r24,7 - 318 01be 00C0 rjmp .L23 - 319 01c0 2FEF ldi r18,lo8(-1) - 320 01c2 00C0 rjmp .L24 - 321 .L22: - 322 01c4 8091 0000 lds r24,events - 323 01c8 8460 ori r24,lo8(4) - 324 01ca 8093 0000 sts events,r24 - 325 01ce 20E0 ldi r18,lo8(0) - 326 01d0 00C0 rjmp .L25 - 327 .L19: - 328 01d2 9281 ldd r25,Z+2 - 329 01d4 1092 0000 sts usbTxBuf+9,__zero_reg__ - 330 01d8 8823 tst r24 - 331 01da 01F4 brne .L26 - 332 01dc 1092 0000 sts usbTxBuf+10,__zero_reg__ - 333 01e0 80E0 ldi r24,lo8(usbTxBuf+9) - 334 01e2 90E0 ldi r25,hi8(usbTxBuf+9) - 335 01e4 22E0 ldi r18,lo8(2) - 336 01e6 00C0 rjmp .L27 - 337 .L26: - 338 01e8 8530 cpi r24,lo8(5) - 339 01ea 01F4 brne .L28 - 340 01ec 9093 0000 sts usbNewDeviceAddr,r25 - 341 01f0 00C0 rjmp .L70 - 342 .L28: -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 7 - - - 343 01f2 8630 cpi r24,lo8(6) - 344 01f4 01F4 brne .L29 - 345 01f6 8381 ldd r24,Z+3 - 346 01f8 8130 cpi r24,lo8(1) - 347 01fa 01F4 brne .L30 - 348 01fc 80E0 ldi r24,lo8(usbDescriptorDevice) - 349 01fe 90E0 ldi r25,hi8(usbDescriptorDevice) - 350 0200 00C0 rjmp .L69 - 351 .L30: - 352 0202 8230 cpi r24,lo8(2) - 353 0204 01F4 brne .L32 - 354 0206 80E0 ldi r24,lo8(usbDescriptorConfiguration) - 355 0208 90E0 ldi r25,hi8(usbDescriptorConfiguration) - 356 .L69: - 357 020a 9093 0000 sts usbMsgPtr+1,r25 - 358 020e 8093 0000 sts usbMsgPtr,r24 - 359 0212 22E1 ldi r18,lo8(18) - 360 0214 00C0 rjmp .L31 - 361 .L32: - 362 0216 8330 cpi r24,lo8(3) - 363 0218 01F4 brne .L65 - 364 021a 9923 tst r25 - 365 021c 01F4 brne .L33 - 366 021e 80E0 ldi r24,lo8(usbDescriptorString0) - 367 0220 90E0 ldi r25,hi8(usbDescriptorString0) - 368 0222 9093 0000 sts usbMsgPtr+1,r25 - 369 0226 8093 0000 sts usbMsgPtr,r24 - 370 022a 24E0 ldi r18,lo8(4) - 371 022c 00C0 rjmp .L31 - 372 .L33: - 373 022e 9130 cpi r25,lo8(1) - 374 0230 01F4 brne .L34 - 375 0232 80E0 ldi r24,lo8(usbDescriptorStringVendor) - 376 0234 90E0 ldi r25,hi8(usbDescriptorStringVendor) - 377 0236 9093 0000 sts usbMsgPtr+1,r25 - 378 023a 8093 0000 sts usbMsgPtr,r24 - 379 023e 22E2 ldi r18,lo8(34) - 380 0240 00C0 rjmp .L31 - 381 .L34: - 382 0242 9230 cpi r25,lo8(2) - 383 0244 01F4 brne .L65 - 384 0246 80E0 ldi r24,lo8(usbDescriptorStringDevice) - 385 0248 90E0 ldi r25,hi8(usbDescriptorStringDevice) - 386 024a 9093 0000 sts usbMsgPtr+1,r25 - 387 024e 8093 0000 sts usbMsgPtr,r24 - 388 0252 2CE0 ldi r18,lo8(12) - 389 0254 00C0 rjmp .L31 - 390 .L65: - 391 0256 20E0 ldi r18,lo8(0) - 392 .L31: - 393 0258 80E4 ldi r24,lo8(64) - 394 025a 8093 0000 sts usbMsgFlags,r24 - 395 025e 00C0 rjmp .L25 - 396 .L29: - 397 0260 8830 cpi r24,lo8(8) - 398 0262 01F0 breq .L66 - 399 0264 8930 cpi r24,lo8(9) -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 8 - - - 400 0266 01F4 brne .L36 - 401 0268 9093 0000 sts usbConfiguration,r25 - 402 026c 00C0 rjmp .L70 - 403 .L36: - 404 026e 8A30 cpi r24,lo8(10) - 405 0270 01F0 breq .L67 - 406 .L70: - 407 0272 80E0 ldi r24,lo8(usbTxBuf+9) - 408 0274 90E0 ldi r25,hi8(usbTxBuf+9) - 409 0276 20E0 ldi r18,lo8(0) - 410 0278 00C0 rjmp .L27 - 411 .L66: - 412 027a 80E0 ldi r24,lo8(usbConfiguration) - 413 027c 90E0 ldi r25,hi8(usbConfiguration) - 414 027e 00C0 rjmp .L71 - 415 .L67: - 416 0280 80E0 ldi r24,lo8(usbTxBuf+9) - 417 0282 90E0 ldi r25,hi8(usbTxBuf+9) - 418 .L71: - 419 0284 21E0 ldi r18,lo8(1) - 420 .L27: - 421 0286 9093 0000 sts usbMsgPtr+1,r25 - 422 028a 8093 0000 sts usbMsgPtr,r24 - 423 028e 00C0 rjmp .L25 - 424 .L23: - 425 0290 2681 ldd r18,Z+6 - 426 .L24: - 427 0292 80E8 ldi r24,lo8(-128) - 428 0294 8093 0000 sts usbMsgFlags,r24 - 429 0298 00C0 rjmp .L37 - 430 .L25: - 431 029a 8781 ldd r24,Z+7 - 432 029c 8823 tst r24 - 433 029e 01F4 brne .L37 - 434 02a0 8681 ldd r24,Z+6 - 435 02a2 8217 cp r24,r18 - 436 02a4 00F4 brsh .L37 - 437 02a6 282F mov r18,r24 - 438 .L37: - 439 02a8 2093 0000 sts usbMsgLen,r18 - 440 02ac 00C0 rjmp .L18 - 441 .L17: - 442 02ae 8091 0000 lds r24,usbMsgFlags - 443 02b2 87FF sbrs r24,7 - 444 02b4 00C0 rjmp .L18 - 445 02b6 8091 0000 lds r24,writeLength - 446 02ba 821B sub r24,r18 - 447 02bc 8093 0000 sts writeLength,r24 - 448 02c0 8F01 movw r16,r30 - 449 .L42: - 450 02c2 8091 0000 lds r24,currentAddress - 451 02c6 9091 0000 lds r25,currentAddress+1 - 452 02ca 0097 sbiw r24,0 - 453 02cc 01F4 brne .L38 - 454 02ce D801 movw r26,r16 - 455 02d0 8D91 ld r24,X+ - 456 02d2 9C91 ld r25,X -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 9 - - - 457 02d4 1197 sbiw r26,1 - 458 02d6 9093 0000 sts vectorTemp+1,r25 - 459 02da 8093 0000 sts vectorTemp,r24 - 460 02de 00C0 rjmp .L39 - 461 .L38: - 462 02e0 8430 cpi r24,4 - 463 02e2 9105 cpc r25,__zero_reg__ - 464 02e4 01F4 brne .L40 - 465 02e6 F801 movw r30,r16 - 466 02e8 8081 ld r24,Z - 467 02ea 9181 ldd r25,Z+1 - 468 02ec 9093 0000 sts vectorTemp+2+1,r25 - 469 02f0 8093 0000 sts vectorTemp+2,r24 - 470 02f4 00C0 rjmp .L39 - 471 .L40: - 472 02f6 F4E1 ldi r31,hi8(5370) - 473 02f8 8A3F cpi r24,lo8(5370) - 474 02fa 9F07 cpc r25,r31 - 475 02fc 00F0 brlo .L39 - 476 02fe 81E1 ldi r24,lo8(17) - 477 /* #APP */ - 478 ; 257 "main.c" 1 - 479 0300 8093 5700 sts 87, r24 - 480 0304 E895 spm - 481 - 482 ; 0 "" 2 - 483 /* #NOAPP */ - 484 0306 00C0 rjmp .L41 - 485 .L39: - 486 0308 D801 movw r26,r16 - 487 030a 8D91 ld r24,X+ - 488 030c 9D91 ld r25,X+ - 489 030e 8D01 movw r16,r26 - 490 0310 2983 std Y+1,r18 - 491 0312 00D0 rcall writeWordToPageBuffer - 492 0314 2981 ldd r18,Y+1 - 493 0316 2250 subi r18,lo8(-(-2)) - 494 0318 01F4 brne .L42 - 495 .L41: - 496 031a 8091 0000 lds r24,writeLength - 497 031e 8823 tst r24 - 498 0320 01F4 brne .L18 - 499 0322 8091 0000 lds r24,events - 500 0326 8260 ori r24,lo8(2) - 501 0328 8093 0000 sts events,r24 - 502 032c 1092 0000 sts usbMsgLen,__zero_reg__ - 503 .L18: - 504 0330 1092 0000 sts usbRxLen,__zero_reg__ - 505 .L16: - 506 0334 8091 0000 lds r24,usbTxLen - 507 0338 84FF sbrs r24,4 - 508 033a 00C0 rjmp .L43 - 509 033c 8091 0000 lds r24,usbMsgLen - 510 0340 8F3F cpi r24,lo8(-1) - 511 0342 01F4 brne .+2 - 512 0344 00C0 rjmp .L43 - 513 0346 082F mov r16,r24 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 10 - - - 514 0348 8930 cpi r24,lo8(9) - 515 034a 00F0 brlo .L44 - 516 034c 08E0 ldi r16,lo8(8) - 517 .L44: - 518 034e 801B sub r24,r16 - 519 0350 8093 0000 sts usbMsgLen,r24 - 520 0354 8091 0000 lds r24,usbTxBuf - 521 0358 98E8 ldi r25,lo8(-120) - 522 035a 8927 eor r24,r25 - 523 035c 8093 0000 sts usbTxBuf,r24 - 524 0360 0023 tst r16 - 525 0362 01F0 breq .L45 - 526 0364 E091 0000 lds r30,usbMsgPtr - 527 0368 F091 0000 lds r31,usbMsgPtr+1 - 528 036c 9091 0000 lds r25,usbMsgFlags - 529 0370 802F mov r24,r16 - 530 0372 8150 subi r24,lo8(-(-1)) - 531 0374 96FF sbrs r25,6 - 532 0376 00C0 rjmp .L46 - 533 0378 90E0 ldi r25,lo8(0) - 534 037a 8050 subi r24,lo8(-(usbTxBuf+2)) - 535 037c 9040 sbci r25,hi8(-(usbTxBuf+2)) - 536 037e A0E0 ldi r26,lo8(usbTxBuf+1) - 537 0380 B0E0 ldi r27,hi8(usbTxBuf+1) - 538 .L47: - 539 /* #APP */ - 540 ; 504 "usbdrv/usbdrv.c" 1 - 541 0382 2491 lpm r18, Z - 542 - 543 ; 0 "" 2 - 544 /* #NOAPP */ - 545 0384 2D93 st X+,r18 - 546 0386 3196 adiw r30,1 - 547 0388 A817 cp r26,r24 - 548 038a B907 cpc r27,r25 - 549 038c 01F4 brne .L47 - 550 038e 00C0 rjmp .L48 - 551 .L46: - 552 0390 9F01 movw r18,r30 - 553 0392 90E0 ldi r25,lo8(0) - 554 0394 8050 subi r24,lo8(-(usbTxBuf+2)) - 555 0396 9040 sbci r25,hi8(-(usbTxBuf+2)) - 556 0398 A0E0 ldi r26,lo8(usbTxBuf+1) - 557 039a B0E0 ldi r27,hi8(usbTxBuf+1) - 558 .L49: - 559 039c F901 movw r30,r18 - 560 039e 4191 ld r20,Z+ - 561 03a0 9F01 movw r18,r30 - 562 03a2 4D93 st X+,r20 - 563 03a4 A817 cp r26,r24 - 564 03a6 B907 cpc r27,r25 - 565 03a8 01F4 brne .L49 - 566 .L48: - 567 03aa F093 0000 sts usbMsgPtr+1,r31 - 568 03ae E093 0000 sts usbMsgPtr,r30 - 569 .L45: - 570 03b2 80E0 ldi r24,lo8(usbTxBuf+1) -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 11 - - - 571 03b4 90E0 ldi r25,hi8(usbTxBuf+1) - 572 03b6 602F mov r22,r16 - 573 03b8 00D0 rcall usbCrc16Append - 574 03ba 0C5F subi r16,lo8(-(4)) - 575 03bc 0C30 cpi r16,lo8(12) - 576 03be 01F0 breq .L50 - 577 03c0 8FEF ldi r24,lo8(-1) - 578 03c2 8093 0000 sts usbMsgLen,r24 - 579 .L50: - 580 03c6 0093 0000 sts usbTxLen,r16 - 581 .L43: - 582 03ca 84E1 ldi r24,lo8(20) - 583 .L52: - 584 03cc 96B3 in r25,54-32 - 585 03ce 9871 andi r25,lo8(24) - 586 03d0 01F4 brne .L51 - 587 03d2 8150 subi r24,lo8(-(-1)) - 588 03d4 01F4 brne .L52 - 589 03d6 1092 0000 sts usbNewDeviceAddr,__zero_reg__ - 590 03da 1092 0000 sts usbDeviceAddr,__zero_reg__ - 591 .L51: - 592 03de 01E0 ldi r16,lo8(1) - 593 03e0 8111 cpse r24,__zero_reg__ - 594 03e2 00E0 ldi r16,lo8(0) - 595 .L53: - 596 03e4 8091 0000 lds r24,wasReset.1698 - 597 03e8 8017 cp r24,r16 - 598 03ea 01F0 breq .L54 - 599 03ec 0023 tst r16 - 600 03ee 01F4 brne .L55 - 601 /* #APP */ - 602 ; 557 "usbdrv/usbdrv.c" 1 - 603 03f0 F894 cli - 604 ; 0 "" 2 - 605 /* #NOAPP */ - 606 03f2 00D0 rcall calibrateOscillator - 607 /* #APP */ - 608 ; 557 "usbdrv/usbdrv.c" 1 - 609 03f4 7894 sei - 610 ; 0 "" 2 - 611 /* #NOAPP */ - 612 .L55: - 613 03f6 0093 0000 sts wasReset.1698,r16 - 614 .L54: - 615 03fa 8CE9 ldi r24,lo8(412) - 616 03fc 91E0 ldi r25,hi8(412) - 617 03fe 0197 1:sbiw r24,1 - 618 0400 01F4 brne 1b - 619 0402 0000 nop - 620 0404 8091 0000 lds r24,events - 621 0408 8823 tst r24 - 622 040a 01F4 brne .L68 - 623 040c 0894 sec - 624 040e E11C adc r14,__zero_reg__ - 625 0410 F11C adc r15,__zero_reg__ - 626 0412 00C0 rjmp .L56 - 627 .L68: -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 12 - - - 628 0414 EE24 clr r14 - 629 0416 FF24 clr r15 - 630 .L56: - 631 0418 80FF sbrs r24,0 - 632 041a 00C0 rjmp .L57 - 633 /* #APP */ - 634 ; 117 "main.c" 1 - 635 041c F894 cli - 636 ; 0 "" 2 - 637 /* #NOAPP */ - 638 041e E091 0000 lds r30,currentAddress - 639 0422 F091 0000 lds r31,currentAddress+1 - 640 0426 3297 sbiw r30,2 - 641 0428 83E0 ldi r24,lo8(3) - 642 /* #APP */ - 643 ; 118 "main.c" 1 - 644 042a 8093 5700 sts 87, r24 - 645 042e E895 spm - 646 - 647 ; 0 "" 2 - 648 /* #NOAPP */ - 649 .L58: - 650 0430 07B6 in __tmp_reg__,87-32 - 651 0432 00FC sbrc __tmp_reg__,0 - 652 0434 00C0 rjmp .L58 - 653 /* #APP */ - 654 ; 120 "main.c" 1 - 655 0436 7894 sei - 656 ; 0 "" 2 - 657 /* #NOAPP */ - 658 .L57: - 659 0438 8091 0000 lds r24,events - 660 043c 81FF sbrs r24,1 - 661 043e 00C0 rjmp .L59 - 662 0440 A9E3 ldi r26,lo8(8249) - 663 0442 B0E2 ldi r27,hi8(8249) - 664 0444 1197 1:sbiw r26,1 - 665 0446 01F4 brne 1b - 666 0448 00C0 rjmp . - 667 044a 0000 nop - 668 044c 8091 0000 lds r24,currentAddress - 669 0450 9091 0000 lds r25,currentAddress+1 - 670 0454 8F73 andi r24,lo8(63) - 671 0456 9070 andi r25,hi8(63) - 672 0458 0097 sbiw r24,0 - 673 045a 01F0 breq .L60 - 674 045c 00D0 rcall fillFlashWithVectors - 675 045e 00C0 rjmp .L59 - 676 .L60: - 677 0460 00D0 rcall writeFlashPage - 678 .L59: - 679 0462 8091 0000 lds r24,events - 680 0466 82FD sbrc r24,2 - 681 0468 00C0 rjmp .L61 - 682 046a B1E5 ldi r27,lo8(-15535) - 683 046c EB16 cp r14,r27 - 684 046e B3EC ldi r27,hi8(-15535) -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 13 - - - 685 0470 FB06 cpc r15,r27 - 686 0472 00F0 brlo .L62 - 687 .L61: - 688 0474 E1E2 ldi r30,lo8(-24287) - 689 0476 F1EA ldi r31,hi8(-24287) - 690 0478 3197 1:sbiw r30,1 - 691 047a 01F4 brne 1b - 692 047c 00C0 rjmp . - 693 047e 0000 nop - 694 /* #APP */ - 695 ; 190 "main.c" 1 - 696 0480 F894 cli - 697 ; 0 "" 2 - 698 /* #NOAPP */ - 699 0482 1BBE out 91-32,__zero_reg__ - 700 0484 15BA out 53-32,__zero_reg__ - 701 0486 1092 5F02 sts 607,__zero_reg__ - 702 048a 1092 5E02 sts 606,__zero_reg__ - 703 /* #APP */ - 704 ; 206 "main.c" 1 - 705 048e 00C0 rjmp __vectors - 4 - 706 ; 0 "" 2 - 707 /* #NOAPP */ - 708 .L62: - 709 0490 1092 0000 sts events,__zero_reg__ - 710 0494 00C0 rjmp .L63 - 711 .size main, .-main - 712 .global usbTxLen - 713 .data - 714 .type usbTxLen, @object - 715 .size usbTxLen, 1 - 716 usbTxLen: - 717 0000 5A .byte 90 - 718 .global usbDescriptorString0 - 719 .section .progmem.data,"a",@progbits - 720 .type usbDescriptorString0, @object - 721 .size usbDescriptorString0, 4 - 722 usbDescriptorString0: - 723 0000 04 .byte 4 - 724 0001 03 .byte 3 - 725 0002 09 .byte 9 - 726 0003 04 .byte 4 - 727 .global usbDescriptorStringVendor - 728 .type usbDescriptorStringVendor, @object - 729 .size usbDescriptorStringVendor, 34 - 730 usbDescriptorStringVendor: - 731 0004 2203 .word 802 - 732 0006 6300 .word 99 - 733 0008 7200 .word 114 - 734 000a 6500 .word 101 - 735 000c 6100 .word 97 - 736 000e 7400 .word 116 - 737 0010 6900 .word 105 - 738 0012 7600 .word 118 - 739 0014 6500 .word 101 - 740 0016 7000 .word 112 - 741 0018 6F00 .word 111 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 14 - - - 742 001a 6E00 .word 110 - 743 001c 7900 .word 121 - 744 001e 2E00 .word 46 - 745 0020 6300 .word 99 - 746 0022 6F00 .word 111 - 747 0024 6D00 .word 109 - 748 .global usbDescriptorStringDevice - 749 .type usbDescriptorStringDevice, @object - 750 .size usbDescriptorStringDevice, 12 - 751 usbDescriptorStringDevice: - 752 0026 0C03 .word 780 - 753 0028 7500 .word 117 - 754 002a 4200 .word 66 - 755 002c 6F00 .word 111 - 756 002e 6F00 .word 111 - 757 0030 7400 .word 116 - 758 .global usbDescriptorDevice - 759 .type usbDescriptorDevice, @object - 760 .size usbDescriptorDevice, 18 - 761 usbDescriptorDevice: - 762 0032 12 .byte 18 - 763 0033 01 .byte 1 - 764 0034 10 .byte 16 - 765 0035 01 .byte 1 - 766 0036 FF .byte -1 - 767 0037 00 .byte 0 - 768 0038 00 .byte 0 - 769 0039 08 .byte 8 - 770 003a C0 .byte -64 - 771 003b 16 .byte 22 - 772 003c DC .byte -36 - 773 003d 05 .byte 5 - 774 003e 01 .byte 1 - 775 003f 00 .byte 0 - 776 0040 01 .byte 1 - 777 0041 02 .byte 2 - 778 0042 00 .byte 0 - 779 0043 01 .byte 1 - 780 .global usbDescriptorConfiguration - 781 .type usbDescriptorConfiguration, @object - 782 .size usbDescriptorConfiguration, 18 - 783 usbDescriptorConfiguration: - 784 0044 09 .byte 9 - 785 0045 02 .byte 2 - 786 0046 12 .byte 18 - 787 0047 00 .byte 0 - 788 0048 01 .byte 1 - 789 0049 01 .byte 1 - 790 004a 00 .byte 0 - 791 004b 80 .byte -128 - 792 004c 32 .byte 50 - 793 004d 09 .byte 9 - 794 004e 04 .byte 4 - 795 004f 00 .byte 0 - 796 0050 00 .byte 0 - 797 0051 00 .byte 0 - 798 0052 00 .byte 0 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 15 - - - 799 0053 00 .byte 0 - 800 0054 00 .byte 0 - 801 0055 00 .byte 0 - 802 .comm usbMsgPtr,2,1 - 803 .comm usbRxToken,1,1 - 804 .comm usbConfiguration,1,1 - 805 .comm usbRxBuf,22,1 - 806 .comm usbInputBufOffset,1,1 - 807 .comm usbDeviceAddr,1,1 - 808 .comm usbNewDeviceAddr,1,1 - 809 .comm usbRxLen,1,1 - 810 .comm usbCurrentTok,1,1 - 811 .comm usbTxBuf,11,1 - 812 .lcomm currentAddress,2 - 813 .lcomm events,1 - 814 .lcomm vectorTemp,4 - 815 .data - 816 .type usbMsgLen, @object - 817 .size usbMsgLen, 1 - 818 usbMsgLen: - 819 0001 FF .byte -1 - 820 .lcomm usbMsgFlags,1 - 821 .lcomm writeLength,1 - 822 .type replyBuffer.1756, @object - 823 .size replyBuffer.1756, 5 - 824 replyBuffer.1756: - 825 0002 01 .byte 1 - 826 0003 14 .byte 20 - 827 0004 FA .byte -6 - 828 0005 40 .byte 64 - 829 0006 14 .byte 20 - 830 .lcomm wasReset.1698,1 - 831 .global __do_copy_data - 832 .global __do_clear_bss -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s page 16 + 15 0000 81E0 ldi r24,lo8(1) + 16 0002 8093 0000 sts didWriteSomething,r24 + 17 /* #APP */ + 18 ; 125 "main.c" 1 + 19 0006 F894 cli + 20 ; 0 "" 2 + 21 /* #NOAPP */ + 22 0008 E091 0000 lds r30,currentAddress + 23 000c F091 0000 lds r31,currentAddress+1 + 24 0010 3297 sbiw r30,2 + 25 0012 85E0 ldi r24,lo8(5) + 26 /* #APP */ + 27 ; 126 "main.c" 1 + 28 0014 8093 5700 sts 87, r24 + 29 0018 E895 spm + 30 + 31 ; 0 "" 2 + 32 /* #NOAPP */ + 33 .L2: + 34 001a 07B6 in __tmp_reg__,87-32 + 35 001c 00FC sbrc __tmp_reg__,0 + 36 001e 00C0 rjmp .L2 + 37 /* #APP */ + 38 ; 128 "main.c" 1 + 39 0020 7894 sei + 40 ; 0 "" 2 + 41 /* epilogue start */ + 42 /* #NOAPP */ + 43 0022 0895 ret + 44 .size writeFlashPage, .-writeFlashPage + 45 .type writeWordToPageBuffer, @function + 46 writeWordToPageBuffer: + 47 /* prologue: function */ + 48 /* frame size = 0 */ + 49 /* stack size = 0 */ + 50 .L__stack_usage = 0 + 51 0024 2091 0000 lds r18,currentAddress + 52 0028 3091 0000 lds r19,currentAddress+1 + 53 002c 2115 cp r18,__zero_reg__ + 54 002e 3105 cpc r19,__zero_reg__ + 55 0030 01F4 brne .+2 + 56 0032 00C0 rjmp .L4 + 57 0034 2430 cpi r18,4 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 2 + + + 58 0036 3105 cpc r19,__zero_reg__ + 59 0038 01F0 breq .L9 + 60 003a 44E1 ldi r20,hi8(5372) + 61 003c 2C3F cpi r18,lo8(5372) + 62 003e 3407 cpc r19,r20 + 63 0040 01F4 brne .L6 + 64 0042 8091 0000 lds r24,vectorTemp + 65 0046 9091 0000 lds r25,vectorTemp+1 + 66 004a 8E57 subi r24,lo8(-(1410)) + 67 004c 9A4F sbci r25,hi8(-(1410)) + 68 004e 00C0 rjmp .L7 + 69 .L6: + 70 0050 44E1 ldi r20,hi8(5374) + 71 0052 2E3F cpi r18,lo8(5374) + 72 0054 3407 cpc r19,r20 + 73 0056 01F4 brne .L7 + 74 0058 8091 0000 lds r24,vectorTemp+2 + 75 005c 9091 0000 lds r25,vectorTemp+2+1 + 76 0060 8D57 subi r24,lo8(-(1411)) + 77 0062 9A4F sbci r25,hi8(-(1411)) + 78 0064 00C0 rjmp .L7 + 79 .L9: + 80 0066 8FE7 ldi r24,lo8(-13697) + 81 0068 9AEC ldi r25,hi8(-13697) + 82 .L7: + 83 /* #APP */ + 84 ; 162 "main.c" 1 + 85 006a F894 cli + 86 ; 0 "" 2 + 87 /* #NOAPP */ + 88 006c E091 0000 lds r30,currentAddress + 89 0070 F091 0000 lds r31,currentAddress+1 + 90 0074 21E0 ldi r18,lo8(1) + 91 /* #APP */ + 92 ; 163 "main.c" 1 + 93 0076 0C01 movw r0, r24 + 94 0078 2093 5700 sts 87, r18 + 95 007c E895 spm + 96 007e 1124 clr r1 + 97 + 98 ; 0 "" 2 + 99 ; 164 "main.c" 1 + 100 0080 7894 sei + 101 ; 0 "" 2 + 102 /* #NOAPP */ + 103 0082 4091 0000 lds r20,currentAddress + 104 0086 5091 0000 lds r21,currentAddress+1 + 105 008a FA01 movw r30,r20 + 106 /* #APP */ + 107 ; 169 "main.c" 1 + 108 008c 2591 lpm r18, Z+ + 109 008e 3491 lpm r19, Z + 110 + 111 ; 0 "" 2 + 112 /* #NOAPP */ + 113 0090 2823 and r18,r24 + 114 0092 3923 and r19,r25 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 3 + + + 115 0094 2817 cp r18,r24 + 116 0096 3907 cpc r19,r25 + 117 0098 01F0 breq .L8 + 118 009a 8091 0000 lds r24,events + 119 009e 8160 ori r24,lo8(1) + 120 00a0 8093 0000 sts events,r24 + 121 .L8: + 122 00a4 4E5F subi r20,lo8(-(2)) + 123 00a6 5F4F sbci r21,hi8(-(2)) + 124 00a8 5093 0000 sts currentAddress+1,r21 + 125 00ac 4093 0000 sts currentAddress,r20 + 126 /* epilogue start */ + 127 00b0 0895 ret + 128 .L4: + 129 00b2 81E1 ldi r24,lo8(17) + 130 /* #APP */ + 131 ; 160 "main.c" 1 + 132 00b4 8093 5700 sts 87, r24 + 133 00b8 E895 spm + 134 + 135 ; 0 "" 2 + 136 /* #NOAPP */ + 137 00ba 00C0 rjmp .L9 + 138 .size writeWordToPageBuffer, .-writeWordToPageBuffer + 139 .type fillFlashWithVectors, @function + 140 fillFlashWithVectors: + 141 00bc CF93 push r28 + 142 00be DF93 push r29 + 143 /* prologue: function */ + 144 /* frame size = 0 */ + 145 /* stack size = 2 */ + 146 .L__stack_usage = 2 + 147 00c0 C091 0000 lds r28,currentAddress + 148 00c4 D091 0000 lds r29,currentAddress+1 + 149 00c8 CF73 andi r28,lo8(63) + 150 00ca D070 andi r29,hi8(63) + 151 .L11: + 152 00cc 8FEF ldi r24,lo8(-1) + 153 00ce 9FEF ldi r25,hi8(-1) + 154 00d0 00D0 rcall writeWordToPageBuffer + 155 00d2 2296 adiw r28,2 + 156 00d4 C034 cpi r28,64 + 157 00d6 D105 cpc r29,__zero_reg__ + 158 00d8 04F0 brlt .L11 + 159 00da 00D0 rcall writeFlashPage + 160 /* epilogue start */ + 161 00dc DF91 pop r29 + 162 00de CF91 pop r28 + 163 00e0 0895 ret + 164 .size fillFlashWithVectors, .-fillFlashWithVectors + 165 .section .init3,"ax",@progbits + 166 .global PushMagicWord + 167 .type PushMagicWord, @function + 168 PushMagicWord: + 169 /* prologue: naked */ + 170 /* frame size = 0 */ + 171 /* stack size = 0 */ +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 4 + + + 172 .L__stack_usage = 0 + 173 /* #APP */ + 174 ; 258 "main.c" 1 + 175 0000 00EB ldi r16, 0xB0 + 176 ; 0 "" 2 + 177 ; 259 "main.c" 1 + 178 0002 0F93 push r16 + 179 ; 0 "" 2 + 180 ; 260 "main.c" 1 + 181 0004 07E0 ldi r16, 0x07 + 182 ; 0 "" 2 + 183 ; 261 "main.c" 1 + 184 0006 0F93 push r16 + 185 ; 0 "" 2 + 186 /* epilogue start */ + 187 /* #NOAPP */ + 188 .size PushMagicWord, .-PushMagicWord + 189 .text + 190 .global main + 191 .type main, @function + 192 main: + 193 00e2 DF93 push r29 + 194 00e4 CF93 push r28 + 195 00e6 0F92 push __tmp_reg__ + 196 00e8 CDB7 in r28,__SP_L__ + 197 00ea DEB7 in r29,__SP_H__ + 198 /* prologue: function */ + 199 /* frame size = 1 */ + 200 /* stack size = 3 */ + 201 .L__stack_usage = 3 + 202 00ec 88E1 ldi r24,lo8(24) + 203 /* #APP */ + 204 ; 326 "main.c" 1 + 205 00ee 0FB6 in __tmp_reg__, __SREG__ + 206 00f0 F894 cli + 207 00f2 81BD out 33, r24 + 208 00f4 11BC out 33, __zero_reg__ + 209 00f6 0FBE out __SREG__,__tmp_reg__ + 210 + 211 ; 0 "" 2 + 212 /* #NOAPP */ + 213 00f8 E0E0 ldi r30,lo8(0) + 214 00fa F0E0 ldi r31,hi8(0) + 215 /* #APP */ + 216 ; 279 "main.c" 1 + 217 00fc 8591 lpm r24, Z+ + 218 00fe 9491 lpm r25, Z + 219 + 220 ; 0 "" 2 + 221 /* #NOAPP */ + 222 0100 2AEC ldi r18,hi8(-13697) + 223 0102 8F37 cpi r24,lo8(-13697) + 224 0104 9207 cpc r25,r18 + 225 0106 01F4 brne .L14 + 226 0108 E4E0 ldi r30,lo8(4) + 227 010a F0E0 ldi r31,hi8(4) + 228 /* #APP */ +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 5 + + + 229 ; 280 "main.c" 1 + 230 010c 8591 lpm r24, Z+ + 231 010e 9491 lpm r25, Z + 232 + 233 ; 0 "" 2 + 234 /* #NOAPP */ + 235 0110 3AEC ldi r19,hi8(-13697) + 236 0112 8F37 cpi r24,lo8(-13697) + 237 0114 9307 cpc r25,r19 + 238 0116 01F0 breq .L15 + 239 .L14: + 240 0118 00D0 rcall fillFlashWithVectors + 241 .L15: + 242 011a 1092 0000 sts currentAddress+1,__zero_reg__ + 243 011e 1092 0000 sts currentAddress,__zero_reg__ + 244 0122 87B3 in r24,55-32 + 245 0124 8360 ori r24,lo8(3) + 246 0126 87BB out 55-32,r24 + 247 0128 C09A sbi 56-32,0 + 248 012a C198 cbi 56-32,1 + 249 012c AC9A sbi 53-32,4 + 250 012e 8BB7 in r24,91-32 + 251 0130 8062 ori r24,lo8(32) + 252 0132 8BBF out 91-32,r24 + 253 0134 BB9A sbi 55-32,3 + 254 0136 8FE4 ldi r24,lo8(1649999) + 255 0138 9DE2 ldi r25,hi8(1649999) + 256 013a A9E1 ldi r26,hlo8(1649999) + 257 013c 8150 1:subi r24,1 + 258 013e 9040 sbci r25,0 + 259 0140 A040 sbci r26,0 + 260 0142 01F4 brne 1b + 261 0144 00C0 rjmp . + 262 0146 0000 nop + 263 0148 BB98 cbi 55-32,3 + 264 /* #APP */ + 265 ; 272 "main.c" 1 + 266 014a 7894 sei + 267 ; 0 "" 2 + 268 /* #NOAPP */ + 269 014c EE24 clr r14 + 270 014e FF24 clr r15 + 271 .L66: + 272 0150 2091 0000 lds r18,usbRxLen + 273 0154 2350 subi r18,lo8(-(-3)) + 274 0156 27FD sbrc r18,7 + 275 0158 00C0 rjmp .L16 + 276 015a 8091 0000 lds r24,usbInputBufOffset + 277 015e ECE0 ldi r30,lo8(12) + 278 0160 F0E0 ldi r31,hi8(12) + 279 0162 E81B sub r30,r24 + 280 0164 F109 sbc r31,__zero_reg__ + 281 0166 E050 subi r30,lo8(-(usbRxBuf)) + 282 0168 F040 sbci r31,hi8(-(usbRxBuf)) + 283 016a 8091 0000 lds r24,usbRxToken + 284 016e 8D32 cpi r24,lo8(45) + 285 0170 01F0 breq .+2 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 6 + + + 286 0172 00C0 rjmp .L17 + 287 0174 2830 cpi r18,lo8(8) + 288 0176 01F0 breq .+2 + 289 0178 00C0 rjmp .L18 + 290 017a 83EC ldi r24,lo8(-61) + 291 017c 8093 0000 sts usbTxBuf,r24 + 292 0180 8AE5 ldi r24,lo8(90) + 293 0182 8093 0000 sts usbTxLen,r24 + 294 0186 1092 0000 sts usbMsgFlags,__zero_reg__ + 295 018a 9081 ld r25,Z + 296 018c 9076 andi r25,lo8(96) + 297 018e 8181 ldd r24,Z+1 + 298 0190 9923 tst r25 + 299 0192 01F0 breq .L19 + 300 0194 8823 tst r24 + 301 0196 01F4 brne .L20 + 302 0198 80E0 ldi r24,lo8(replyBuffer.1750) + 303 019a 90E0 ldi r25,hi8(replyBuffer.1750) + 304 019c 9093 0000 sts usbMsgPtr+1,r25 + 305 01a0 8093 0000 sts usbMsgPtr,r24 + 306 01a4 25E0 ldi r18,lo8(5) + 307 01a6 00C0 rjmp .L25 + 308 .L20: + 309 01a8 8130 cpi r24,lo8(1) + 310 01aa 01F4 brne .L22 + 311 01ac C098 cbi 56-32,0 + 312 01ae 8281 ldd r24,Z+2 + 313 01b0 8093 0000 sts writeLength,r24 + 314 01b4 8481 ldd r24,Z+4 + 315 01b6 9581 ldd r25,Z+5 + 316 01b8 9093 0000 sts currentAddress+1,r25 + 317 01bc 8093 0000 sts currentAddress,r24 + 318 01c0 8081 ld r24,Z + 319 01c2 87FD sbrc r24,7 + 320 01c4 00C0 rjmp .L23 + 321 01c6 2FEF ldi r18,lo8(-1) + 322 01c8 00C0 rjmp .L24 + 323 .L22: + 324 01ca 8091 0000 lds r24,events + 325 01ce 8460 ori r24,lo8(4) + 326 01d0 8093 0000 sts events,r24 + 327 01d4 20E0 ldi r18,lo8(0) + 328 01d6 00C0 rjmp .L25 + 329 .L19: + 330 01d8 9281 ldd r25,Z+2 + 331 01da 1092 0000 sts usbTxBuf+9,__zero_reg__ + 332 01de 8823 tst r24 + 333 01e0 01F4 brne .L26 + 334 01e2 1092 0000 sts usbTxBuf+10,__zero_reg__ + 335 01e6 80E0 ldi r24,lo8(usbTxBuf+9) + 336 01e8 90E0 ldi r25,hi8(usbTxBuf+9) + 337 01ea 22E0 ldi r18,lo8(2) + 338 01ec 00C0 rjmp .L27 + 339 .L26: + 340 01ee 8530 cpi r24,lo8(5) + 341 01f0 01F4 brne .L28 + 342 01f2 9093 0000 sts usbNewDeviceAddr,r25 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 7 + + + 343 01f6 00C0 rjmp .L73 + 344 .L28: + 345 01f8 8630 cpi r24,lo8(6) + 346 01fa 01F4 brne .L29 + 347 01fc 8381 ldd r24,Z+3 + 348 01fe 8130 cpi r24,lo8(1) + 349 0200 01F4 brne .L30 + 350 0202 80E0 ldi r24,lo8(usbDescriptorDevice) + 351 0204 90E0 ldi r25,hi8(usbDescriptorDevice) + 352 0206 00C0 rjmp .L72 + 353 .L30: + 354 0208 8230 cpi r24,lo8(2) + 355 020a 01F4 brne .L32 + 356 020c 80E0 ldi r24,lo8(usbDescriptorConfiguration) + 357 020e 90E0 ldi r25,hi8(usbDescriptorConfiguration) + 358 .L72: + 359 0210 9093 0000 sts usbMsgPtr+1,r25 + 360 0214 8093 0000 sts usbMsgPtr,r24 + 361 0218 22E1 ldi r18,lo8(18) + 362 021a 00C0 rjmp .L31 + 363 .L32: + 364 021c 8330 cpi r24,lo8(3) + 365 021e 01F4 brne .L68 + 366 0220 9923 tst r25 + 367 0222 01F4 brne .L33 + 368 0224 80E0 ldi r24,lo8(usbDescriptorString0) + 369 0226 90E0 ldi r25,hi8(usbDescriptorString0) + 370 0228 9093 0000 sts usbMsgPtr+1,r25 + 371 022c 8093 0000 sts usbMsgPtr,r24 + 372 0230 24E0 ldi r18,lo8(4) + 373 0232 00C0 rjmp .L31 + 374 .L33: + 375 0234 9130 cpi r25,lo8(1) + 376 0236 01F4 brne .L34 + 377 0238 80E0 ldi r24,lo8(usbDescriptorStringVendor) + 378 023a 90E0 ldi r25,hi8(usbDescriptorStringVendor) + 379 023c 9093 0000 sts usbMsgPtr+1,r25 + 380 0240 8093 0000 sts usbMsgPtr,r24 + 381 0244 22E2 ldi r18,lo8(34) + 382 0246 00C0 rjmp .L31 + 383 .L34: + 384 0248 9230 cpi r25,lo8(2) + 385 024a 01F4 brne .L68 + 386 024c 80E0 ldi r24,lo8(usbDescriptorStringDevice) + 387 024e 90E0 ldi r25,hi8(usbDescriptorStringDevice) + 388 0250 9093 0000 sts usbMsgPtr+1,r25 + 389 0254 8093 0000 sts usbMsgPtr,r24 + 390 0258 2CE0 ldi r18,lo8(12) + 391 025a 00C0 rjmp .L31 + 392 .L68: + 393 025c 20E0 ldi r18,lo8(0) + 394 .L31: + 395 025e 80E4 ldi r24,lo8(64) + 396 0260 8093 0000 sts usbMsgFlags,r24 + 397 0264 00C0 rjmp .L25 + 398 .L29: + 399 0266 8830 cpi r24,lo8(8) +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 8 + + + 400 0268 01F0 breq .L69 + 401 026a 8930 cpi r24,lo8(9) + 402 026c 01F4 brne .L36 + 403 026e 9093 0000 sts usbConfiguration,r25 + 404 0272 00C0 rjmp .L73 + 405 .L36: + 406 0274 8A30 cpi r24,lo8(10) + 407 0276 01F0 breq .L70 + 408 .L73: + 409 0278 80E0 ldi r24,lo8(usbTxBuf+9) + 410 027a 90E0 ldi r25,hi8(usbTxBuf+9) + 411 027c 20E0 ldi r18,lo8(0) + 412 027e 00C0 rjmp .L27 + 413 .L69: + 414 0280 80E0 ldi r24,lo8(usbConfiguration) + 415 0282 90E0 ldi r25,hi8(usbConfiguration) + 416 0284 00C0 rjmp .L74 + 417 .L70: + 418 0286 80E0 ldi r24,lo8(usbTxBuf+9) + 419 0288 90E0 ldi r25,hi8(usbTxBuf+9) + 420 .L74: + 421 028a 21E0 ldi r18,lo8(1) + 422 .L27: + 423 028c 9093 0000 sts usbMsgPtr+1,r25 + 424 0290 8093 0000 sts usbMsgPtr,r24 + 425 0294 00C0 rjmp .L25 + 426 .L23: + 427 0296 2681 ldd r18,Z+6 + 428 .L24: + 429 0298 80E8 ldi r24,lo8(-128) + 430 029a 8093 0000 sts usbMsgFlags,r24 + 431 029e 00C0 rjmp .L37 + 432 .L25: + 433 02a0 8781 ldd r24,Z+7 + 434 02a2 8823 tst r24 + 435 02a4 01F4 brne .L37 + 436 02a6 8681 ldd r24,Z+6 + 437 02a8 8217 cp r24,r18 + 438 02aa 00F4 brsh .L37 + 439 02ac 282F mov r18,r24 + 440 .L37: + 441 02ae 2093 0000 sts usbMsgLen,r18 + 442 02b2 00C0 rjmp .L18 + 443 .L17: + 444 02b4 8091 0000 lds r24,usbMsgFlags + 445 02b8 87FF sbrs r24,7 + 446 02ba 00C0 rjmp .L18 + 447 02bc 8091 0000 lds r24,writeLength + 448 02c0 821B sub r24,r18 + 449 02c2 8093 0000 sts writeLength,r24 + 450 02c6 8F01 movw r16,r30 + 451 .L42: + 452 02c8 8091 0000 lds r24,currentAddress + 453 02cc 9091 0000 lds r25,currentAddress+1 + 454 02d0 0097 sbiw r24,0 + 455 02d2 01F4 brne .L38 + 456 02d4 D801 movw r26,r16 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 9 + + + 457 02d6 8D91 ld r24,X+ + 458 02d8 9C91 ld r25,X + 459 02da 1197 sbiw r26,1 + 460 02dc 9093 0000 sts vectorTemp+1,r25 + 461 02e0 8093 0000 sts vectorTemp,r24 + 462 02e4 00C0 rjmp .L39 + 463 .L38: + 464 02e6 8430 cpi r24,4 + 465 02e8 9105 cpc r25,__zero_reg__ + 466 02ea 01F4 brne .L40 + 467 02ec F801 movw r30,r16 + 468 02ee 8081 ld r24,Z + 469 02f0 9181 ldd r25,Z+1 + 470 02f2 9093 0000 sts vectorTemp+2+1,r25 + 471 02f6 8093 0000 sts vectorTemp+2,r24 + 472 02fa 00C0 rjmp .L39 + 473 .L40: + 474 02fc F4E1 ldi r31,hi8(5370) + 475 02fe 8A3F cpi r24,lo8(5370) + 476 0300 9F07 cpc r25,r31 + 477 0302 00F0 brlo .L39 + 478 0304 81E1 ldi r24,lo8(17) + 479 /* #APP */ + 480 ; 235 "main.c" 1 + 481 0306 8093 5700 sts 87, r24 + 482 030a E895 spm + 483 + 484 ; 0 "" 2 + 485 /* #NOAPP */ + 486 030c 00C0 rjmp .L41 + 487 .L39: + 488 030e D801 movw r26,r16 + 489 0310 8D91 ld r24,X+ + 490 0312 9D91 ld r25,X+ + 491 0314 8D01 movw r16,r26 + 492 0316 2983 std Y+1,r18 + 493 0318 00D0 rcall writeWordToPageBuffer + 494 031a 2981 ldd r18,Y+1 + 495 031c 2250 subi r18,lo8(-(-2)) + 496 031e 01F4 brne .L42 + 497 .L41: + 498 0320 8091 0000 lds r24,writeLength + 499 0324 8823 tst r24 + 500 0326 01F4 brne .L18 + 501 0328 8091 0000 lds r24,events + 502 032c 8260 ori r24,lo8(2) + 503 032e 8093 0000 sts events,r24 + 504 0332 1092 0000 sts usbMsgLen,__zero_reg__ + 505 .L18: + 506 0336 1092 0000 sts usbRxLen,__zero_reg__ + 507 .L16: + 508 033a 8091 0000 lds r24,usbTxLen + 509 033e 84FF sbrs r24,4 + 510 0340 00C0 rjmp .L43 + 511 0342 8091 0000 lds r24,usbMsgLen + 512 0346 8F3F cpi r24,lo8(-1) + 513 0348 01F4 brne .+2 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 10 + + + 514 034a 00C0 rjmp .L43 + 515 034c 082F mov r16,r24 + 516 034e 8930 cpi r24,lo8(9) + 517 0350 00F0 brlo .L44 + 518 0352 08E0 ldi r16,lo8(8) + 519 .L44: + 520 0354 801B sub r24,r16 + 521 0356 8093 0000 sts usbMsgLen,r24 + 522 035a 8091 0000 lds r24,usbTxBuf + 523 035e 98E8 ldi r25,lo8(-120) + 524 0360 8927 eor r24,r25 + 525 0362 8093 0000 sts usbTxBuf,r24 + 526 0366 0023 tst r16 + 527 0368 01F0 breq .L45 + 528 036a E091 0000 lds r30,usbMsgPtr + 529 036e F091 0000 lds r31,usbMsgPtr+1 + 530 0372 9091 0000 lds r25,usbMsgFlags + 531 0376 802F mov r24,r16 + 532 0378 8150 subi r24,lo8(-(-1)) + 533 037a 96FF sbrs r25,6 + 534 037c 00C0 rjmp .L46 + 535 037e 90E0 ldi r25,lo8(0) + 536 0380 8050 subi r24,lo8(-(usbTxBuf+2)) + 537 0382 9040 sbci r25,hi8(-(usbTxBuf+2)) + 538 0384 A0E0 ldi r26,lo8(usbTxBuf+1) + 539 0386 B0E0 ldi r27,hi8(usbTxBuf+1) + 540 .L47: + 541 /* #APP */ + 542 ; 504 "usbdrv/usbdrv.c" 1 + 543 0388 2491 lpm r18, Z + 544 + 545 ; 0 "" 2 + 546 /* #NOAPP */ + 547 038a 2D93 st X+,r18 + 548 038c 3196 adiw r30,1 + 549 038e A817 cp r26,r24 + 550 0390 B907 cpc r27,r25 + 551 0392 01F4 brne .L47 + 552 0394 00C0 rjmp .L48 + 553 .L46: + 554 0396 9F01 movw r18,r30 + 555 0398 90E0 ldi r25,lo8(0) + 556 039a 8050 subi r24,lo8(-(usbTxBuf+2)) + 557 039c 9040 sbci r25,hi8(-(usbTxBuf+2)) + 558 039e A0E0 ldi r26,lo8(usbTxBuf+1) + 559 03a0 B0E0 ldi r27,hi8(usbTxBuf+1) + 560 .L49: + 561 03a2 F901 movw r30,r18 + 562 03a4 4191 ld r20,Z+ + 563 03a6 9F01 movw r18,r30 + 564 03a8 4D93 st X+,r20 + 565 03aa A817 cp r26,r24 + 566 03ac B907 cpc r27,r25 + 567 03ae 01F4 brne .L49 + 568 .L48: + 569 03b0 F093 0000 sts usbMsgPtr+1,r31 + 570 03b4 E093 0000 sts usbMsgPtr,r30 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 11 + + + 571 .L45: + 572 03b8 80E0 ldi r24,lo8(usbTxBuf+1) + 573 03ba 90E0 ldi r25,hi8(usbTxBuf+1) + 574 03bc 602F mov r22,r16 + 575 03be 00D0 rcall usbCrc16Append + 576 03c0 0C5F subi r16,lo8(-(4)) + 577 03c2 0C30 cpi r16,lo8(12) + 578 03c4 01F0 breq .L50 + 579 03c6 8FEF ldi r24,lo8(-1) + 580 03c8 8093 0000 sts usbMsgLen,r24 + 581 .L50: + 582 03cc 0093 0000 sts usbTxLen,r16 + 583 .L43: + 584 03d0 84E1 ldi r24,lo8(20) + 585 .L52: + 586 03d2 96B3 in r25,54-32 + 587 03d4 9871 andi r25,lo8(24) + 588 03d6 01F4 brne .L51 + 589 03d8 8150 subi r24,lo8(-(-1)) + 590 03da 01F4 brne .L52 + 591 03dc 1092 0000 sts usbNewDeviceAddr,__zero_reg__ + 592 03e0 1092 0000 sts usbDeviceAddr,__zero_reg__ + 593 .L51: + 594 03e4 01E0 ldi r16,lo8(1) + 595 03e6 8111 cpse r24,__zero_reg__ + 596 03e8 00E0 ldi r16,lo8(0) + 597 .L53: + 598 03ea 8091 0000 lds r24,wasReset.1698 + 599 03ee 8017 cp r24,r16 + 600 03f0 01F0 breq .L54 + 601 03f2 0023 tst r16 + 602 03f4 01F4 brne .L55 + 603 /* #APP */ + 604 ; 557 "usbdrv/usbdrv.c" 1 + 605 03f6 F894 cli + 606 ; 0 "" 2 + 607 /* #NOAPP */ + 608 03f8 00D0 rcall calibrateOscillator + 609 /* #APP */ + 610 ; 557 "usbdrv/usbdrv.c" 1 + 611 03fa 7894 sei + 612 ; 0 "" 2 + 613 /* #NOAPP */ + 614 .L55: + 615 03fc 0093 0000 sts wasReset.1698,r16 + 616 .L54: + 617 0400 8CE9 ldi r24,lo8(412) + 618 0402 91E0 ldi r25,hi8(412) + 619 0404 0197 1:sbiw r24,1 + 620 0406 01F4 brne 1b + 621 0408 0000 nop + 622 040a 8091 0000 lds r24,events + 623 040e 8823 tst r24 + 624 0410 01F4 brne .L71 + 625 0412 0894 sec + 626 0414 E11C adc r14,__zero_reg__ + 627 0416 F11C adc r15,__zero_reg__ +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 12 + + + 628 0418 00C0 rjmp .L56 + 629 .L71: + 630 041a EE24 clr r14 + 631 041c FF24 clr r15 + 632 .L56: + 633 041e 80FF sbrs r24,0 + 634 0420 00C0 rjmp .L57 + 635 /* #APP */ + 636 ; 117 "main.c" 1 + 637 0422 F894 cli + 638 ; 0 "" 2 + 639 /* #NOAPP */ + 640 0424 E091 0000 lds r30,currentAddress + 641 0428 F091 0000 lds r31,currentAddress+1 + 642 042c 3297 sbiw r30,2 + 643 042e 83E0 ldi r24,lo8(3) + 644 /* #APP */ + 645 ; 118 "main.c" 1 + 646 0430 8093 5700 sts 87, r24 + 647 0434 E895 spm + 648 + 649 ; 0 "" 2 + 650 /* #NOAPP */ + 651 .L58: + 652 0436 07B6 in __tmp_reg__,87-32 + 653 0438 00FC sbrc __tmp_reg__,0 + 654 043a 00C0 rjmp .L58 + 655 /* #APP */ + 656 ; 120 "main.c" 1 + 657 043c 7894 sei + 658 ; 0 "" 2 + 659 /* #NOAPP */ + 660 .L57: + 661 043e 8091 0000 lds r24,events + 662 0442 81FF sbrs r24,1 + 663 0444 00C0 rjmp .L59 + 664 0446 A9E3 ldi r26,lo8(8249) + 665 0448 B0E2 ldi r27,hi8(8249) + 666 044a 1197 1:sbiw r26,1 + 667 044c 01F4 brne 1b + 668 044e 00C0 rjmp . + 669 0450 0000 nop + 670 0452 8091 0000 lds r24,currentAddress + 671 0456 9091 0000 lds r25,currentAddress+1 + 672 045a 8F73 andi r24,lo8(63) + 673 045c 9070 andi r25,hi8(63) + 674 045e 0097 sbiw r24,0 + 675 0460 01F0 breq .L60 + 676 0462 00D0 rcall fillFlashWithVectors + 677 0464 00C0 rjmp .L59 + 678 .L60: + 679 0466 00D0 rcall writeFlashPage + 680 .L59: + 681 0468 8091 0000 lds r24,events + 682 046c 82FD sbrc r24,2 + 683 046e 00C0 rjmp .L61 + 684 0470 B1E5 ldi r27,lo8(-15535) +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 13 + + + 685 0472 EB16 cp r14,r27 + 686 0474 B3EC ldi r27,hi8(-15535) + 687 0476 FB06 cpc r15,r27 + 688 0478 00F0 brlo .L62 + 689 .L61: + 690 047a E1E2 ldi r30,lo8(-24287) + 691 047c F1EA ldi r31,hi8(-24287) + 692 047e 3197 1:sbiw r30,1 + 693 0480 01F4 brne 1b + 694 0482 00C0 rjmp . + 695 0484 0000 nop + 696 /* #APP */ + 697 ; 303 "main.c" 1 + 698 0486 F894 cli + 699 ; 0 "" 2 + 700 /* #NOAPP */ + 701 0488 1BBE out 91-32,__zero_reg__ + 702 048a 15BA out 53-32,__zero_reg__ + 703 048c 8091 0000 lds r24,didWriteSomething + 704 0490 8823 tst r24 + 705 0492 01F4 brne .L63 + 706 0494 00C0 rjmp .L64 + 707 .L65: + 708 0496 00D0 rcall fillFlashWithVectors + 709 .L63: + 710 0498 8091 0000 lds r24,currentAddress + 711 049c 9091 0000 lds r25,currentAddress+1 + 712 04a0 F5E1 ldi r31,hi8(5376) + 713 04a2 8030 cpi r24,lo8(5376) + 714 04a4 9F07 cpc r25,r31 + 715 04a6 00F0 brlo .L65 + 716 .L64: + 717 04a8 1092 5F02 sts 607,__zero_reg__ + 718 04ac 1092 5E02 sts 606,__zero_reg__ + 719 /* #APP */ + 720 ; 319 "main.c" 1 + 721 04b0 00C0 rjmp __vectors - 4 + 722 ; 0 "" 2 + 723 /* #NOAPP */ + 724 .L62: + 725 04b2 1092 0000 sts events,__zero_reg__ + 726 04b6 00C0 rjmp .L66 + 727 .size main, .-main + 728 .global usbTxLen + 729 .data + 730 .type usbTxLen, @object + 731 .size usbTxLen, 1 + 732 usbTxLen: + 733 0000 5A .byte 90 + 734 .global usbDescriptorString0 + 735 .section .progmem.data,"a",@progbits + 736 .type usbDescriptorString0, @object + 737 .size usbDescriptorString0, 4 + 738 usbDescriptorString0: + 739 0000 04 .byte 4 + 740 0001 03 .byte 3 + 741 0002 09 .byte 9 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 14 + + + 742 0003 04 .byte 4 + 743 .global usbDescriptorStringVendor + 744 .type usbDescriptorStringVendor, @object + 745 .size usbDescriptorStringVendor, 34 + 746 usbDescriptorStringVendor: + 747 0004 2203 .word 802 + 748 0006 6300 .word 99 + 749 0008 7200 .word 114 + 750 000a 6500 .word 101 + 751 000c 6100 .word 97 + 752 000e 7400 .word 116 + 753 0010 6900 .word 105 + 754 0012 7600 .word 118 + 755 0014 6500 .word 101 + 756 0016 7000 .word 112 + 757 0018 6F00 .word 111 + 758 001a 6E00 .word 110 + 759 001c 7900 .word 121 + 760 001e 2E00 .word 46 + 761 0020 6300 .word 99 + 762 0022 6F00 .word 111 + 763 0024 6D00 .word 109 + 764 .global usbDescriptorStringDevice + 765 .type usbDescriptorStringDevice, @object + 766 .size usbDescriptorStringDevice, 12 + 767 usbDescriptorStringDevice: + 768 0026 0C03 .word 780 + 769 0028 7500 .word 117 + 770 002a 4200 .word 66 + 771 002c 6F00 .word 111 + 772 002e 6F00 .word 111 + 773 0030 7400 .word 116 + 774 .global usbDescriptorDevice + 775 .type usbDescriptorDevice, @object + 776 .size usbDescriptorDevice, 18 + 777 usbDescriptorDevice: + 778 0032 12 .byte 18 + 779 0033 01 .byte 1 + 780 0034 10 .byte 16 + 781 0035 01 .byte 1 + 782 0036 FF .byte -1 + 783 0037 00 .byte 0 + 784 0038 00 .byte 0 + 785 0039 08 .byte 8 + 786 003a C0 .byte -64 + 787 003b 16 .byte 22 + 788 003c DC .byte -36 + 789 003d 05 .byte 5 + 790 003e 01 .byte 1 + 791 003f 00 .byte 0 + 792 0040 01 .byte 1 + 793 0041 02 .byte 2 + 794 0042 00 .byte 0 + 795 0043 01 .byte 1 + 796 .global usbDescriptorConfiguration + 797 .type usbDescriptorConfiguration, @object + 798 .size usbDescriptorConfiguration, 18 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 15 + + + 799 usbDescriptorConfiguration: + 800 0044 09 .byte 9 + 801 0045 02 .byte 2 + 802 0046 12 .byte 18 + 803 0047 00 .byte 0 + 804 0048 01 .byte 1 + 805 0049 01 .byte 1 + 806 004a 00 .byte 0 + 807 004b 80 .byte -128 + 808 004c 32 .byte 50 + 809 004d 09 .byte 9 + 810 004e 04 .byte 4 + 811 004f 00 .byte 0 + 812 0050 00 .byte 0 + 813 0051 00 .byte 0 + 814 0052 00 .byte 0 + 815 0053 00 .byte 0 + 816 0054 00 .byte 0 + 817 0055 00 .byte 0 + 818 .comm usbMsgPtr,2,1 + 819 .comm usbRxToken,1,1 + 820 .comm usbConfiguration,1,1 + 821 .comm usbRxBuf,22,1 + 822 .comm usbInputBufOffset,1,1 + 823 .comm usbDeviceAddr,1,1 + 824 .comm usbNewDeviceAddr,1,1 + 825 .comm usbRxLen,1,1 + 826 .comm usbCurrentTok,1,1 + 827 .comm usbTxBuf,11,1 + 828 .lcomm currentAddress,2 + 829 .lcomm events,1 + 830 .lcomm vectorTemp,4 + 831 .lcomm didWriteSomething,1 + 832 .data + 833 .type usbMsgLen, @object + 834 .size usbMsgLen, 1 + 835 usbMsgLen: + 836 0001 FF .byte -1 + 837 .lcomm usbMsgFlags,1 + 838 .lcomm writeLength,1 + 839 .type replyBuffer.1750, @object + 840 .size replyBuffer.1750, 5 + 841 replyBuffer.1750: + 842 0002 01 .byte 1 + 843 0003 14 .byte 20 + 844 0004 FA .byte -6 + 845 0005 40 .byte 64 + 846 0006 14 .byte 20 + 847 .lcomm wasReset.1698,1 + 848 .global __do_copy_data + 849 .global __do_clear_bss +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s page 16 DEFINED SYMBOLS *ABS*:00000000 main.c -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:2 *ABS*:0000003f __SREG__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:3 *ABS*:0000003e __SP_H__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:4 *ABS*:0000003d __SP_L__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:5 *ABS*:00000034 __CCP__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:7 *ABS*:00000001 __zero_reg__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:10 .text:00000000 writeFlashPage +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:2 *ABS*:0000003f __SREG__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:3 *ABS*:0000003e __SP_H__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:4 *ABS*:0000003d __SP_L__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:5 *ABS*:00000034 __CCP__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:6 *ABS*:00000000 __tmp_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:7 *ABS*:00000001 __zero_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:10 .text:00000000 writeFlashPage +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:830 .bss:00000007 didWriteSomething .bss:00000000 currentAddress -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:44 .text:0000001e writeWordToPageBuffer -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:813 .bss:00000003 vectorTemp -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:812 .bss:00000002 events -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:138 .text:000000b6 fillFlashWithVectors -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:166 .init3:00000000 PushMagicWord -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:190 .text:000000dc main +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:46 .text:00000024 writeWordToPageBuffer +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:829 .bss:00000003 vectorTemp +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:828 .bss:00000002 events +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:140 .text:000000bc fillFlashWithVectors +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:168 .init3:00000000 PushMagicWord +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:192 .text:000000e2 main *COM*:00000001 usbRxLen *COM*:00000001 usbInputBufOffset *COM*:00000016 usbRxBuf *COM*:00000001 usbRxToken *COM*:0000000b usbTxBuf -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:716 .data:00000000 usbTxLen -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:814 .bss:00000007 usbMsgFlags -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:824 .data:00000002 replyBuffer.1756 +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:732 .data:00000000 usbTxLen +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:831 .bss:00000008 usbMsgFlags +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:841 .data:00000002 replyBuffer.1750 *COM*:00000002 usbMsgPtr -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:820 .bss:00000008 writeLength +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:837 .bss:00000009 writeLength *COM*:00000001 usbNewDeviceAddr -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:761 .progmem.data:00000032 usbDescriptorDevice -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:783 .progmem.data:00000044 usbDescriptorConfiguration -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:722 .progmem.data:00000000 usbDescriptorString0 -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:730 .progmem.data:00000004 usbDescriptorStringVendor -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:751 .progmem.data:00000026 usbDescriptorStringDevice +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:777 .progmem.data:00000032 usbDescriptorDevice +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:799 .progmem.data:00000044 usbDescriptorConfiguration +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:738 .progmem.data:00000000 usbDescriptorString0 +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:746 .progmem.data:00000004 usbDescriptorStringVendor +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:767 .progmem.data:00000026 usbDescriptorStringDevice *COM*:00000001 usbConfiguration -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:818 .data:00000001 usbMsgLen +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:835 .data:00000001 usbMsgLen *COM*:00000001 usbDeviceAddr -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//cckyYI40.s:821 .bss:00000009 wasReset.1698 +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccYBGVjm.s:838 .bss:0000000a wasReset.1698 *COM*:00000001 usbCurrentTok UNDEFINED SYMBOLS diff --git a/firmware/main.hex b/firmware/main.hex index 27ab57c..3902f18 100644 --- a/firmware/main.hex +++ b/firmware/main.hex @@ -6,10 +6,10 @@ :1015500012011001FF000008C016DC0501000102A5
:10156000000109021200010100803209040000009C
:101570000000000011241FBECFE5D2E0DEBFCDBFCA
-:1015800000EB0F9307E00F9310E0A0E6B0E0E6ED6C
+:1015800000EB0F9307E00F9310E0A0E6B0E0E8EF68
:10159000FDE102C005900D92A836B107D9F710E021
-:1015A000A8E6B0E001C01D92AC39B107E1F7FAD16D
-:1015B00010C4A6CFA82FB92F80E090E041E050EAF8
+:1015A000A8E6B0E001C01D92AD39B107E1F7FDD169
+:1015B00021C4A6CFA82FB92F80E090E041E050EAE7
:1015C000609530E009C02D9182279795879510F09E
:1015D00084279527305EC8F36F5FA8F30895EADF8C
:1015E0008D939D930895A6E088279927AA9569F081
@@ -19,7 +19,7 @@ :1016200021F0CF91CFBFCF916ACFCC27C395B39B89
:10163000E9F7B39B0BC0B39B09C0B39B07C0B39B37
:1016400005C0B39B03C0B39B01C0D3C00F92DF930F
-:10165000C0917F00DD27CA57DF4F012EB39B03C027
+:10165000C0918000DD27C957DF4F012EB39B03C027
:10166000DF910F90E6CF2F930F931F934F932FEFA0
:101670004F6F06B303FB20F95F933F9350E03BE0CD
:1016800065C016B30126502953FDC89556B30127EE
@@ -42,104 +42,106 @@ :10179000102713FB24F90026502906B22F7939F2BD
:1017A00070CF10E21ABF002717C03B503195C31B02
:1017B000D04010E21ABF0881033CF9F00B34E9F085
-:1017C00020917D001981110F1213EDCF093651F1CF
-:1017D0000D3211F0013E39F7009384003F915F9183
+:1017C00020917E001981110F1213EDCF093651F1CE
+:1017D0000D3211F0013E39F7009385003F915F9182
:1017E0004F911F910F912F91DF910F90CAB7C5FDB7
-:1017F0001DCFCF91CFBFCF91189520918400222388
-:1018000069F310918200112321F5343022F13093D5
-:10181000820020937E0010917F003BE0311B3093CB
-:101820007F0019C00091820001309CF40AE53091DC
-:10183000600034FD11C000936000C2E7D0E010C02A
+:1017F0001DCFCF91CFBFCF91189520918500222387
+:1018000069F310918300112321F5343022F13093D4
+:10181000830020937F00109180003BE0311B3093C8
+:10182000800019C00091830001309CF40AE53091DA
+:10183000600034FD11C000936000C3E7D0E010C029
:10184000052710E000C021C0052710E0C89508BB9F
:1018500014C03AE501C032ED032EC0E0D0E032E022
:1018600017B31861C39A08B317BB58E120E84FEFCC
:1018700020FF052708BB279517951C3F28F7000078
:101880004552B0F720FF0527279508BB17951C3F49
-:10189000B8F629913A9561F7077E10918300110FF0
-:1018A00008BBC250D04011F010937D0010E21ABF67
+:10189000B8F629913A9561F7077E10918400110FEF
+:1018A00008BBC250D04011F010937E0010E21ABF66
:1018B000086017B3177E402F477E54E05A95F1F722
-:1018C00008BB17BB48BB8ACFF894E0916800F09141
-:1018D0006900329785E080935700E89507B600FCD1
-:1018E000FDCF78940895209168003091690021150A
-:1018F000310509F43FC024303105B1F044E12C3FFB
-:10190000340739F480916B0090916C008E579A4F98
-:101910000DC044E12E3F340749F480916D00909151
-:101920006E008D579A4F02C08FE79AECF894E091C1
-:101930006800F091690021E00C0120935700E895C0
-:10194000112478944091680050916900FA01259122
-:101950003491282339232817390729F080916A0008
-:10196000816080936A004E5F5F4F5093690040939F
-:101970006800089581E180935700E895D5CFCF9313
-:10198000DF93C0916800D0916900CF73D0708FEF62
-:101990009FEFA9DF2296C034D105CCF395DFDF910C
-:1019A000CF910895DF93CF930F92CDB7DEB788E143
-:1019B0000FB6F89481BD11BC0FBEE0E0F0E0859158
-:1019C00094912AEC8F37920741F4E4E0F0E085919E
-:1019D00094913AEC8F37930709F0D1DF10926900A8
-:1019E0001092680087B3836087BBC09AC198AC9A95
-:1019F0008BB780628BBFBB9A8FE49DE2A9E18150D7
-:101A00009040A040E1F700C00000BB987894EE241D
-:101A1000FF2420918200235027FDF0C080917F0099
-:101A2000ECE0F0E0E81BF109EA57FF4F80917E00FF
-:101A30008D3209F0A0C0283009F0DEC083EC80931D
-:101A400072008AE58093600010926F00908190761A
-:101A50008181992311F1882341F482E690E09093EB
-:101A600081008093800025E07CC0813079F4C098AB
-:101A70008281809370008481958190936900809326
-:101A80006800808187FD68C02FEF67C080916A0081
-:101A9000846080936A0020E064C0928110927B0091
-:101AA000882331F410927C008BE790E022E04FC055
-:101AB000853019F49093830040C08630A9F5838166
-:101AC000813019F480E595E104C0823041F482E66A
-:101AD00095E1909381008093800022E121C08330C2
-:101AE000F1F4992341F48EE195E190938100809384
-:101AF000800024E015C0913041F482E295E190939A
-:101B000081008093800022E20BC0923041F484E493
-:101B100095E190938100809380002CE001C020E04B
-:101B200080E480936F001DC0883059F0893019F42B
-:101B30009093850002C08A3039F08BE790E020E076
-:101B400006C085E890E002C08BE790E021E090932A
-:101B500081008093800005C0268180E880936F001B
-:101B600007C08781882321F48681821708F4282FF3
-:101B70002093610041C080916F0087FF3DC080913C
-:101B80007000821B809370008F018091680090919B
-:101B90006900009749F4D8018D919C911197909319
-:101BA0006C0080936B0014C08430910541F4F801FF
-:101BB0008081918190936E0080936D0009C0F4E163
-:101BC0008A3F9F0728F081E180935700E89509C07C
-:101BD000D8018D919D918D01298385DE2981225027
-:101BE000A1F680917000882339F480916A008260A8
-:101BF00080936A00109261001092820080916000D0
-:101C000084FF47C0809161008F3F09F442C0082FD4
-:101C1000893008F008E0801B809361008091720099
-:101C200098E8892780937200002339F1E0918000C1
-:101C3000F091810090916F00802F815096FF0CC031
-:101C400090E08C589F4FA3E7B0E024912D933196FC
-:101C5000A817B907D1F70DC09F0190E08C589F4F8E
-:101C6000A3E7B0E0F90141919F014D93A817B9078F
-:101C7000C9F7F0938100E093800083E790E0602F44
-:101C8000AEDC0C5F0C3019F08FEF80936100009395
-:101C9000600084E196B3987131F48150D9F71092C5
-:101CA000830010927D0001E0811100E080917100BD
-:101CB000801739F0002319F4F89451D078940093E8
-:101CC00071008CE991E00197F1F7000080916A00C2
-:101CD000882321F40894E11CF11C02C0EE24FF24A7
-:101CE00080FF0EC0F894E0916800F091690032978F
-:101CF00083E080935700E89507B600FCFDCF789409
-:101D000080916A0081FF11C0A9E3B0E21197F1F759
-:101D100000C0000080916800909169008F739070FE
-:101D2000009711F02CDE01C0CFDD80916A0082FDAA
-:101D300005C0B1E5EB16B3ECFB0670F0E1E2F1EAA9
-:101D40003197F1F700C00000F8941BBE15BA10924D
-:101D50005F0210925E02D2CB10926A005ACEFF92BE
-:101D60000F931F93CF93DF93C8E0D0E010E000E81B
-:101D7000F12EF00EF1BE37DC29E0843392070CF42B
-:101D80001F2D06952197A1F7212F215021BFEC018E
-:101D9000012F10C028DC8453994097FF03C0909511
-:101DA00081959F4F8C179D0714F401B7EC0181B703
-:101DB0008F5F81BF21B730E0812F90E001968217BD
-:101DC000930744F701BFDF91CF911F910F91FF90CF
-:061DD0000895F894FFCF16
-:081DD6005AFF0114FA40140049
+:1018C00008BB17BB48BB8ACF81E080936F00F894B8
+:1018D000E0916800F0916900329785E080935700AD
+:1018E000E89507B600FCFDCF789408952091680034
+:1018F000309169002115310509F43FC024303105CC
+:10190000B1F044E12C3F340739F480916B009091A1
+:101910006C008E579A4F0DC044E12E3F340749F4B6
+:1019200080916D0090916E008D579A4F02C08FE7A5
+:101930009AECF894E0916800F091690021E00C01C4
+:1019400020935700E89511247894409168005091B5
+:101950006900FA0125913491282339232817390782
+:1019600029F080916A00816080936A004E5F5F4F2A
+:101970005093690040936800089581E18093570077
+:10198000E895D5CFCF93DF93C0916800D0916900DF
+:10199000CF73D0708FEF9FEFA9DF2296C034D105AF
+:1019A000CCF392DFDF91CF910895DF93CF930F9225
+:1019B000CDB7DEB788E10FB6F89481BD11BC0FBE7C
+:1019C000E0E0F0E0859194912AEC8F37920741F4A2
+:1019D000E4E0F0E0859194913AEC8F37930709F0B9
+:1019E000D1DF109269001092680087B3836087BBD3
+:1019F000C09AC198AC9A8BB780628BBFBB9A8FE4B8
+:101A00009DE2A9E181509040A040E1F700C00000B4
+:101A1000BB987894EE24FF2420918300235027FD67
+:101A2000F0C080918000ECE0F0E0E81BF109E9579C
+:101A3000FF4F80917F008D3209F0A0C0283009F05F
+:101A4000DEC083EC809373008AE58093600010927F
+:101A50007000908190768181992311F1882341F45F
+:101A600082E690E0909382008093810025E07CC024
+:101A7000813079F4C098828180937100848195814E
+:101A80009093690080936800808187FD68C02FEF84
+:101A900067C080916A00846080936A0020E064C01F
+:101AA000928110927C00882331F410927D008CE7A3
+:101AB00090E022E04FC0853019F49093840040C03C
+:101AC0008630A9F58381813019F480E595E104C061
+:101AD000823041F482E695E1909382008093810008
+:101AE00022E121C08330F1F4992341F48EE195E1A4
+:101AF000909382008093810024E015C0913041F4DE
+:101B000082E295E1909382008093810022E20BC0F3
+:101B1000923041F484E495E19093820080938100B7
+:101B20002CE001C020E080E4809370001DC088306C
+:101B300059F0893019F49093860002C08A3039F048
+:101B40008CE790E020E006C086E890E002C08CE7D9
+:101B500090E021E0909382008093810005C026816F
+:101B600080E88093700007C08781882321F48681F4
+:101B7000821708F4282F2093610041C080917000E3
+:101B800087FF3DC080917100821B809371008F019F
+:101B90008091680090916900009749F4D8018D9177
+:101BA0009C91119790936C0080936B0014C08430CB
+:101BB000910541F4F8018081918190936E008093AA
+:101BC0006D0009C0F4E18A3F9F0728F081E180930E
+:101BD0005700E89509C0D8018D919D918D01298309
+:101BE00085DE29812250A1F680917100882339F485
+:101BF00080916A00826080936A0010926100109266
+:101C000083008091600084FF47C0809161008F3F16
+:101C100009F442C0082F893008F008E0801B809347
+:101C200061008091730098E88927809373000023F6
+:101C300039F1E0918100F091820090917000802F45
+:101C4000815096FF0CC090E08B589F4FA4E7B0E006
+:101C500024912D933196A817B907D1F70DC09F0194
+:101C600090E08B589F4FA4E7B0E0F90141919F01AC
+:101C70004D93A817B907C9F7F0938200E09381004C
+:101C800084E790E0602FABDC0C5F0C3019F08FEF35
+:101C9000809361000093600084E196B3987131F401
+:101CA0008150D9F71092840010927E0001E08111DA
+:101CB00000E080917200801739F0002319F4F89445
+:101CC0005FD07894009372008CE991E00197F1F76E
+:101CD000000080916A00882321F40894E11CF11C23
+:101CE00002C0EE24FF2480FF0EC0F894E09168004B
+:101CF000F0916900329783E080935700E89507B62A
+:101D000000FCFDCF789480916A0081FF11C0A9E3A7
+:101D1000B0E21197F1F700C0000080916800909147
+:101D200069008F739070009711F02CDE01C0CCDD3C
+:101D300080916A0082FD05C0B1E5EB16B3ECFB06AD
+:101D4000E0F0E1E2F1EA3197F1F700C00000F89429
+:101D50001BBE15BA80916F00882311F409C012DEF2
+:101D60008091680090916900F5E180309F07B8F399
+:101D700010925F0210925E02C1CB10926A004CCEAC
+:101D8000FF920F931F93CF93DF93C8E0D0E010E052
+:101D900000E8F12EF00EF1BE26DC29E08433920734
+:101DA0000CF41F2D06952197A1F7212F215021BF5B
+:101DB000EC01012F10C017DC8453994097FF03C03A
+:101DC000909581959F4F8C179D0714F401B7EC01F6
+:101DD00081B78F5F81BF21B730E0812F90E00196FE
+:101DE0008217930744F701BFDF91CF911F910F91A5
+:081DF000FF900895F894FFCF65
+:081DF8005AFF0114FA40140027
:0400000300001500E4
:00000001FF
diff --git a/firmware/main.map b/firmware/main.map index c5f2234..ef36b22 100644 --- a/firmware/main.map +++ b/firmware/main.map @@ -158,7 +158,7 @@ LOAD /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a .rela.plt *(.rela.plt) -.text 0x00001500 0x8d6 +.text 0x00001500 0x8f8 *(.vectors) .vectors 0x00001500 0x1e /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn85.o 0x00001500 __vectors @@ -241,17 +241,17 @@ LOAD /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a 0x000015de usbCrc16Append 0x000015e6 usbMeasureFrameLength 0x0000160c __vector_2 - .text 0x000018c8 0x496 main.o - 0x000019a4 main - .text 0x00001d5e 0x74 libs-device/osccal.o - 0x00001d5e calibrateOscillator - 0x00001dd2 . = ALIGN (0x2) + .text 0x000018c8 0x4b8 main.o + 0x000019aa main + .text 0x00001d80 0x74 libs-device/osccal.o + 0x00001d80 calibrateOscillator + 0x00001df4 . = ALIGN (0x2) *(.text.*) - 0x00001dd2 . = ALIGN (0x2) + 0x00001df4 . = ALIGN (0x2) *(.fini9) - .fini9 0x00001dd2 0x0 /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a(_exit.o) - 0x00001dd2 exit - 0x00001dd2 _exit + .fini9 0x00001df4 0x0 /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a(_exit.o) + 0x00001df4 exit + 0x00001df4 _exit *(.fini9) *(.fini8) *(.fini8) @@ -270,11 +270,11 @@ LOAD /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00001dd2 0x4 /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a(_exit.o) + .fini0 0x00001df4 0x4 /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a(_exit.o) *(.fini0) - 0x00001dd6 _etext = . + 0x00001df8 _etext = . -.data 0x00800060 0x8 load address 0x00001dd6 +.data 0x00800060 0x8 load address 0x00001df8 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x7 main.o @@ -288,33 +288,33 @@ LOAD /usr/local/CrossPack-AVR-20120217/lib/gcc/avr/4.5.1/avr25/libgcc.a 0x00800068 _edata = . 0x00800068 PROVIDE (__data_end, .) -.bss 0x00800068 0x34 +.bss 0x00800068 0x35 0x00800068 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800068 0xa main.o + .bss 0x00800068 0xb main.o *(.bss*) *(COMMON) - COMMON 0x00800072 0x2a main.o - 0x00800072 usbTxBuf - 0x0080007d usbDeviceAddr - 0x0080007e usbRxToken - 0x0080007f usbInputBufOffset - 0x00800080 usbMsgPtr - 0x00800082 usbRxLen - 0x00800083 usbNewDeviceAddr - 0x00800084 usbCurrentTok - 0x00800085 usbConfiguration - 0x00800086 usbRxBuf - 0x0080009c PROVIDE (__bss_end, .) - 0x00001dd6 __data_load_start = LOADADDR (.data) - 0x00001dde __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x0080009c 0x0 - 0x0080009c PROVIDE (__noinit_start, .) + COMMON 0x00800073 0x2a main.o + 0x00800073 usbTxBuf + 0x0080007e usbDeviceAddr + 0x0080007f usbRxToken + 0x00800080 usbInputBufOffset + 0x00800081 usbMsgPtr + 0x00800083 usbRxLen + 0x00800084 usbNewDeviceAddr + 0x00800085 usbCurrentTok + 0x00800086 usbConfiguration + 0x00800087 usbRxBuf + 0x0080009d PROVIDE (__bss_end, .) + 0x00001df8 __data_load_start = LOADADDR (.data) + 0x00001e00 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080009d 0x0 + 0x0080009d PROVIDE (__noinit_start, .) *(.noinit*) - 0x0080009c PROVIDE (__noinit_end, .) - 0x0080009c _end = . - 0x0080009c PROVIDE (__heap_start, .) + 0x0080009d PROVIDE (__noinit_end, .) + 0x0080009d _end = . + 0x0080009d PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) diff --git a/firmware/main.o b/firmware/main.o Binary files differindex 7a2f8d1..fe4f2d7 100644 --- a/firmware/main.o +++ b/firmware/main.o diff --git a/firmware/nyan-cat-dump.bin b/firmware/nyan-cat-dump.bin Binary files differnew file mode 100644 index 0000000..123a7c6 --- /dev/null +++ b/firmware/nyan-cat-dump.bin diff --git a/firmware/upload.rb b/firmware/upload.rb index 171bdfa..7d7f0bc 100644 --- a/firmware/upload.rb +++ b/firmware/upload.rb @@ -109,7 +109,6 @@ thinklet.program = test_data puts "That seems to have gone well! Telling thinklet to run program..." -sleep(0.5) thinklet.finished # let thinklet know it can go do other things now if it likes puts "All done!" diff --git a/firmware/usbdrv/oddebug.c.lst b/firmware/usbdrv/oddebug.c.lst index 1bcf2d7..93b6f9b 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//ccWFeAjP.s page 1 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s page 1 1 .file "oddebug.c" @@ -8,16 +8,16 @@ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s page 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 -GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s page 2 +GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s page 2 DEFINED SYMBOLS *ABS*:00000000 oddebug.c -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:2 *ABS*:0000003f __SREG__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:3 *ABS*:0000003e __SP_H__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:4 *ABS*:0000003d __SP_L__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:5 *ABS*:00000034 __CCP__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccWFeAjP.s:7 *ABS*:00000001 __zero_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:2 *ABS*:0000003f __SREG__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:3 *ABS*:0000003e __SP_H__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:4 *ABS*:0000003d __SP_L__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:5 *ABS*:00000034 __CCP__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:6 *ABS*:00000000 __tmp_reg__ +/var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMxM4tr.s:7 *ABS*:00000001 __zero_reg__ NO UNDEFINED SYMBOLS |