Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





А ведь автор еще не дошел даже до процесса ассемблирования, это только подготовка к нему (хорошая иллюстрация к известному положению, что производители профессиональных инструментов иногда имеют весьма своеобразное представление о том, что называется usability, удобство пользования). Так что AVR Studio, безусловно, полезный и нужный инструмент для обращения с большими проектами (в том числе на языке С), а для написания коротких программ вполне можно не отвлекаться на его изучение. Тем более что я обещаю далее научить вас отлаживать программы самым эффективным способом, без всяких симуляторов и эмуляторов, прямо в конкретной схеме, с привлечением простейших средств (см. приложение 4).

Можно воспользоваться и более современным avrasm2, поддерживающим больше разновидностей МК от Atmel, но тексты программ в этой книге рассчитаны на avrasm32. И все же, по крайней мере, временно AVR Studio желательно скачать и установить, т. к. нам понадобятся некоторые его компоненты. Для наших целей достаточно версии 4.60, которую можно найти по приведенному ранее адресу. После установки, во-первых, разыщите файл avrasm32.exe1 (в 4-й версии он находится в папке ...\Atmel\AVR Tools\AvrAssembler) и скопируйте его в подготовленную заранее какую-нибудь другую папку. Во-вторых, целесообразно целиком скопировать папку Appnotes — из-за собственно "аппнот", которые представляют собой рекомендации по реализации отдельных функций, и выгодно отличаются от представленных на сайте Atmel форматом asm. По сути это готовые модули для встраивания в вашу программу (на сайте "апп-нот" больше, но они находятся в формате PDF, а исходные коды приходится скачивать дополнительно, и не всегда они именно в ассемблерном виде).
Учтите, что в них могут встречаться ошибки, о чем мы еще будем упоминать, и применять их нужно с оглядкой. В этой же папке должны находиться файлы макроопределений (с расширением inc) для всех моделей AVR, поддерживаемых данной версией ассемблера, даже тех, что уже не выпускаются. Если их не скопировать отсюда, то пришлось бы скачивать с сайта Atmel поодиночке для каждой модели, а для старых типов искать где-то на стороне. Эти файлы необходимы, иначе вы не сможете откомпилировать ни одной программы (подробнее об inc-файлах см. далее в этой главе). Можно на всякий случай извлечь также описание AVR-ассемблера в формате СНМ (русский перевод доступен, например, в [9] или [1.0]). После копирования саму AVR Studio можно удалить.

Обустройство ассемблера
Далее я буду ориентироваться на то, что вы используете ASM Editor, но в принципе схема обустройства рабочей среды одинакова для любого редактора, поддерживающего компиляцию прямо из своего окна. Для начала работы нам предварительно нужно создать командный файл. Предположим, файл avrasm32.exe находится в созданной вами папке c:\avrtools. Запустите Блокнот и введите следующий текст (соответственно измените путь, если папка другая):
c:\avrtools\avrasm32 -fl %l.asm
Строка эта может выглядеть и несколько иначе (пример см. далее в разделе "Директивы и функции" этой главы). Сохраните эту строку в командном файле под именем, например, asm32.bat, обязательно в той же папке, что и avrasm32.exe. Теперь запустите ASM Editor, выберите в меню пункт Service | Properties, и в появившемся окне найдите вкладку Project, а в ней — строку Assemble ASM file. В эту строку, как и показано на рисунке, введите путь к нашему bat-файлу. Больше ничего настраивать не требуется — остальные пункты можно оставить, как есть, или очистить — по желанию. Теперь по нажатию сочетания клавиш +, вне зависимости от того, где находится демонстрируемый на экране файл с редактируемой в данный момент программой, он скомпилируется и результат (т. н. hex-файл, о чем далее), если нет ошибок, окажется в той же папке, где и исходный текст.

Одновременно с компиляцией отдельно появляется консольное (с белыми надписями на черном фоне) окно с сообщениями компилятора. Сразу смотрите на последние строки, где должно быть сообщение "Assembly complete with no errors" ("ассемблирование выполнено без ошибок"). Если такая надпись есть — ищите готовый hex-файл в папке с исходным текстом. В противном случае hex-файла не окажется (а предыдущий его вариант, если он существовал, будет стерт), и в этом окне вам будут выведены номера строк в исходном тексте, содержащие ошибки, и примерное описание проблемы (например, сообщение "Undefined variable reference" — "ссылка на неопределенную переменную" означает, что у вас в данной строке идентификатор, который нигде не определен).
Кроме этого, при успешной компиляции в окне сообщений можно посмотреть точный размер скомпилированной программы в словах (words), для получения размера в байтах нужно умножить это число на два. Отметим сразу, что объем hex-файла размеру программы соответствовать не будет (подробнее см. далее), так что узнать точный объем занимаемой памяти можно только отсюда либо из программы, прилагаемой к программатору.

Программаторы
Для того чтобы загрузить программу во flash-память, служат специальные программаторы, которые делятся на последовательные и параллельные. Помимо этого для моделей семейства Mega есть еще способ программирования с помощью JTAG — стандартизированного (IEEE Std 1149.1-1990) интерфейса для отладки и тестирования микроконтроллерных устройств, о котором мы уже упоминали. Но мы не будем здесь на этом останавливаться — в любительских конструкциях, да и во многих профессиональных, он не употребляется.

Последовательные программаторы еще называют ISP (In-System Programmer, что переводится, как "внутрисистемный программатор"), потому что они обычно не предполагают специального устройства для подсоединения и питания программируемой микросхемы, а заканчиваются обычным плоским кабелем с двухрядным штырьковым разъемом типа IDC, который подсоединяется к специально предусмотренной штыревой части, располагаемой прямо на плате вашего устройства. Точно такие же разъемы служат для подсоединения периферии к материнским платам ПК. Название IDC относится к варианту в корпусе, в бескорпусном двухрядном варианте эти разъемы именуются PLD, в однорядном — PLS. Питание на программатор при этом поступает от самой схемы. Такой вариант очень удобен для отладки — МК находится в "родном" окружении, и сразу после программирования автоматически начинает работать. Причем внешние элементы (с некоторыми оговорками) процессу программирования обычно не мешают.
Этот способ программирования и позволяет превратить любую схему в отладочный модуль, о чем подробнее рассказывается в приложении 4. Недостаток последовательного способа программирования — дополнительная площадь, которую будут занимать "лишние" элементы на плате, а также некоторое снижение помехоустойчивости. Зато вы всегда без особых сложностей сможете поправить ошибку в программе и дополнить ее функциональность— хоть через месяц, хоть через год, что очень важно для любительских или экспериментальных конструкций, которые, как правило, выпускаются в одном-двух экземплярах.



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru