4 #pragma section CODE=IRAM,attr=CODE
7 #define cleardata() memset(data,0,BUFSIZE)
9 static void increaseled(void)
11 PDR14 = ~(((~PDR14)+1)%256);
15 static unsigned char recvbyte(void)
20 static unsigned short recvword(void)
22 static unsigned char b1, b2;
23 static unsigned int ret;
30 static unsigned int recvdword(void)
32 static unsigned char b1, b2, b3, b4;
33 static unsigned int ret;
38 ret = (b4 << 24) | (b3 << 16) | (b2 << 8) | b1;
42 static void halt(void)
49 static void panic(void)
59 unsigned short i, size;
60 unsigned char running = 1, data[BUFSIZE] = {0};
62 PORTEN = 0x3; /* enable I/O Ports */
79 address = recvdword();
85 Putch4(0x04); //Received Metadata.
87 for(i=0; i<size; i++) { /* get data */
91 Putch4(0x08); //Received Data.
94 for(i=0; i<size; i+=4) { /* erase */
95 if(FLASH_SectorErase(address + i) != 1) {
101 Putch4(0x18); //Erasing done.
102 for(i=0; i<size; i++) { /* flash the data */
104 if(FLASH_WriteHalfWord(address + (2*i), data[i]) != 1) {
108 Putch4(0x28); //Flashing done.
111 case 0x99: /* exit */
118 PDR14 = 0x55; //signal that we finished now!
124 for (; i <0x10; i+=4) {
125 (void) FLASH_SectorErase(baseaddr + i);
133 (void) FLASH_WriteHalfWord(baseaddr + (2*i), toflash[i]);