Свежие обсуждения
Микроконтроллеры

CCS USB CDC Bootloader

Настало время изучить Bootloader через USB. Использую МК PIC18F14K50. Взял пример от CCS (ex_usb_bootloader.c), прошил. Затем взял второй пример к этому загрузчику (ex_usb_loadmouse.c) и закачал прошивку с помощью упомянутой в инструкции программы Siow.exe. Прошивка заливается, но после перезапуска МК он "умирает".
Более детальное исследование показало, что после заливки прошивки через бутлоадер портятся первые два адреса. Было:

 Line  Address  Opcode               Disassembly

1 0000 EF7D GOTO 0x16fa
2 0002 F00B NOP
3 0004 FFFF NOP
4 0006 FFFF NOP


Стало:
 Line  Address  Opcode               Disassembly

1 0000 017D
2 0002 F000 NOP
3 0004 FFFF NOP
4 0006 FFFF NOP


Дальше, при беглом осмотре, код бутлоадера не меняется. Новая прошивка появляется с адресса 1FFF, как и положено.
Полез в исходники загрузчика, добавил проверку адреса:

но это не помогло, после срабатывания загрузчика первые два слова в прошивке изменяются и МК не стартует.
.
В файле-примере (ex_usb_loadmouse.c) строка с указанием необходимости использования загрузчика есть и прошивка генерируется начиная с адреса 1FFF (как и должно быть). В младших адресах FFFF;
.
Пробовал заливать через HyperTerminal - результат аналогичен.
.
Пробовал заливать через бутлоадер прошивку самого бутлоадера - результат аналогичен.
.
Попробовал закомментировать функцию записи во флэш, оставил только стирание. Как результат - новая программа не прошилась, но первые два байта исказились . Также заметил, что значение первого байта меняется (заметил 017D, 0188, 019E, 01D9). Втрой байт всегда F000.
.
Кто-то работал с этими загрузчиками?

 

Вот и сегодня сила коллективного разума помогла мне
Я еще раз лопатил код и наткнулся на мою-же модификацию: у меня нет кнопки на плате для запуска бутлоадера, поэтому я в EEPROM выставляю флаг "нужно запускать бутлоадер". И я непонятно откуда взял да и вставил вместо write_eeprom(0x01,0x01); write_program_eeprom(0x01,0x01); Тобиш я сам по окончании прошивки давал указание испортить начало .
Только-что исправил, проверил и... прошивка нормально залилась, первые два слова в полном порядке. МК стартовал.
Всем спасибо!