From: Stephan Bärwolf Date: Sat, 4 Aug 2012 10:56:38 +0000 (+0200) Subject: introduce spminterace capabilities for new devices (untested, yet) X-Git-Tag: 2010-07-27-stephan-201208041315~2 X-Git-Url: http://git.linex4red.de/pub/USBaspLoader.git/commitdiff_plain/6d11af0934f12d1d2cdaeb177d939042271d4de0 introduce spminterace capabilities for new devices (untested, yet) Because of the same register-ids the actual code could be dupicated to following devices: ATmega48 ATmega48P ATmega88 ATmega88P ATmega168 ATmega168P ATmega48A ATmega48PA ATmega88A ATmega88PA ATmega168A ATmega168PA ATmega328 ATmega328P ATmega164A ATmega164PA ATmega324A ATmega324PA ATmega644A ATmega644PA ATmega1284 ATmega1284P Signed-off-by: Stephan Bärwolf --- diff --git a/firmware/spminterface.h b/firmware/spminterface.h index 00747c7..d67c3e9 100644 --- a/firmware/spminterface.h +++ b/firmware/spminterface.h @@ -134,6 +134,110 @@ const uint16_t bootloader__do_spm[19] PROGMEM = {0x0000, 0x2dec, 0x2dfd, 0xb6b7, 1842: f4 cf rjmp .-24 ; 0x182c 1844: 08 95 ret */ + + + + + +#elif defined (__AVR_ATmega48__) || defined (__AVR_ATmega48P__) || defined (__AVR_ATmega88__) || defined (__AVR_ATmega88P__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega168P__) +//assume SPMCR:=SPMCSR==0x37, SPMEN:=SELFPRGEN==0x0, RWWSRE=0x4, RWWSB=0x6 +const uint16_t bootloader__do_spm[19] PROGMEM = {0x0000, 0x2dec, 0x2dfd, 0xb6b7, 0xfcb0, 0xcffd, 0xbf27, 0x95e8, 0xb6b7, + 0xfcb0, 0xcffd, 0xe121, 0xb6b7, 0xfcb6, 0xcff4, 0x9508, 0xFFFF, 0xFFFF, + 0xFFFF}; +/* +00001826 : + 1826: 00 00 nop + 1828: ec 2d mov r30, r12 + 182a: fd 2d mov r31, r13 + +0000182c : + 182c: b7 b6 in r11, 0x37 ; 55 + 182e: b0 fc sbrc r11, 0 + 1830: fd cf rjmp .-6 ; 0x182c + 1832: 27 bf out 0x37, r18 ; 55 + 1834: e8 95 spm + +00001836 : + 1836: b7 b6 in r11, 0x37 ; 55 + 1838: b0 fc sbrc r11, 0 + 183a: fd cf rjmp .-6 ; 0x1836 + 183c: 21 e1 ldi r18, 0x11 ; 17 + 183e: b7 b6 in r11, 0x37 ; 55 + 1840: b6 fc sbrc r11, 6 + 1842: f4 cf rjmp .-24 ; 0x182c + 1844: 08 95 ret +*/ + + + + + +#elif defined (__AVR_ATmega48A__) || defined (__AVR_ATmega48PA__) || defined (__AVR_ATmega88A__) || defined (__AVR_ATmega88PA__) || defined (__AVR_ATmega168A__) || defined (__AVR_ATmega168PA__) || defined (__AVR_ATmega328__) || defined (__AVR_ATmega328P__) +//assume SPMCR:=SPMCSR==0x37, SPMEN:=SELFPRGEN==0x0, RWWSRE=0x4, RWWSB=0x6 +const uint16_t bootloader__do_spm[19] PROGMEM = {0x0000, 0x2dec, 0x2dfd, 0xb6b7, 0xfcb0, 0xcffd, 0xbf27, 0x95e8, 0xb6b7, + 0xfcb0, 0xcffd, 0xe121, 0xb6b7, 0xfcb6, 0xcff4, 0x9508, 0xFFFF, 0xFFFF, + 0xFFFF}; +/* +00001826 : + 1826: 00 00 nop + 1828: ec 2d mov r30, r12 + 182a: fd 2d mov r31, r13 + +0000182c : + 182c: b7 b6 in r11, 0x37 ; 55 + 182e: b0 fc sbrc r11, 0 + 1830: fd cf rjmp .-6 ; 0x182c + 1832: 27 bf out 0x37, r18 ; 55 + 1834: e8 95 spm + +00001836 : + 1836: b7 b6 in r11, 0x37 ; 55 + 1838: b0 fc sbrc r11, 0 + 183a: fd cf rjmp .-6 ; 0x1836 + 183c: 21 e1 ldi r18, 0x11 ; 17 + 183e: b7 b6 in r11, 0x37 ; 55 + 1840: b6 fc sbrc r11, 6 + 1842: f4 cf rjmp .-24 ; 0x182c + 1844: 08 95 ret +*/ + + + + + +#elif defined (__AVR_ATmega164A__) || defined (__AVR_ATmega164PA__) || defined (__AVR_ATmega324A__) || defined (__AVR_ATmega324PA__) || defined (__AVR_ATmega644A__) || defined (__AVR_ATmega644PA__) || defined (__AVR_ATmega1284__) || defined (__AVR_ATmega1284P__) +//assume SPMCR:=SPCSR==0x37, SPMEN==0x0, RWWSRE=0x4, RWWSB=0x6 +const uint16_t bootloader__do_spm[19] PROGMEM = {0x0000, 0x2dec, 0x2dfd, 0xb6b7, 0xfcb0, 0xcffd, 0xbf27, 0x95e8, 0xb6b7, + 0xfcb0, 0xcffd, 0xe121, 0xb6b7, 0xfcb6, 0xcff4, 0x9508, 0xFFFF, 0xFFFF, + 0xFFFF}; +/* +00001826 : + 1826: 00 00 nop + 1828: ec 2d mov r30, r12 + 182a: fd 2d mov r31, r13 + +0000182c : + 182c: b7 b6 in r11, 0x37 ; 55 + 182e: b0 fc sbrc r11, 0 + 1830: fd cf rjmp .-6 ; 0x182c + 1832: 27 bf out 0x37, r18 ; 55 + 1834: e8 95 spm + +00001836 : + 1836: b7 b6 in r11, 0x37 ; 55 + 1838: b0 fc sbrc r11, 0 + 183a: fd cf rjmp .-6 ; 0x1836 + 183c: 21 e1 ldi r18, 0x11 ; 17 + 183e: b7 b6 in r11, 0x37 ; 55 + 1840: b6 fc sbrc r11, 6 + 1842: f4 cf rjmp .-24 ; 0x182c + 1844: 08 95 ret +*/ + + + + + #else #error "bootloader__do_spm has to be adapted, since there is no architecture code, yet" #endif