После перерыва хочу продолжить писать о модулях с процессорами Atmel AVR и о программах для них.
Этот пост будет посвящен модулю Crumb 2560 на процессоре Atmel AVR Atmega2560 ( http://www.chip45.com/AVR-ATmega-Microcontroller-Modules/Crumb2560-V1-1-AVR-ATmega2560-USB-RS485-RS232-module.html ). Модуль мне понравился тем, что содержит самый мощный процессор семейства Atmega (256K флэш, 8К ОЗУ), а так же USB интерфейс (от которого может и питаться), и дополнительно RS-232/485 интерфейсы. Для USB интерфейса используется хорошо знакомый (безглючный!) мост USB <-> UART (чип SILabs CP2102).
Еще этот модуль легко установить, как мезонин, на макетную плату с любой периферией (входы/выходы, Ethernet, WiFI, GSM..). К слову сказать, у одного знакомого подобный модуль управляет луноходом:) В этой статье я опишу, как подготовить модуль к работе.
Итак, имеется в наличии модуль Crumb 2560.
В начале, установим на него кварц (у меня в комплекте был на 14.745 Мгц), разъем для программирования, и перемычку для выбора питания модуля. Получится следующее: Затем, припаяем к нему штыревые контакты (2 шт. по 48 контактов). Они понадобятся для установки модуля на макетную плату. Результат: Далее, на макетную плату установим разъемы для модуля (2 шт.) и кнопку сброса (потребуется для перевода модуля в режим обновления прошивки). Соединим кнопку с соответствующими контактами (RESET и GND) на разъеме модуля. Разъемы я установил таким образом, что бы все шнуры (пока это только USB) в будущем выходили назад, а органы правления (пока это кнопка сброса) находились спереди. Также модуль макс. сдвинут к краю платы, что оставить макс. места на плате для размещения других компонентов. Итого: Наш модуль готов к работе. Проверим его! Для этого подключим его USB кабелем к ПК, и так же поключим к нему программатор Atmel AVRISP2. Если на модуле есть питание (перемычка питания от USB на модуле должна быть установлена), индикатор на программаторе должен гореть зеленым. Далее, в AVR studio, считаем идентификатор процессора.
Ура, все работает! Продолжение следует :)
Расходы: модуль Crumb 2560 - 2850 р. Макетная плата 10*15 - 320 р. Контакты,разъемы,кнопка - 150 р. кабель mini-USB - 30 р. Итого: 3350 р.
Далее планирую описать в блоге следующее: 1) Создание загрузчика для него (с возможностью шифровки прошивки) /*в исходниках*/ 2) Установку на него freeware ОС реального времени FreeRTOS 3) Использование FreeRTOS в телематических приложениях (прием/передача данных через GSM модули SIM300,SIM900,Telit..) /*с исходниками*/
Подборка англоязычных сайтов по теме встроенных систем и близкого к этому:
Сайт: LinuxDevices.com - представлена информация по всевозможным “Linux inside” устройствам. Много обзоров процессорных модулей для разработчиков встроенных систем. Как правило эти модули имеют на борту х86 или ARM процессор, от 1 до 256 Мб ОЗУ, до 1 Гб встроенной флеш-памяти, сетевые, беспроводные и др. интерфейсы. Стоят они обычно от 50 до 150 долл.
Коммуникатор Neo FreeRunner (проект OpenMoko) с открытыми исходниками (лицензия GPL). Открыт как программный код, так и принциписальная схема, файлы разводки.
По современным меркам аппаратная платформа уже несколько устарела. Например, нет поддержки 3G и мульти-тач интерфейса (а-ля iPhone), но зато вся документация открыта :)
- входы/выходы: 2.5 mm разъем для наушников и разъем для внешнего GPS приемника
- дополнительно: Wi-Fi (802.1 1b/g), AGPS, GPRS (2.5G, не EDGE), Bluetooth 2.0, 3х осевой акселерометр
- ПО: Openmoko GNU/Linux-based
Заявленная на сайте стоимость коммуникатора составляет сейчас 299 долл. Среди его дистрибьюторов заявлен и российский: GNU/Linux Center (www.linuxcenter.ru)
Обновил AVR loader, для загрузки процессоров семейства AVR mega, до версии 1.2. В этой версии сделан выбор скорости СОМ-порта: от 19200 до 115200. Выбранное значение, также как и СОМ-порт, сохраняется в ini файле программы. Скачать программу можно по ссылке: AVR loader v1.2
В своей работе разработчики встроенных систем часто используют для отладки макетные платы. Об одной из них, на чипе 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).
Соедините 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» файле, в своем каталоге. При отсутствии файла, он создается со значениями по умолчанию. Настройки в него сохраняются при закрытии программы.
Меня зовут Денис. Мне 32 года, живу в г.Пермь. Я программист, в основном специализируюсь на встроенных системах, но программирую не только для них. Более подробно читайте ниже.
Образование:
Высшее. Закончил в 1998 г. Пермский Гос. Университет, физический факультет, специальность "Радиофизика и электроника".
Опыт работы:
1) 1998г. - 2007г. - ОАО "Морион" - инженер-программист. Участвовал в разработке и поддержке оборудования ведомственной связи ВТК-12, разработке маршрутизатора, поддержке ПО для контроля и управления гибкого мультиплексора ОГМ-30Е.
2) 2007г. - настоящее время - программист в фирме, основное направление деятельности которой - разработка телекоммуникационного оборудования и GSM/GPS терминалов.
Знания, умения:
Хорошо знаком с программированием микроконтроллеров следующих семейств: i8051 совместимых, Atmel AVR. Писал программы для них как на ассмеблере, так и на С. Знаком со встроенными операционными системами RTEMS, FreeRTOS. Могу разработать электрическую схему какого-либо устройства (на цифровых компонентах) в САПР (PCAD, Protel и др.), написать программу для ПЛИС (чипы фирмы Altera). В высокоуровневом программировании писал (и пишу) и поддерживал(-ю) различные программы на Дельфи, и немного на .Net.
Также есть некоторый опыт создания сайтов и их оптимизации/раскрутки/администрирования/проведения рекламных кампаний в интернете (Яндекс.Директ, Бегун, Блогун).
Увлечения:
В свободное время интересуюсь практической психологией (НЛП, EFT), иногда бываю на семинарах. Также интересуюсь восточными практиками (йога, цигун).
Что ищу ?
Мне были бы интересны заказные работы связанные с разработкой программ для микроконтроллеров (для семейства Atmel AVR имею возможность отладки на реальном чипе), программ управления для каких-либо устройств, созданием других программ и утилит. Также интересно создание и администрирование сайтов и форумов (движки: MODX, Wordpress, DLE, SMF, vBulletin, PHPBB), проведение рекламных кампаний в интернете.