65 lines
1.1 KiB
Arduino
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();
|
|
}
|
|
|
|
|