From: Stephan Baerwolf Date: Tue, 2 Oct 2012 19:03:46 +0000 (+0200) Subject: extend "spminterface.h" for support of multiple ATmegas X-Git-Tag: v0.8~7 X-Git-Url: http://git.linex4red.de/pub/USBaspLoader.git/commitdiff_plain/63878dfbade33d8294c36c3e6d9435e2f5f32c08 extend "spminterface.h" for support of multiple ATmegas devices are: ATmega164A, ATmega164P, ATmega164PA, ATmega324A, ATmega324P, ATmega324PA, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega1284, ATmega1284P Signed-off-by: Stephan Baerwolf --- diff --git a/firmware/spminterface.h b/firmware/spminterface.h index 0e6db6a..8640832 100644 --- a/firmware/spminterface.h +++ b/firmware/spminterface.h @@ -112,8 +112,16 @@ ret #define funcaddr___bootloader__do_spm 0x7054 #elif defined (__AVR_ATmega88__) || defined (__AVR_ATmega88P__) || defined (__AVR_ATmega88A__) || defined (__AVR_ATmega88PA__) #define funcaddr___bootloader__do_spm 0x1834 + #elif defined (__AVR_ATmega164A__) || defined (__AVR_ATmega164P__) || defined (__AVR_ATmega164PA__) + #define funcaddr___bootloader__do_spm 0x387c #elif defined (__AVR_ATmega168__) || defined (__AVR_ATmega168P__) || defined (__AVR_ATmega168A__) || defined (__AVR_ATmega168PA__) #define funcaddr___bootloader__do_spm 0x3868 + #elif defined (__AVR_ATmega324A__) || defined (__AVR_ATmega324P__) || defined (__AVR_ATmega324PA__) + #define funcaddr___bootloader__do_spm 0x707c + #elif defined (__AVR_ATmega644__) || defined (__AVR_ATmega644A__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) + #define funcaddr___bootloader__do_spm 0xe07c + #elif defined (__AVR_ATmega1284__) || defined (__AVR_ATmega1284P__) + #define funcaddr___bootloader__do_spm 0x1e08c #else #error "unknown MCU - where is bootloader__do_spm located?" #endif @@ -319,10 +327,31 @@ const uint16_t bootloader__do_spm[17] BOOTLIBLINK = {0x0000, 0x2dec, 0x2dfd, 0xb -#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__) +#elif defined (__AVR_ATmega164A__) || defined (__AVR_ATmega164P__) || defined (__AVR_ATmega164PA__) || defined (__AVR_ATmega324A__) || defined (__AVR_ATmega324P__) || defined (__AVR_ATmega324PA__) || defined (__AVR_ATmega644__) || defined (__AVR_ATmega644A__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) || defined (__AVR_ATmega1284__) || defined (__AVR_ATmega1284P__) //assume SPMCR:=SPCSR==0x37, SPMEN==0x0, RWWSRE=0x4, RWWSB=0x6 and rampZ=0x3b const uint16_t bootloader__do_spm[17] BOOTLIBLINK = {0xbebb, 0x2dec, 0x2dfd, 0xb6b7, 0xfcb0, 0xcffd, 0xbf27, 0x95e8, 0xb6b7, - 0xfcb0, 0xcffd, 0xe121, 0xb6b7, 0xfcb6, 0xcff4, 0x9508, 0xFFFF}; + 0xfcb0, 0xcffd, 0xe121, 0xb6b7, 0xfcb6, 0xcff4, 0x9508, 0xFFFF}; + +#if defined (__AVR_ATmega164A__) || defined (__AVR_ATmega164P__) || defined (__AVR_ATmega164PA__) + #if (BOOTLOADER_ADDRESS != 0x3800) + #error BOOTLOADER_ADDRESS!=0x3800, on current MCU "funcaddr___bootloader__do_spm" might be currupted - please edit spminterface.h for nonstandard use + #endif +#elif defined (__AVR_ATmega324A__) || defined (__AVR_ATmega324P__) || defined (__AVR_ATmega324PA__) + #if (BOOTLOADER_ADDRESS != 0x7000) + #error BOOTLOADER_ADDRESS!=0x7000, on current MCU "funcaddr___bootloader__do_spm" might be currupted - please edit spminterface.h for nonstandard use + #endif +#elif defined (__AVR_ATmega644__) || defined (__AVR_ATmega644A__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) + #if (BOOTLOADER_ADDRESS != 0xE000) + #error BOOTLOADER_ADDRESS!=0xE000, on current MCU "funcaddr___bootloader__do_spm" might be currupted - please edit spminterface.h for nonstandard use + #endif +#elif defined (__AVR_ATmega1284__) || defined (__AVR_ATmega1284P__) + #if (BOOTLOADER_ADDRESS != 0x1E000) + #error BOOTLOADER_ADDRESS!=0x1E000, on current MCU "funcaddr___bootloader__do_spm" might be currupted - please edit spminterface.h for nonstandard use + #endif +#else + #error undefined device selection - this should not happen! +#endif + /* 00001826 : 1826: bb be out 0x3b,r11 ; rampZ=r11; (rampZ is at IO 0x3b)