Хочу переписать PC загрузчик, разбираюсь с форматом.
Код записи хекса в самом бутлоадере таков:
Код
unsigned int i;
unsigned int TempInt;
unsigned char FlashCheckSum = 0;
unsigned char CheckSum = 0;
unsigned char Left;
unsigned char Right;
for (i=0;i<PageByte;i+=2)
{
Right = RxChar();
Left = RxChar();
TempInt = (unsigned int)Right + ((unsigned int)Left<<8);
CheckSum += (Right + Left);
fill_temp_buffer(TempInt,i); //call asm routine.
}
if (CheckSum != RxChar()) return 0;
write_page(PageAddress,0x03); //Perform page ERASE
write_page(PageAddress,0x05); //Perform page write
enableRWW();
for (i=0;i<PageByte;i+=2)
{
TempInt = read_program_memory(PageAddress + i,0x00);
FlashCheckSum += (char)(TempInt & 0x00ff) + (char)(TempInt >> 8);
}
if (CheckSum != FlashCheckSum) return 0;
return 1;
unsigned int TempInt;
unsigned char FlashCheckSum = 0;
unsigned char CheckSum = 0;
unsigned char Left;
unsigned char Right;
for (i=0;i<PageByte;i+=2)
{
Right = RxChar();
Left = RxChar();
TempInt = (unsigned int)Right + ((unsigned int)Left<<8);
CheckSum += (Right + Left);
fill_temp_buffer(TempInt,i); //call asm routine.
}
if (CheckSum != RxChar()) return 0;
write_page(PageAddress,0x03); //Perform page ERASE
write_page(PageAddress,0x05); //Perform page write
enableRWW();
for (i=0;i<PageByte;i+=2)
{
TempInt = read_program_memory(PageAddress + i,0x00);
FlashCheckSum += (char)(TempInt & 0x00ff) + (char)(TempInt >> 8);
}
if (CheckSum != FlashCheckSum) return 0;
return 1;
Где PageByte=256, т.е. 256 байт в странице. А как страница закодирована в хексе?
Кусочек хекса:
Код
:060000000C9443060C9471
:100006005F110C9460110C9400000C9400000C9489
:1000160061110C9400000C9400000C9400000C94E8
:1000260000000C94E1100C9400000C9400000C9459
:1000360000000C9400000C947B0D0C9400000C94B2
:1000460000000C947C110C9400000C9400000C949D
...
:100006005F110C9460110C9400000C9400000C9489
:1000160061110C9400000C9400000C9400000C94E8
:1000260000000C94E1100C9400000C9400000C9459
:1000360000000C9400000C947B0D0C9400000C94B2
:1000460000000C947C110C9400000C9400000C949D
...
Начало каждой строки сильно напоминает номер (строки? страницы?), но дальнейшее содержимое ну никак не равно 256 элементов... Подскажите, плиз, в какую сторону двигаться.. Или может кто поделится исходником с комментариями для понимания? Заранее спасибо.