- Puts4("Write simpleprog to 0xf4000 ... ");
- error = FLASH_WriteHalfWord(0xf4000,0x9b00);
- error = FLASH_WriteHalfWord(0xf4002,0x0d4e);
- error = FLASH_WriteHalfWord(0xf4004,0xcff1);
- error = FLASH_WriteHalfWord(0xf4006,0x1601);
- error = FLASH_WriteHalfWord(0xf4008,0x9b05);
- error = FLASH_WriteHalfWord(0xf4010,0x04c7);
- error = FLASH_WriteHalfWord(0xf4012,0xc106);
- error = FLASH_WriteHalfWord(0xf4014,0x1656);
- error = FLASH_WriteHalfWord(0xf4016,0xe0fb);
- if( error == 1 )
- {
- Puts4("done.\n");
- }
- else
- {
- global_error = 1;
- Puts4("failed.\n");
- }
-
- i=0;
- Puts4("\nCurrent Content of FLASH at 0xf4000 ... 0xf401F:\n");
- while(i < 0x20)
- {
- Puts4("0x"); Puthex4( *(unsigned char *)(0xf4000 + i), 2); Puts4(" ");
- i++;
- if( (i % 0x10) == 0 ) Puts4("\n");
+ address = recvdword();
+ increaseled();
+
+ size = recvword();
+ increaseled();
+
+ for(i=0; i<size; i++) { /* get data */
+ increaseled();
+ data[i] = recvbyte();
+ }
+
+ for(i=0; i<size; i+=2) { /* flash the data */
+ increaseled();
+ next = (((unsigned short)data[i])<<8) | (unsigned short)data[i+1];
+ if(FLASH_WriteHalfWord(address + i, next) != 1) {
+ panic();
+ }
+ }
+ Putch4(0x28); //Flashing done.
+ break;
+
+ case 0x97: /* exit and restart (let do this by the watchdog!) */
+ while(1) {
+ unsigned long tmp = 1800;
+ while(tmp)
+ tmp = tmp - 1;
+ increaseled();
+ }
+
+ case 0x99: /* exit */
+ running = 0;
+ break;
+ default: break;
+ }