а как бутлоадер узнает ЦРЦ аппликухи? посчитать то он её посчитает, а с чем он её сравнивает?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено MemoryTest 22 июля 2003 г. 15:37
В ответ на: не! У меня бутлодырь сперва... отправлено mse 22 июля 2003 г. 15:20

Я использовал то что в ИАРе генериться автоматом(линкером) переменная: __checksum. Которую в проге использую так:

if (crc16_flash_prog() != (U16)__checksum)
{
transmit_msg("CRC_error! MUST RESET \r\n ");
Write_EEPROM(MAIN_PASSWORD_ADDRESS,0x0);
Write_EEPROM((MAIN_PASSWORD_ADDRESS+1),0x0);
while(1); // Сбрасваемся ВАТЧДОГОМ
}

// ПП для подсчета ЦРС программы.
U16 crc16_flash_prog(void)
{
U16 counter;
U16 crc = 0;
U8 __farflash *byte_pointer=0;

for( counter = 0; counter < ((U16)(&__checksum)); counter++)

crc = (crc<<8) ^ crc16tab[((crc>>8) ^ *(U8 __farflash *) byte_pointer++)&0x00FF];

return crc;
}

таблицу не привожу.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru