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 |
|