Автономный программатор AVR.

 

Введение.

    Работать нужно с комфортом, но это не всегда получается.

Реальность вносит свои коррективы.

    Пришлось как раз заниматься серийным программированием микроконт-

роллеров, у заказчика на объектах. Требовалось заменить программу т.к.

по недосмотру отгрузили устройства с диагностической программой за

место штатной.

    Требовалось приехать на объект с программатором и ноутбуком,

разобрать устройство, подключить программатор (JTAGICE mkII), 

заменить прошивку, собрать устройство обратно.

    Вопрос возник в процессе уже после нескольких итерация, и не давал

покоя: Таскать с собой набор в виде ноутбука и программатора ради

одной операции ? 

    Требовался программатор+ПК в виде одного устройства. Поиск готовые

автономных программаторов не дал положительных результатов.

Вот тогда и родилась идея создать программатор удовлетворяющий

своим потребностям. При этом программатор необходимо было сделать

быстро и из подручных средств.

    Идея и часть исходного кода была позаимствована с сайта

we.easyelectronics.ru Сверхмобильная прошивалка AVR по JTAG.

Спасибо автору Dominikanez за статью.

 

Реализация.

    За основу программатора была взята универсальная макетная плата на микроконтроллере STM32,

ЖКИ индикатор 4 х 20 символов, 4 кнопки, подходящий корпус.

 

      В результате получился программатор который решает следующие задачи:

  • Программирования микроконтроллеров без применения ПК с минимальным набором операций со стороны пользователя.
  • Устройство позволяет производить серийное программирование микроконтроллеров.
  • Возможность использования персоналом с минимальной квалификацией (техник, радиомонтажник или айтишник).

 

Принцип работы.

1. На персональном компьютере подготавливается образ для AVR микроконтроллера.

2. Полученный образ загружается в программатор через RS-232 по средствам протокола x-modem.

3. Программатор размещает полученный образ(ы) в виде файла(ов) во внутренней флеш памяти

(FAT16, 256Кб).

4. Оператор подключает программатор к плате с AVR микроконтроллером.

5. Оператор производит выбор необходимой прошивки при помощи клавиш и наблюдая результат

работы на индикаторе программатора.

6. Оператор производит запуск на программирование устройства, с последующим визуальным

контролем результата выполнения операции на дисплеи программатора. 

  

 

 Описание.

 

    Устройство является автономный программатором микроконтроллеров AVR т.е. позволяет производить

запись программы в память микроконтроллера без участия ПК. Устройство производит программирование

микроконтроллеров через JTAG интерфейс.

    Устройство позволяет производить следующие операции:

  1. Запись программ в память микроконтроллера с последующей проверкой.
  2. Запись FUSE-ов.
  3. Загрузку новой прошивки в память программатора по протоколу X-Modem.
  4. Просмотр состояния диска программатора (количество и тип прошивок).

 

    Программатор построен на микроконтроллере STM32F103Z. Часть внутренней flash памяти микроконт-

роллера выделена под ДИСК, на котором хранятся прошивки. Программатор имеет на передней панели

текстовый индикатор, а также кнопки управления для взаимодействия с пользователем.

    Устройство имеет в своем составе консоль, для диагностики, обслуживания устройства, загрузки новый

программ и т.п.

    Программатор поддерживает следующие микроконтроллеры: ATMEGA128, ATMEGA640, ATMEGA162.

При желании можно добавить новый микроконтроллер в список поддерживаемых.

 

Исходный код.

    Исходный код устройства выложен на GITHUB. Софт написан на языке Си, компилятор IAR.

     Список поддерживаемых микроконтроллеров представлен в файле: jtag.c, в структуре 

avr_signature_st

const avr_signature_struct avr_signature_st[] = {
  {"ATmega162", 0x1e9404, 64},
  {"ATmega128", 0x1e9702, 128},
  {"ATmega640", 0x1e9608, 64} 
};

    Каждый микроконтроллер описывается структурой avr_signature_struct.

  • Первый элемент структуры - текстовое наименование микроконтроллера.
  • Второй элемент Device Signature - служит для опознавания подключения микроконтроллера перед программированием.
  • Третий элемент структуры - размер страницы flash памяти в словах. 

    Все предельно просто, добавление нового микроконтроллера не должно составлять труда.

   

    Устройство содержит внешний ком порт который является консолью программатора, и служит для

взаимодействия пользователя с программатором.

Параметры подключения к консоли следующие: 115200 8N1.

    Консоль поддерживает следующие команды:

help или ? - Печать списка команд поддерживаемых консолью.
xmodem <filename> - Загрузка файла прошивки по протоколу X-modem.
mkfs

- Создание файловой системы внутри flash памяти микроконтроллера(диск),или удаление текущего содержимого диска.  

free - Печать размера свободного мести на диске.
ls - Печать списка файлов диска.
rm <filename> - Удаление файла. 
jtag <filename> - Программирование микроконтроллера программой <filename>.

 

Список консольных команд представлен в файле consol.c и реализация команд в файле task_consol.c.

 

Подготовка новой прошивки для загрузки в программатор.

    Перед загрузкой прошивки в программатор необходимо пропустить прошивку (в виде HEX файла)

через конвертер. Исходный код конвертера для ПК представлен в дереве исходников по ссылке fwa.

    Конвертер написан на языке Си и предназначен для компиляции в среде VisualStudio.

Конвертер представляет собой консольную программу, которой в командной строке передаются все

необходимые параметры.

 

Параметры запуска конвертера следующие (на примере ATMEGA640):

fwa -I r640.hex -O r640.bin -S 1E9608 -F 99E0FD

Разбор параметров:

-I r640.hex Входной HEX файл прошивки.
-O r640.bin Выходной файл, для загрузки в программатор.
-S 1E9608 Device Signature для ATMEGA640 из документации на микроконтроллер (ВНИМАНИЕ:программатор проверяет сигнатуру перед программированием !)
-F 99E0FD Состояние FUSE, необходимо обязательно задавать.

 

 Загрузка подготовленной прошивки в программатор.

  1. Подключить нуль модемный кабель к ПК и программатору.
  2. На Пк запустить терминальную программу с параметрами COM порта 115200 8N1.
  3. В консоли устройства набрать команду: xmodem <указать-имя-файла>.
  4. В терминальной программе перейти в режим передачи файла по протоколу X-modem.

 

Программирование микроконтроллера.

  1. Подключить JTAG кабель программатора к плате с программируемым микроконтроллером.
  2. Включить питание программатора и программируемого устройства.
  3. При помощи кнопок на передней панели программатора выбрать файл программы.
  4. Нажать кнопку prog на панели программатора и дождаться окончания результата программирования.

 

 

 

 

Рисунок 1. Внешний вид программатора.

 

Рисунок 2. Внешний вид индикатора в момент включения устройства.

 

Рисунок 3. Внешний вид индикатора устройства в режиме выбора файла программы.

 

Рисунок 4. Основная плата устройства.

 

Рисунок 5. Устройство вид внутри обе панели.