пятница, 20 марта 2009 г.

Модуль Crumb128 на процессоре Atmel AVR Mega128 и загрузчик для него

В своей работе разработчики встроенных систем часто используют для отладки макетные платы. Об одной из них, на чипе Atmel AVR Mega128, и пойдет речь ниже. Это модуль Crumb128 производства Chip45 (www.chip45.com/index.pl?page=Crumb128&lang=en)
Рис. 1 - модуль Crumb128

Удобный и не особо дорогой модуль для отладки (сейчас, в марте 2009г., он стоит около 2000 руб.), к которому можно подсоединить какие-то внешние компоненты, и у которого есть USB и RS-232 порт. Наличие USB порта для связи с модулем Crumb128 особенно удобно, т.к. позволяет запитать модуль непосредственно от USB. Среди доступного софта для модуля, на сайте www.chip45.com выложен в исходных кодах загрузчик, который будучи зашит в модуль ISP-программатором (например Atmel AVR ISP/ISP mkII), затем позволяет обходиться без него. В конце статьи приведена ссылка на немного измененные исходники этого загрузчика. Изменения касались текстовых сообщений, индикации начала загрузки светодиодом и прочих мелочей. В скомпилированном виде загрузчик занимает чуть менее 2Kb и помещается в предназначенную для него область памяти процессора (Boot Loader Flash Section). При необходимости его нетрудно адаптировать для других процессоров Atmel AVR серии Mega. Так же приложена и программа-загрузчик для ПК «AVR Loader», использование которой делает процесс обновления основной программы модуля более удобным. Программа была написана потому, что используемый загрузчик предполагает использование .srec файлов для загрузки, и изначально был ориентирован на работу с обычной терминальной программой, что не особенно удобно. Через написанную программу обновлять прошивку гораздо удобнее. Она имеет простой интерфейс. Читайте о ней ниже.

Инструкция по использованию загрузчика:

Необходимый софт:

Для прошивки загрузчика в модуль необходим программатор Atmel AVR ISP (или ISP mkII). Для компиляции загрузчика на ПК должен быть установлен компилятор WinAVR (мною использовалась версия от 10.06.2008), а так же Atmel AVR Studio версии 4 build 589 и выше.

1) Компиляция загрузчика.
По ссылке в конце статьи скачайте архив с загрузчиком и распакуйте его. Из каталога загрузчика запустите файл «makem.bat». Если копилятор WinAVR установлен, то исходники загрузчика будут скомпилированы, и в каталоге должен появиться файл «chip45boot.hex». Этот файл необходимо будет загрузить в модуль через ISP программатор. Инструкцию про это читайте ниже. Те, кто делал подобное уже много-много раз, могут пропустить следующий пункт.

2) Загрузка загрузчика :)
Подключите программатор AVR ISP mkII к порту USB ПК и запустите AVR Studio. Подключите разъем программатора к разъему ISP модуля Crumb128 (красный проводник на шлейфе разъема программатора должен совпадать с первым контактом на разъеме ISP) (рис. 2).

Рис. 2 – подключение шлейфа программатора
(фото из документации AVR ISP mkII)

Соедините USB кабелем модуль и ПК. При этом должен загореться зеленым цветом индикатор статуса на программаторе, сигнализирующий наличие питания на модуле (рис. 3).

Рис. 3 – индикатор статуса программатора
(фото из документации AVR ISP mkII)

Запустите программу AVR Studio, зайдите в меню «Tools» и выберите подменю «Program AVR», а в нем пункт «Connect…» (рис. 4).

Рис. 4

Далее в появившемся окне выберите «AVR ISP mkII» и «USB» (рис. 5), затем нажмите «Connect…».


Рис. 5

В случае успешного подключения должно появиться окно как на рис. 6.

Рис. 6

В группе «Device and Signature Bytes» выберите тип процессора используемого в модуле: ATmega128. В группе «Programming Mode and Target Settings» должно быть выбрано «ISP Mode». Нажав далее «Read signature» должен считать идентификатор процессора и должна появиться надпись «Signature matches selected device». После этого можно начинать программирование.
Для этого необходимо выбрать вкладку «Program». В группе «Device» установить галочки «Erase device…» и «Verify device…». В группе «Flash» выбрать загружаемый файл нажав кнопку «…». Нужно выбрать файл загрузчика с названием «chip45boot.hex». Он создается при компиляции в каталоге исходников загрузчика. Далее нажмите кнопку «Program». В случае успешного результата программирования, в нижнем информационном поле будет информация как на рис. 7.


Рис. 7

Далее нужно перейти на вкладку «Fuses» и установить следующие значения в полях:

Параметр : Действие

BODLEVEL: выключить
OCDEN: сбросить
JTAGEN: установить
SPIEN: установить
WDTON: сбросить
EESAVE: не важно
BOOTSZ: выбрать «Boot flash size=4096 words …»
BOOTRST: установить
CKDIV8: сбросить
CKOUT: сбросить
SUT_CKSEL: выбрать «Ext. Crystal 8.0- MHz; Start-up time: 258 CK + 65 ms»

Установить галочку «Verify after programming». Далее нажать кнопку «Program». В случае успеха в информационном окне будет «Fuse bits verification… OK».

Затем нужно закрыть окно программатора, при этом будет снят сигнал сброса с процессора, и сразу после этого загрузчик запустится. Проверить его работу можно визуально по миганию индикатора модуля в течении нескольких секунд после его запуска. Также можно проверить это с помощью терминальной программы. Для этого нужно запустить терминальную программу, например, «HyperTerminal», или любую другую. При этом в параметрах настройки СОМ-порта соответствующего модулю (строка «CP210x USB to UART Bridge Controller (COM N)» в разделе «Порты COM и LPT» диспетчера устройств Windows) установить следующее: скорость – 115200; бит данных – 8; стоповых бит – 1; управления потоком – нет. После запуска загрузчика в терминале должен появиться следующий текст: «CRUMB-128 BIOS 1.1».

3) Использование программы для «AVR Loader»
Для обновления основной программы модуля, запустите программу «AVR Loader» (рис. 8).


Рис. 8

В селекторе «COM» выберите тот СОМ-порт, который относится к подключенному по USB модулю Crumb128. Список СОМ-портов в системе можно посмотреть через «Диспетчер устройств» Windows, раздел «Порты COM и LPT» (рис. 9). Определить нужный СОМ-порт можно по строке «CP210x USB to UART Bridge Controller (COM N)» (N – номер СОМ-порта, может быть разный на разных ПК).


Рис. 9 - Список СОМ-портов в системе

Затем нужно выбрать загружаемый в модуль файл через меню «Open file». Файлы, загружаемые в модуль, имеют расширение «.srec». Затем нужно перезагрузить процессор модуля, нажав кнопку «Сброс» (она должна быть заранее подключена к модулю).
После перезагрузки модуля начнется процесс загрузки в него новой прошивки, что займет менее минуты. В строке статуса «Status» показывается информация о текущей операции и об ошибках.
Для того что посмотреть на обмен программы с модулем, во время загрузки нажмите кнопку «Show Terminal». При этом откроется окно терминала, где отображается обмен данными загрузчика с модулем. Повторное нажатие на эту кнопку закрывает его окно. После успешного обновления программы вновь запустится загрузчик, который затем передаст управление основной программе. Нажатием кнопки «Close COM» можно освободить занятый СОМ-порт. Программа свои настройки (номер СОМ-порта, и имя загружаемого файла) хранит в «.ini» файле, в своем каталоге. При отсутствии файла, он создается со значениями по умолчанию. Настройки в него сохраняются при закрытии программы.

Ну в заключение собственно сами программы:


Планируемые статьи на этом блоге:
  • Установка операционной системы FreeRTOS на модуль Crumb128
  • TCP/IP стек для FreeRTOS с поддержкой SLIP соединения
  • Программа по мотивам психологического тренинга
  • Программа для сохранения в логе номеров абонентов звонящих на сотовый


Всего наилучшего, Denweb.