Rev 1297 Rev 1298
Line 13... Line 13...
13   13  
14   14  
15 #INT_RDA 15 #INT_RDA
16 rs232_handler() 16 rs232_handler()
17 { 17 {
18 putchar(getc()); 18 putchar(getc());
19 } 19 }
20   20  
21   21  
22 /*-------------------------------- MAIN --------------------------------------*/ 22 /*-------------------------------- MAIN --------------------------------------*/
23 #SEPARATE 23 #SEPARATE
Line 41... Line 41...
41 #define LOADER_RESERVED getenv("PROGRAM_MEMORY")-26*FLASH_BLOCK_SIZE 41 #define LOADER_RESERVED getenv("PROGRAM_MEMORY")-26*FLASH_BLOCK_SIZE
42 #define BUFFER_LEN_LOD 46 42 #define BUFFER_LEN_LOD 46
43 #if FLASH_BLOCK_SIZE != getenv("FLASH_ERASE_SIZE")/2 43 #if FLASH_BLOCK_SIZE != getenv("FLASH_ERASE_SIZE")/2
44 #error Wrong length of the Flash Block Size. getenv("FLASH_ERASE_SIZE")/getenv("FLASH_WRITE_SIZE") 44 #error Wrong length of the Flash Block Size. getenv("FLASH_ERASE_SIZE")/getenv("FLASH_WRITE_SIZE")
45 #endif 45 #endif
46 46  
47   47  
48 #BUILD(INTERRUPT=FLASH_BLOCK_SIZE) // Redirect Interrupt routine above first flash block 48 #BUILD(INTERRUPT=FLASH_BLOCK_SIZE) // Redirect Interrupt routine above first flash block
49 #ORG 4,5 49 #ORG 4,5
50 void JumpToTheInterrupt() // Jump to the Interrupt Handler 50 void JumpToTheInterrupt() // Jump to the Interrupt Handler
51 { #asm GOTO FLASH_BLOCK_SIZE #endasm } 51 { #asm GOTO FLASH_BLOCK_SIZE #endasm }
52 #ORG 6,FLASH_BLOCK_SIZE-1 {} // First Flash block is reserved 52 #ORG 6,FLASH_BLOCK_SIZE-1 {} // First Flash block is reserved
53   53  
54   54  
55 #ORG LOADER_RESERVED,LOADER_RESERVED+FLASH_BLOCK_SIZE-1 auto=0 55 #ORG LOADER_RESERVED,LOADER_RESERVED+FLASH_BLOCK_SIZE-1 auto=0
56 #SEPARATE 56 #SEPARATE
57 void dumy_main() // Main on the fix position 57 void dummy_main() // Main on the fix position
58 { 58 {
59 real_main(); 59 real_main();
60 } 60 }
61   61  
62 #ORG LOADER_RESERVED+FLASH_BLOCK_SIZE,getenv("PROGRAM_MEMORY")-125 auto=0 default 62 #ORG LOADER_RESERVED+FLASH_BLOCK_SIZE,getenv("PROGRAM_MEMORY")-125 auto=0 default
Line 167... Line 167...
167 { 167 {
168   168  
169 if (line_type == 0) 169 if (line_type == 0)
170 { 170 {
171 // Read old program memory content 171 // Read old program memory content
172 for (i=0,next_addr=addr;i<8;i++) 172 for (i=0,next_addr=addr;i<8;i++)
173 data.i16[i]=read_program_eeprom(next_addr++); 173 data.i16[i]=read_program_eeprom(next_addr++);
174 // Loops through all of the data and stores it in data 174 // Loops through all of the data and stores it in data
175 // The last 2 bytes are the check sum, hence buffidx-3 175 // The last 2 bytes are the check sum, hence buffidx-3
176 for (i=8,dataidx=0; i < buffidx-3; i += 2) 176 for (i=8,dataidx=0; i < buffidx-3; i += 2)
177 data.i8[dataidx++]=atoi_b16(&buffer[i]); 177 data.i8[dataidx++]=atoi_b16(&buffer[i]);
178   178  
179 if (addr == 0) 179 if (addr == 0)
180 { 180 {
181 181  
182 // Write 8 words to the Loader location 182 // Write 8 words to the Loader location
183 addr=LOADER_RESERVED; 183 addr=LOADER_RESERVED;
184 for (i=0;i<8;i++) 184 for (i=0;i<8;i++)
185 write_program_eeprom(addr++, data.i16[i]); 185 write_program_eeprom(addr++, data.i16[i]);
186 putchar('%'); 186 putchar('%');
187 } 187 }
188 else 188 else
189 if (addr > 7 && addr < LOADER_RESERVED) 189 if (addr > 7 && addr < LOADER_RESERVED)
Line 238... Line 238...
238 restart_wdt(); 238 restart_wdt();
239 }; 239 };
240   240  
241 CREN=0; CREN=1; // Reinitialise USART 241 CREN=0; CREN=1; // Reinitialise USART
242 restart_wdt(); 242 restart_wdt();
243 goto_address(LOADER_RESERVED); // Jump to the location where is the jump to the main 243 goto_address(LOADER_RESERVED); // Jump to the location where is the jump to the main
244 } 244 }
245 245