Files
CCU4-firmware/ramtest.ino
T
2023-09-11 17:40:08 +02:00

65 lines
1.1 KiB
Arduino

extern byte __bss_end;
#define RAMBEG 0x0200
#define RAMEND 0x2200
static byte *ramPtr;
void __attribute__((noinline)) RamGetPtr() {
byte aa = 0xaa;
ramPtr = &aa;
}
void RamFill() {
byte *b;
RamGetPtr();
for (b = &__bss_end; b < ramPtr; b++) {
*b = 0xaa;
}
}
int RamFreeSize() {
byte *b;
for (b = &__bss_end; b < (byte *)RAMEND; b++) {
if (*b != 0xaa) break;
}
return (int)(b - &__bss_end);
}
void RamTest() {
byte *bb, *b;
byte ch;
boolean gap = false;
for (bb = (byte *) RAMBEG; bb < (byte *)RAMEND; bb+=0x20) {
Serial.print((word)bb, HEX);
Serial.write(' ');
for (b = bb; b < bb + 0x20; b++) {
if (*b >= ' ' && *b < 0x7f) {
Serial.print((char)*b);
} else {
Serial.write('.');
}
}
Serial.print(' ');
for (b = bb; b < bb + 0x20; b++) {
ch = *b;
if (ch < 16) Serial.print('0');
if (b == &__bss_end) gap = true;
if (gap && ch == 0xaa) {
Serial.print(F(" "));
} else {
gap = false;
Serial.print(ch, HEX);
Serial.write(' ');
}
}
Serial.println();
}
Serial.println();
}