#define NOR ((unsigned char*)0xA0000000) #define NORWORD ((unsigned short int*)0xA0000000) void eraseblock(int addr); void writeblock(int block, int length); unsigned char payload[0x1000]; int main() { int i; for(i = 0; i < sizeof(payload);) { payload[i++] = 'C'; payload[i++] = 'H'; payload[i++] = 'R'; payload[i++] = 'I'; payload[i++] = 'S'; } eraseblock(0x3e0000); writeblock(0x3e0000, 0x1000); while (1); } void eraseblock(int addr) { NOR[addr]=0xFF; NOR[addr]=0x60; NOR[addr]=0xD0; //Unlock NOR[addr]=0x20; NOR[addr]=0xD0; //Erase NOR[addr]=0x50; while(NOR[addr]!=0x80); //wait for it to be ready } void writeblock(int addr, int length) { extern unsigned char *payload; unsigned int i; //first unlock the blocks for(i=0;i