Описание протокола обмена данными (Bootloader)

Эта статья содержит описание протокола обмена данными загрузчика (Bootloader).

Для обмена данными, SECU-3 (далее просто “SECU”) использует последовательный интерфейс RS-232. Данные передаются в полудуплексном режиме (только передача или прием), формат: 8 bit, 1 stop, no parity. Скорость – 9600 бод. Данные передаются в виде ASCII символов, то есть для передачи одного байта используется два ASCII символа. Для кодирования цифр используются только большие буквы. Например, для передачи байта со значением 94 будет использована последовательность 5E. Работа с бутлоадером производится по средствам посылки ему пакетов содержащих код операции и данные. После чего бутлоадер производит соответствующие действия и подтверждает выполнение команды путем посылки подтверждения. Посылаемые и принимаемые пакеты могут быть различной длины, каждый пакет, который посылает SECU в ответ на команду, начинается с символа ‘<‘. Каждый пакет, который посылается в SECU, должен начинаться с символа ‘!’.

Команды поддерживаемые бутлоадером представлены ниже.

Программирование указанной страницы памяти программ

послать: !PNN(data)
ответ: <CS

Внимание! Перед посылкой блока данных необходимо подождать завершения стирания страницы – 3-4 мс (стирание начинается после приема команды).

Чтение указанной страницы памяти программ

послать: !RNN
ответ: <(data)CS

Выход из загрузчика и запуск основной программы

послать: !T
ответ: <@

Чтение содержимого EEPROM (размер EEPROM зависит от типа микроконтроллера)

послать: !J
ответ: <(data)CS

Запись содержимого EEPROM (размер EEPROM зависит от типа микроконтроллера)

послать: !W(data)
ответ: <CS

Передача информации о бутлоадере (24 байта)

послать: !I
ответ: <(data)

Использованные обозначения: 
NN – номер страницы памяти программ для чтения или записи (два символа);
(data) – данные для считывания или для программирования;
CS – байт контрольной суммы (два символа).

Размер страницы памяти программ зависит от типа микроконтроллера (смотрите даташит, например для ATmega16 размер составляет – 128 байт). Контрольная сумма считается путем сложения по модулю 2 (xor) всех байтов последовательности. Инициализация производится значением 0. После выхода из бутлоадера, основной программе требуется некоторое время на инициализацию (300:400мс). Поэтому перед началом работы с основной программой необходимо подождать соответствующее время.