Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Бутлоадер

Пт июн 22, 2018 22:23:20

Согласен, оказывается это не NOD32 ругается, а Мозила!
Вот Хром что выводит:
Изображение
А вот IE11 загружает без проблем ;)

Re: Бутлоадер

Сб июн 30, 2018 21:16:12

Всем добрый день!

Ну в общем, получилось, запустил, и пробовал через удаленку.

Всего реализация этого хозяйства прошла в 3 этапа.

1. сам бут расположил в конце процессора, парвые 4 байта начала процессора - команда перехода на БУТ, откуда в зависимости от настроек активации либо активируется, либо возвращает управление в офсет 4-начало основного кода.
Команду перехода состряпал вручную, бут выполнен в виде отдельного проекта, сшил это все вместе посредством программы товарища -=vovka=-. Естественно, в БУТе потребовалось реализовать в упрощенном виде функции работы с NOR и SPI из основного проекта, и конфигурационные слова должны совпадать с основным проектом, поскольку в процессе сшивки ХЕКСов конф. слова одного из проектов потребовалось вырезать.
Баг получился один... управление надо передавать не оттуда откуда получена команда, а из главного цикла, во избежание переполнения стека.

2 этап, подготовка образа для заливки и сама заливка. Оказалась что приведенная программа hex2bin это как раз то, что нужно. Остальное дело техники - после получения блока через UDP процессор перечитывает записанный блок и возвращает его ЦРЦ, передающей программе только остается сверять ЦРЦ и контролировать что все блоки подлежащие отправке прошли верификацию доставки. Практически, если бы не это, то конечно велика вероятность получить "кирпич" - в реальной сети 4-6 ретрансмиссий это норма. Запись на данном этапе идет не в процессор, а во внешнюю флешь.
В финале, отпаял флешь, и прочитал содержимое SPI-программатором, далее посредством WinHEXa из скачанного дампа извлек тот участок в который предполагалась запись. Проверка показала, что ЦРЦ отправляемого BINа и содержимого флеши совпало. Ура!

3. - это освоение TABLE WRITE. В этом процессе очень помог даташит от процессора 18F452, который есть русский. Это конечно сильно не то, 26К22 сильно отличается, но не принципиально. Снял code protect и PICKITом читал что получается. примеров в сети достаточно, и приведенные примеры в даташите исчерпывающи. Получилось не сразу, точнее писало, но не в ту позицию. Ошибка была в том, что отсутствовала команда TBLRD*-, и позиция смещалась.
Ну а потом, завелось. Еще нужно оттестировать что да как делать, если я хочу избежать полного падения системы в случае отключения света, насколько это вообще возможно, но в рамках вопроса этой темы - ПОЛУЧИЛОСЬ!
Поездил по точкам, прошил, из центра заливка работает.



Напрашивается последний вопрос, а чем лучше зашифровать бинарник?

Re: Бутлоадер

Ср июл 25, 2018 12:53:35

Разговор не о процессе доставки/верификации кода, а в случае со сбоем в процессе перепрошивки.
Допустим тот же сбой питания при самопрограммировании в удаленном устройстве.
Посему "удаленная" система должна иметь минимум две однотипные рабочие области.
Затирание предшествующей производится исключительно по корректному завершению процесса перепрошивки новой версии.
В случае сбоя управление возвращается предшествующей версии ПО для повтора перезагрузки/приема измененной версии кода.
Как наиболее простой вариант -- внешний накопитель кода и перезапускаемый в случае ошибки бутлоадер.
:roll:
Ответить