úÄÒÁ×ÓÔ×ÕÊ, Michael!
Tuesday March 15 2005 03:07, you (2:5020/826.31@Fidonet) wrote to me:
AG>> HÁÉÂÏÌÅÅ ÐpÏÓÔÙÅ ÔÅÓÔÙ "ÛÁÈÍÁÔÙ", "ÂÅÇÕÝÁÑ ÅÄÉÎÉÃÁ/ÎÏÌØ". MT> ðÏÄÓËÁÖÉ RTFM ÐÏ ÔÅÓÔÁÍ ïúõ. ÷ ÉÎÅÔÅ ÉÌÉ Åݣ ÇÄÅ.
á ÈÚ. þÅÓÔÎÏ ÇÏ×ÏpÑ - ÓÐÅÃÉÁÌØÎÏ ÎÅ ÉÓËÁÌ.
åÓÌÉ ÔÁË ÎÁÄÏ ÓÐpÏÛÕ... - ÅÓÔØ pÙÂÎÙÅ ÍÅÓÔÁ.
÷ÏÔ pÁÂÏÔÁÀÝÉÊ ÐpÏÓÔÏÊ ÔÅÓÔ. ïÔÓÕÔÓÔ×ÕÅÔ ÏÐpÅÄÅÌÅÎÉÅ ÓÂÏÊÎÏÇÏ ÁÄpÅÓÁ\pÁÚpÑÄÁ. ôÁË ÜÔÏ É ÎÅ ÎÕÖÎÏ. HÁÌÉÞÉÅ ÏÛÉÂËÉ ÅÓÔØ ÂpÁËÏ×ÏÞÎÙÊ ÐpÉÚÎÁË ×ÓÅÇÏ ÍË.
// RAMTEST.C
// ôÅÓÔ ïúõ "ûÁÈÍÁÔÎÏÅ ÐÏÌÅ" // ðÏÍÅÝÁÅÔÓÑ × .init0 á×ÔÏÍÁÔÉÞÅÓËÉ ×ÙÚÙ×ÁÅÔÓÑ ÐÏÓÌÅ RESET'a
#include <avr\io.h>
#if defined (__AVR_ATmega128__) || defined (__AVR_ATmega64__) #define RAMBEGIN 0x0100 #else #define RAMBEGIN 0x0060 #endif
#define ITERATION 333
unsigned int ram_bad __attribute__ ((section (".noinit"))); void ram_test (void) __attribute__ ((naked)) \ __attribute__ ((section (".init0")));
void ram_test () { unsigned char* ram_ptr = (unsigned char*)RAMBEGIN; unsigned char tmp; unsigned int bad = 0; unsigned int iteration = ITERATION; do{ do{
*(ram_ptr++) = 0xAA;
*(ram_ptr++) = 0x55; }while ((unsigned int)ram_ptr < RAMEND);
do{ tmp = *(--ram_ptr); tmp ^= *(--ram_ptr); if (tmp != 0xFF) bad ++; }while ((unsigned int)ram_ptr > RAMBEGIN);
do{
*(ram_ptr++) = 0x55;
*(ram_ptr++) = 0xAA; }while ((unsigned int)ram_ptr < RAMEND);
do{ tmp = *(--ram_ptr); tmp ^= *(--ram_ptr); if (tmp != 0xFF) bad ++; }while ((unsigned int)ram_ptr > RAMBEGIN);
do{
*(ram_ptr++) = 0xCC;
*(ram_ptr++) = 0x33; }while ((unsigned int)ram_ptr < RAMEND);
do{ tmp = *(--ram_ptr); tmp ^= *(--ram_ptr); if (tmp != 0xFF) bad ++; }while ((unsigned int)ram_ptr > RAMBEGIN);
do{
*(ram_ptr++) = 0x33;
*(ram_ptr++) = 0xCC; }while ((unsigned int)ram_ptr < RAMEND);
do{ tmp = *(--ram_ptr); tmp ^= *(--ram_ptr); if (tmp != 0xFF) bad ++; }while ((unsigned int)ram_ptr > RAMBEGIN);
iteration--;
}while (iteration);
ram_bad = bad; }
// End ram_test
.....
// MAIN.C
extern unsigned int ram_bad;
int main (void) { if (ram_bad) { //ôÕÔ ÞÅ-ÎÉÔØ ÄÅÌÁÅÍ, ÅÓÌÉ ÔÅÓÔ ÎÅ passed }
else {
// bla-bla-bla
for (;;)
_SLEEP();
}
return 0; }
Alex