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

Графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR.

Algorithm Builder представляет собой мощный инструмент, позволяющий провести полный цикл по созданию и проверке программного кода. Среда включает в себя: графический редактор, симулятор микрочипа для отладки алгоритма, компилятор и внутрисхемный программатор для загрузки кода в кристалл. Программа представляет собой отечественный аналог Ассемблера и подходит как для опытных разработчиков, так и для тех, кто только начинает осваивать прошивку устройств.

Создание алгоритмов может проходить на ассемблерном уровне или на макроуровне, основанном на оперировании многобайтными величинами с учетом знака. Причем макрооператоры включают в себя самые распространенные наборы команд.

Все разрабатываемые программы представляются в виде ветвящихся древовидных блок-схем, сети переходов отображены графически в векторной форме. Если согласно условию необходимо перейти в какое-либо место программного кода, то достаточно провести туда вектор. Таким образом, ПО освобождается от многочисленных имен меток. В случае, когда ветвление слишком длинное, всегда есть возможность адресовать переход на имя метки. Наглядность подобной логической структуры по заверениям разработчиков значительно сокращает время написания кода и уменьшает количество ошибок.

Основное окно позволяет размещать необходимые объекты и изменять их, вставлять, перемещать и т.п., как в любом графическом редакторе. В отдельной части экрана в виде таблицы формируется окно с перечнем всех констант и переменных, освобождая, таким образом, алгоритм от дополнительных записей. Для настройки параметров периферийных устройств (UART, SPI, ADC, таймеры) предусмотрен особый элемент с раскрывающимся оконным интерфейсом. Набор инструкций, обеспечивающих выбранные параметры работы устройства, самостоятельно формирует компилятор. Кроме этого поддерживается автоперекодировка ANSI-кодов Windows в коды русскоязычного буквенно-цифрового ЖКИ. Программа поддерживает широкий спектр микроконтроллеров семейств: ATtiny, ATmega, AT90.

Симулятор показывает все изменения, происходящие в различных регистрах, ячейках памяти и таймерах. Симуляция может выполняться пошагово (с заходом в функции или нет), до точки останова или до выделенного участка.
Для работы внутрисхемного программатора необходимо самостоятельно собрать простейший адаптер, через который микроконтроллер соединяется с COM-портом компьютера. Помимо этого есть возможность подключения через USB-разъем. Программатор подсчитывает количество перепрограммирований ядра и хранит счетчик в самом кристалле.

Режим мониторной отладки на ядре с помощью еще одного адаптера (все схемы имеются в документации к софту) позволяет отслеживать внутреннее состояние реального кристалла в любой точке останова. Для связи контроллера с компьютером по выбору пользователя выделяется всего один вывод. Отладка On Chip debug применяется к любому типу микросхем, имеющему SRAM-память.

Несмотря на свои явные достоинства, Algorithm Builder малоизвестен в радиолюбительской среде. Отчасти это объясняется тем, что до 2010 года среда визуального программирования была платной, бесплатная демоверсия ограничивала код до двух килобайт. Сегодня ПО распространяется абсолютно свободно. Папка с установленной программой может копироваться на другие носители и работать портативно. К софту прилагается руководство по использованию. В статье рассматривается ряд простейших работ и приведены схемы программаторов для USB- и COM- портов.

Авторами программы Algorithm Builder является группа отечественных программистов под руководством народного умельца Геннадия Леонидовича Громова из Нижнего Новгорода. Программа развивается и по сей день, добавляются новые функции, на сайте автора появилась небольшая подборка библиотек.

Интерфейс программы Algorithm Builder и руководство пользователя представлены на русском и английском языках.

Программное обеспечение работоспособно в операционных системах Microsoft Windows 95, 98, 2000, NT, ME, XP, Vista и 7.

Распространение программы: бесплатная

Если две предыдущие программы я рекомендовал как оптимальный вариант для начала работы с электроникой вообще и микроконтроллерами в частности, то эта программа лишь мое личное предпочтение и честно говоря, для повторения конструкций с этого ресурса она Вам не понадобится. Но не упомянуть приятную во всех отношениях программу я не могу.

Итак что имеет Algorithm Builder в своем арсенале?
Полный цикл разработки. Algorithm Builder предназначен для производства полного цикла разработки начиная от ввода алгоритма, включая процесс отладки и заканчивая программированием кристалла.

Algorithm Builder довольно нетрадиционная программа в плане языка программирования. Автор немного лукавит, называя программу Построителем Алгоритмов. На самом деле, алгоритма, в привычном понимании этого слова, нет. Есть ассемблер, завернутый в красивую обертку визуального программирования. Правильнее было бы назвать программу – визуальный ассемблер или построитель ассемблера. А раз это ассемблер то Вы получите на выходе максимально эффективный код.


Работа с переменными
и константами организована гениально просто. Инициализация производиться в отдельном окне в виде таблицы – освобождая алгоритм от лишних записей. В буквальном смысле слова все разложено по полочкам. Удобно иметь в любой момент под рукой перечень всех переменных и констант.

Настройщик периферии. Algorithm Builder имеет удобный настройщик периферии (таймеры, UART, ADC, SPI и т.д.) позволяющий, не читая даташитов, просто выбрать необходимые параметры работы устройства в окне настройки. В этом же окне Билдер честно покажет набор инструкций, обеспечивающих эти параметры.


Переходы
осуществляются в программе очень наглядно – вектором. Если нужно перейти по условию в какую либо точку программы – просто проведите вектор в эту точку. Это освобождает программу от бесчисленных имен меток, которые в классическом ассемблере являются неизбежным балластом. Переходы по именованным меткам так же возможны.

Внутрисхемное программирование кристалла. При использовании внутрисхемного программатора микроконтроллер подключается к COM порту компьютера через несложный адаптер (три диода и несколько резисторов).Также есть вариант USB подключения. Программатор ведет подсчет числа перепрограммирований кристалла, сохраняя счетчик непосредственно в кристалле. Процесс программирования кристалла очень прост — в два «тыка».

Мониторная отладка на кристалле. Algorithm Builder обеспечивает мониторную отладку на кристалле (On Chip debug) которая позволяет наблюдать содержимое реального кристалла в заданной точке останова. При этом для связи микроконтроллера с компьютером используется только один вывод, причем по выбору пользователя. Мониторная отладка может быть применена к любому типу кристалла, имеющего SRAM. Это софтверный вариант debugWIRE. Я без этой штуки просто не представляю себе отладку программ.

Так почему такая хорошая программа так малоизвестна?
Первая причина — программа до 2010 года была платной. Бесплатная демоверсия имела полную функциональность, но ограничивала код откомпилированной программы до 2 килобайт. В 2010 году автор программы сделал новогодний подарок – версия 5.43 вышла свободной от ограничений.
Вторая причина — отсутствие поддержки программы. Вы не найдете ни одного апнота производителя в котором бы использовался Билдер. Интернет ресурсы, посвященные данной программе, можно пересчитать по пальцам.
Жаль, конечно – программа действительно интересна.

Выводы:
Ассемблерщики при переходе на Algorithm Builder будут писать кипятком, так как они будут иметь все тот же ассемблер, но управляться им станет на порядок легче и наглядней. Одно плохо – придется распрощаться с наработанными библиотеками и писать новые.
Сишникам однозначно Билдер не понравится, так как придется опускаться до уровня ассемблера, а какому сишнику понравится возюкаться с регистрами.
Наверное, наилучшая целевая аудитория — начинающие осваивать микроконтроллеры. Программа проста и поэтому будет легко осваивать программирование.
В общем, конечно, выводы получились неоднозначные. Думайте сами… 🙂

Программа имеет мануал, написанный в форме обучающей статьи. В мануале рассмотрено создание простого проекта – вольтметра, даны схемы программаторов COM и USB. Скачать версию без ограничений можно здесь

Среда визуального программирования


Кому интересно посмотреть мануал, а устанавливать программу лениво – вот выкладываю его отдельно


Программа активно развивается, поэтому смотрите свежие версии на сайте программы www.algrom.net . Кроме того, там же есть небольшая подборка библиотек.

P.S. Программа портативная. Тесть после установки папку с программой скидываем на флешку и работаем с нее.

(Visited 17 675 times, 18 visits today)

Операторы алгоритма делятся на две группы.

В первую группу образуют элементарные операторы, реализующие одну элементарную инструкцию микроконтроллера. Программирование с использованием таких операторов обеспечивает разработку программы на уровне ассемблера. В алгоритме эти операторы отображаются обычным (не жирным) шрифтом.

Во вторую группу образуют макро-операторы, которые при компиляции преобразуются в набор необходимых элементарных инструкций микроконтроллера. Макро-операторы позволяют в удобной форме осуществлять более сложные преобразования, в том числе многобайтные.

Операторы алгоритма в основном записываются в объектах “Field”, условные переходы реализуются посредством объекта “Condition”, а безусловный переход – посредством объекта “

JMP Vector”. Формат записи операторов существенно отличается от классического ассемблера. Он построен по визуально-функциональному принципу и содержит образ выполняемого действия. Запись операторов должна соответствовать шаблону, воспринимаемому компилятором.

Ниже, в таблице, приведены шаблоны всех возможных элементарных операторов для микроконтроллеров AVR. Следует иметь в виду, что некоторые простые типы микроконтроллеров содержат не весть представленный набор.

Символ “#” в шаблоне операторов предполагает константу, представленную либо непосредственно, либо в виде алгебраического выражения, “Rd” и “Rr” – рабочие регистры, “Pn” – регистр ввода-вывода.

Операторы представлены в виде таблицы.

Операнд Комментарий

R Рабочий регистр, стандартный или объявленный в секции Working registers: (...)

# Константа (...)

SRAM Var Переменная, объявленная в секции SRAM: (...)

EEPROM Var Переменная, объявленная в секции EEPROM: (...)

[#] Ячейка SRAM, адресуемая непосредственно

[X] Ячейка SRAM, адресуемая косвенно, по X

[--X] Ячейка SRAM, адресуемая косвенно, по X с предекрементом

Ячейка SRAM, адресуемая косвенно, по X с постинкрементом

[Y] Ячейка SRAM, адресуемая косвенно, по Y

[--Y] Ячейка SRAM, адресуемая косвенно, по Y с предекрементом



Ячейка SRAM, адресуемая косвенно, по Y с постинкрементом

Ячейка SRAM, адресуемая косвенно, по Y со смещением адреса на # байт

[Z] Ячейка SRAM, адресуемая косвенно, по Z

[--Z] Ячейка SRAM, адресуемая косвенно, по Z с предекрементом

Ячейка SRAM, адресуемая косвенно, по Z с постинкрементом

Ячейка SRAM, адресуемая косвенно, по Z со смещением адреса на # байт

P Регистр ввода-вывода (...)

EE[#] Ячейка EEPROM адресуемая непосредственно

Операнды, отмеченные как (...) могут быть объявленными многобайтными. Допускается подстановка операндов разного формата. При этом, если операнд, принимающий результат операции короче другого, то размерность операции будет ограничена наименьшим, в противоположном случае, в недостающие байты будут заполнены нулями. Следует иметь в виду, что для корректности операции, с величинами у которых учитывается знак, у обоих операндов должен быть одинаковый формат, в противном случае, отрицательное число может быть искажено. Формат операндов в макро-условиях должен быть только одинаковый.

Операнды с косвенной адресацией являются однобайтными. Для многобайтных операций с косвенной адресацией необходимо приведение их формата. Для этого к записи необходимо добавить двоеточие и объявление формата, например:

#hAB3E->[Y]:Word

такой макро-оператор будет преобразован в следующую последовательность операторов:

В многобайтных макро-операторах, кроме сдвигов вправо, действия начинаются с младшего байта (в операторах сдвига вправо – со старшего). Учитывая это, существуют ограничения на возможность создание макро-операций с косвенной адресацией:

Для операций, которые начинаются с младшего байта невозможно использование операндов с предекременом, например: [--X]:Word+24000

Для операций, которые начинаются со старшего байта (сдвиги вправо) невозможно использование операндов с постинкрементом, например: :Int24>>

Кроме того, невозможно создание многобайтного макро-оператора с операндом [X], поскольку для регистра X в системе команд AVR отсутствуют косвенная адресация со смещением (

). Используйте или [--X].

Если создание макро-операции окажется невозможным, то компилятор выдаст сообщение: “

Such macro-operation can not be created” (“Такая макрооперация не может быть реализована”).

Макро-операторы записываются исключительно в объектах “Field”. Шаблоны возможных макро-операторов представлены в таблице:

Шаблон Коментарий

* -> * Копирование

* + * Арифметическое сложение

* - * Арифметическое вычитание

* & * Побитная операция “И”

* ! * Побитная операция “ИЛИ”

* ^ * Побитная операция “Исключающее ИЛИ”

* Сброс (запись нуля)

* ++ Инкремент

* -- Декремент

- * - Побитная инверсия

* >> Логический сдвиг вправо

> * >> Логический сдвиг вправо с переносом

± * >> Арифметический сдвиг вправо

<< * Логический сдвиг влево

<< * < Логический сдвиг влево с переносом

При использовании операндов, принадлежащих к EEPROM, компилятор автоматически загрузит необходимый код, обеспечивающий чтение и запись в нее. При этом следует иметь в виду, что если производится запись в EEPROM, то в код включается ожидание окончания записи. При работе это потребует несколько миллисекунд.

При компиляции макро-операторы преобразуются в набор элементарных инструкций микроконтроллера. При этом для реализации такого набора, как правило, используются регистры-посредники r16 и r17. Поэтому, при использовании макро-операторов, во избежание недоразумений, эти регистры использовать не рекомендуется и в подпрограммах обработки прерываний целесообразно их содержимое предварительно сохранять в стеке.

Если в макро-операторе предполагается операция с непосредственной константой, то в этом случае целесообразнее использовать рабочие регистры, объявленные в старшей половине. В противном случае будут использоваться промежуточные инструкции загрузки частей константы в регистр r16. Это может привести к увеличению размера кода, вплоть до удвоения, хотя ошибочной такая запись не будет.

Следует иметь в виду, что возбуждаемые макро-операциями флаги неадекватны аналогичным операциям на уровне элементарных операций микроконтроллера и их использование для условий переходов будет некорректно.

Для реализации циклов удобно использовать макро-условие: “R--”. Оно включает в себя декремент однобайтного регистра и ветвление, если результат не равен нулю.

Объект “Label” – (метка)

Представляет собой вертикальный штрих, расположенный внутри блока операторов и необязательное имя, располагающееся слева или справа от штриха. Предназначена метка для обозначения мест в алгоритме, куда возможно осуществление условных и безусловных переходов. Для ее введения, необходимо либо выбрать пункт меню “Object\Label”, либо нажать клавиши “Alt+L”, либо нажать кнопку с изображением буквы L на панели инструментов. При необходимости метке может быть назначен конкретный адрес программы, для этого перед именем (если оно есть) необходимо записать константу или алгебраическое выражение, которое определяет этот адрес. Для изменения расположения имени метки на противоположное нажмите клавишу “Tab”.

Метки обслуживания прерываний.

Для удобства программирования Algorithm Builder поддерживает специальный вид меток – метки обслуживания прерываний. Для обслуживания прерывания обычным путем необходимо размещение по адресу вектора прерывания кода безусловного перехода на соответствующую подпрограмму. При использовании специального вида меток компилятор проделывает все это автоматически. Для этого вам необходимо дать метке (вершине) стандартное имя прерывания, и пометить ее как макро-образование, нажав клавишу “F2”, при этом имя будет отображаться жирным шрифтом. Тот же результат можно проще получить, выбрав пункт меню “Objects\Interrupt vectors\…”.

Встретив хотя бы одну такую метку, компилятор заполнит свободное пространство векторов прерывания кодом возврата из подпрограммы обслуживания прерывания (“RETI”), а по соответствующему прерыванию адресу разместит код безусловного перехода на данную метку.

Объект “Vertex” – (вершина блока)

По своему отображению и назначению полностью идентичен метке, но, в отличие от нее, задает расположение блока на рабочей плоскости и всегда является его началом. Для того, чтобы создать вершину необходимо либо выбрать пункт меню “Object\Vertex”, либо нажать клавиши “Alt+V”, либо нажать кнопку с изображением буквы V на панели инструментов, либо с помощью мыши, нажав левую кнопку на необходимое место поля в комбинации с клавишами “

Alt+Ctl+Shift”.

Объект “Condition” – (условный переход)

Конструктивно наиболее сложный. Предназначен объект для реализации условных переходов. Представляет собой овальный контур, внутри которого вписывается условие перехода и возможный вектор в виде ломаной линии со стрелкой на конце, возле которой возможно необязательное имя вектора. Для того, чтобы вектор был правильно адресован, его конец должен либо заканчиваться на метке, или вершине, или на отрезке другого вектора, либо иметь имя адресуемой метки.

Редактирование вектора производится либо при помощи клавиш направления в комбинации с клавишей “Alt”, либо при помощи мыши при нажатой левой кнопке так же в комбинации с клавишей “Alt”. Для перехода от редактирования условия к редактированию имени вектора и, затем, изменения его расположения на противоположное, нажмите клавишу “Tab”. Для того, чтобы ввести новый объект, необходимо либо выбрать пункт меню “Object\Condition”, либо нажать клавиши “Alt+C”, либо нажать кнопку с изображением буквы C на панели инструментов.

Операторы условного пропуска следующего оператора.

Здесь возможны три варианта конструкции объекта “Condition”:

1. Вектор объекта отсутствует, а имя вектора – либо отсутствует, либо содержит зарезервированное слово “Skip”. В нижеследующих примерах выполнение операции:

“[X]->r2” будет пропущено, если выполнится условие “r1=r2”.

“[X]->r2”

2. Записывается инверсное условие, вектор отсутствует, а подлежащая пропуску инструкция вписывается как имя вектора. В этом случае объект будет интерпретирован как: выполнить инструкцию, если условие выполняется. Нижеследующие примеры полностью идентичны.

“[X]->r2”

3. Если последующая инструкция является коротким безусловным переходом (RJMP), допускается запись инверсного условия, а вектор этого условия будет интерпретирован как последующий безусловный переход, таким образом, объект будет интерпретироваться как: произвести короткий безусловный переход, если условие выполняется. Далее приводятся три полностью идентичных примера.

R1=R2 стрелка к той строку куда необходимо перейти

Отладочная среда AVR STUDIO.

Отладочная среда разработки приложений для микроконтроллеров семейства AVR содержит:

  • Транслятор ассемблера (Atmel AVR macroassembler)
  • Отладчик (Debugger)
  • Программное обеспечение верхнего уровня для поддержки внутрисхемного программирования.(In-System Programming) ISP)

Отладочная среда поддерживает выполнение программ как в виде ассемблерного текста так и в виде исходного текста языка С. Отладочная среда AVR поддерживает все типы микроконтроллеров AVR и имеет два режима работы:

  • режим программной симуляции
  • режим управления различными типами внутрисхемных эмуляторов фирмы Atmel (In Circuit Emulators)

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

Отладочная среда AVR STUDIO позволяет производить отладку приложений с использованием встроенного программного симулятора или внешнего внутрисхемного эмулятора При запуске происходит автоматическое определение наличия эмулятора на одном из последовательных портов компьютера. При обнаружении эмулятора выбирается базовая система отладки При отсутствии эмулятора отладка выполняется на встроенном программном симуляторе AVR.

Внутрисхемный эмулятор позволяет производить отладку приложения непосредственно на готовом изделии. при работе в режиме реального времени отладка на эмуляторе осуществляется быстрее чем в программном симуляторе. информация о текущем режиме отладки выводится в строке состояния AVR STUDIO

В AVR STUDIO для отладки программ предусмотрены две команды пошагового режима Step Over и Trace into Разница между ними в том что команда Step Over не работает в подпрограммах.

Для наблюдения за работой программы предусмотрен режим открытия нескольких окон окна открываются через меню View или кнопок на панели инструментов.

отладочная среда не поддерживает следующие режимы и узлы МК

  • аналого цифровой преобразователь
  • аналоговый компаратор
  • режим часов реального времени
  • режим пониженного энергопотребления

Для аппаратной поддержки AVR STUDIO применяются

  • стартовые и специализированные наборы разработчика
  • внутрисхемные программаторы
  • внутрисхемные эмуляторы

В процессе отладки можно инициализировать внутренне ОЗУ и EEPROM (в трансляционном файле формата.EEP) или сохранять их содержимое в формате.HEX Для этого служит пункт Up/Download Memory в меню File

Через меню File можно открывать выполненные другими пользователями прошивки Open распечатывать написанные программы Print проверять состояние устройств подключенных к последовательному порту COM Port setting .

Меню Tool инструменты содержит команды запуска управляющих программы

меню View содержит средства просмотра:

  • ячеек памяти программ Program Memory
  • памяти данных окно Data
  • EEPROM окно Eeprom
  • регистров портов ввода вывода окно new IO
  • хода исполнения программы окно Memory
  • контроля за изменениями переменных Watch
  • отображения состояния программного счетчика, указателя стека содержимого регистра статуса SREG и индексных регистров X, Y и Z текущего времени исполнения программы тактовой частоты ядра микроконтроллера окно Processor
  • просмотра состояния регистров Registers (Если в процессе выполнения программы в очередном цикле значение, какого либо регистра изменится то этот регистр будет выделен красным цветом. При этом если в следующем цикле значение регистра останется прежним то цветовое выделение будет снято. Аналогичный контроль за изменениями применен в окнах ввода вывода памяти и переменных.)
  • контроля за состоянием периферийных устройств окно I/O window

Меню Edit правка аналогична стандартному текстового редактора.

Меню Windows позволяет регулировать размещение открывающихся окон

Help содержит справочную информацию на английском языке

project позволяет открывать и создавать новые проекты и сохранять их содержимое

Меню debug отладчик позволяет осуществлять

breakpoint регулирует выбор точек останова

Trace& triggers осуществляет трассировку

Option позволяет осуществлять симуляцию или эмуляцию программы

Создание программы

Открыть AVR studio 3.56

Открыть меню новый проект в меню проект в появившемся окне create new project ввести имя проекта в строку project name. Это же имя будет автоматически скопировано в окно initial file

Для определения папки в которой будет находится проект необходимо щелкнуть на кнопке …. Справа от окна location в открывшемся окне select folder в строке current folder необходимо написать имя папки. И щелкнуть на select после чего произойдет возврат в окно create new project

Затем выберите тип проекта Atmel AVR Assembler à Next à select deug platform and device à debug platform à avr Simulator в окне device тип микроконтроллера если частота будет выше появится сообщение

Таким образом мы активируем окно ассемблера с проетом

Символ “. “ директива ассемблера

«;» коментарии не влияющие на работу программмы

F2 поиск маркеров команд в программе

Ctrl +F2 установка маркеров отладчика

F7 ассемблирование программы с сохранением в формате. hex

F11 отладка открытие workspace

Shift +F5 – Reset сброс

Ctrl +F5 - Break назад остановка отладки

F9 – установка метки точки останова

F5 – выполнение программы до точки останова

Ctrl +F10 переход к выполнению команды помеченной курсором

Трансляция и проверка правильности написания.

Project à AssembleàProject Output в этом окне содержатся информация о количестве слов кода и данных о наличии ошибок и другая информация. Для локализации ошибок надо установить курсор мыши на сообщение и два раза щелкнуть левой кнопкой мыши. В результате курсор будет установлен на строку вызвавшую сообщение об ошибке и эта строка будет выделена цветом. Если исходный ассемблерный текст содержал сегмент энергонезависимых данных то при трансляции будет создан файл с разрешением.еер. Этот файл содержит даннные для внутренней ЕЕPROM МК и имеет тот же формат что и выходной файл.

Результатом трансляции является выходной файл

Отладка проекта

Для отладки необходим объектный файл object

Запуск отладчика выполняется через процедуру

Build and run на панели управления

В начале осуществляется трансляция входного ассемблерного файла при которой генерируется и объектный файл а затем объектный файл помещается в отладчик.

Для старых версий предусмотрен вариант трансляции объектного файла на при этом варианте нельзя редактировать исходный файл программы непосредственно в отладчике

Для генерации объектного файла необходимо указать формат выходного файла транслятора

При первом запуске отладчика в окнеOption à Simulator Option выбирается тип микроконтроллера Device и частота процесссорного ядра frequency

В процессе отладки программа может выполняться

Полностью debug àavto step

В пошаговом режиме debug àtrace

Трассируя блоки функций debug àmulti step

До точки указанной курсором debug àRun to cursor

По точкам останова breakpoints à toggle Breakpoint

Для отладки в пошаговом режиме применяются команды

Ster Over (не работающая в под программах) и trace into

Просмотр программы осуществляется в меню View вид, регистров registers, переферийных устройств в окне I /O Windows

Лекция 15 программаторы Программатор ХХХ prog

Программатор поддерживает следующие форматы файлов:

Standard/Extended Intel HEX

Они предназначены для программирования:

· микросхем памяти ,

· внутреннего ППЗУ микроконтроллеров,

· микросхем программируемой логики (только для ChipProg+, MultiProg).

Программатор рассчитаны на совместную работу с IBM PC совместимым компьютером. Связь с компьютером осуществляется через стандартный принтерный порт.

Порядок работы с программатором:

· Удалить микросхему из колодки программатора (если она была

установлена).

· Подключить программатор к сети переменного тока 220В.

Для MultiProg переключателем на корпусе программатора включить

питание. Должен загореться зеленый светодиод, индицирующий подачу

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

· Подсоединить программатор к стандартному принтерному порту

компьютера c помощью кабеля связи, входящему в комплект поставки

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

· На компьютере запустить программную поддержку xxxProg.

· В программной поддержке установить требуемый тип микросхемы.

· Установить микросхему в розетку программатора (микросхемы

устанавливаются в розетку в соответствии с рисунком на корпусе

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

· Выполнить необходимые действия с микросхемой. Если в

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

светодиод "ALARM", а на экране компьютера появится предупреждающее

сообщение о срабатывании схемы защиты тока, то это означает, что

микросхема неисправна.

· Перед выключением программатора или сменой типа микросхемы

необходимо удалить микросхему из розетки.

· Выключить питание программатора.

· Отсоединить программатор от компьютера.

Интерфейс связи программатора с компьютером разработан с таким учетом, чтобы не только минимизировать нагрузку на порт компьютера, но и позволить производить коммутацию программатор - компьютер в любой последовательности.

Программное обеспечение xxxProg в плане взаимодействия с микросхемами построено по классической схеме программаторов "файл" - "буфер" - "микросхема". В программной поддержке программатора реализованы буфера памяти. Буфер памяти является промежуточным звеном между файлом и микросхемой:

Файл <----> Буфер <----> Микросхема

Одним из основных элементов программатора являются буфера памяти. Буфер памяти - это объект, предназначенный для хранения данных. Буфер памяти программатора является промежуточным звеном между файлом и микросхемой.

В xxxProg реализована гибкая структура буферов памяти:

· допускается создания бесконечного количества активных буферов.

Ограничением на количество может служить только отсутствие свободной

памяти в системе.

· каждый буфер в своем составе имеет определенное количество

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

установленной микросхемы.

Например,

- для микросхемы Intel 87C51FA каждый буфер имеет в своем составе

два подслоя: подслой кодовой памяти и подслой таблицы кодирования

(encryption table);

- для микросхемы Microchip PIC16F84 каждый буфер имеет в своем

составе три подслоя: подслой кодовой памяти, подслой памяти данных

EEPROM, подслой пользовательских идентификаторов.

· допускается иметь неограниченное количество окон просмотра

содержимого каждого буфера.

Такая гибкая реализация системы буферов позволяет пользователю очень легко манипулировать с несколькими разными массивами данных, поместив их в разные буфера. Все операции с файлом (загрузка/сохранение файла) взаимодействуют только с буфером. Т.е. можно загрузить файл в буфер, а также сохранить содержимое буфера в файл. Аналогичным образом построено взаимодействие с микросхемой. Все манипуляции с микросхемой (как, например, чтение, запись, сравнение) используют только буфер. Таким образом, можно прочитать микросхему в буфер, записать содержимое буфера в микросхему, сравнить содержимое буфера и микросхемы и т.п. Взаимодействие файла и микросхемы напрямую не допускается.

В программаторе реализована система тестов работоспособности, позволяющая уже на этапе инициализации выявить отказы аппаратуры и, тем самым, предотвратить возможный вывод из строя микросхем пользователя.

Система тестов разделена на две группы:

· тестирования качества связи с аппаратурой программатора,включает в себя только тестирование качества связи с аппаратурой программатора.

· полное тестирование всей аппаратуры программатора.включает в себя полное тестирование всей аппаратуры программатора. Она запускается сразу по окончании работы первой группы тестов. При выполнении полного тестирования на тестовой DIP колодке программатора появляются различные тестовые сигналы, способные вывести из строя установленные в нее микросхемы. Поэтому, перед активизацией теста, пользователь будет предупрежден о необходимости удаления микросхемы из колодки.

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

Думаю, в наше время нет радиолюбителя, который никогда не сталкивался с микроконтроллерами. Рано или поздно, но это происходит. Когда я в первый раз увидел схему с микроконтроллером, тут же закрыл страницу браузера, с мыслью: "А, все равно не соберу". Но время шло, схем с применением микроконтроллеров становилось все больше, и я все-таки решил начать. На деле все оказалось совсем не таким сложным, как я думал.

Для начала давайте разберемся: что вообще такое микроконтроллер (МК)? По сути, это миниатюрный компьютер, предназначенный для выполнения простейших задач. Все необходимое для работы микроконтроллера заключено в одном корпусе. В микроконтроллере имеется различная периферия - порты ввода\вывода, таймеры, интерфейсы связи и т.д. Микроконтроллер имеет три вида памяти, это RAM (оперативная память), FlashROM (Память программы), EEPROM (энергонезависимая память).

Главное отличие микроконтроллера от обычной микросхемы - это то, что микроконтроллер работает не по жесткой логике, установленной на заводе, а программируется. Программа, классически пишется в специальной среде на компьютере на одном из языков программирования, после чего переводится на машинный язык(компилируется) и записывается в память контроллера. В этом курсе все будет немного по-другому - программа будет не писаться, а буквально рисоваться в виде блок-схемы. Благодаря такому подходу программа выглядит более наглядно, а время на разработку программы сокращается в 3-5 раз, по сравнению с классическими приемами программирования.

Algorithm Builder - среда программирования

Algorithm Builder производит полный цикл разработки, начиная от ввода алгоритма, включая процесс отладки и заканчивая записью программы в память.

Начнем с краткого обзора интерфейса программы

Главное меню

  • Файл. Служит для открытия, сохранения, закрытия проектов и отдельных алгоритмов, а так же выхода из программы.
  • Редактировать. Действия, связанные с редактированием алгоритма: вырезать, копировать, выделить и т.д
  • Отображение. Переключение алгоритм/таблица с переменными(о ней ниже) + шаблоны операций и условий.
  • Поиск. Тут пояснять не нужно.
  • Элементы. Алгоритм рисуется из специальных элементов: Текст, Вершина, Поле, Метка, Условие, Вектор б/у (безусловного) перехода, Настройщик. Со всеми ними мы познакомимся в процессе обучения. В меню находится еще несколько важных пунктов: Деактивировать, Макро, Прерывания. Деактивировать - данный компонент не будет компилироваться. Макро - для создания макросов. Прерывания - содержит список названии всех прерываний микроконтроллера. Об этой функции вы узнаете в следующих уроках, сейчас лишь скажу, что это чрезвычайно важная и необходимая для работы вещь.
  • Программа. Действия, связанные с программой - компиляция (перевод на машинный язык), симуляция работы программы, чтение памяти контроллера (Flash и EEPROM) и т.д.
  • Опции. Настройки проекта и среды.
  • ?. Информация о Algoritm Builder и справка.

Панель инструментов

В пояснениях не нуждается. При наведении курсора на элементы панели всплывают подсказки.

Открытый проект

Тут есть особенность. Нельзя открыть два проекта одновременно.Чтобы открыть/создать новый проект нужно закрыть старый. После открытия проекта вы можете открыть/создать лишь отдельный файл-алгоритм. Файл проекта имеет расширение.alp, а отдельный файл-алгоритм имеет расширение.alg

Работа с переменными и константами

Организуется в виде специальной таблицы (переключить можно клавишей F12, либо через меню, либо клавишей на панели инструментов). Таким образом, сам алгоритм освобождается от лишних записей.

Огромное число меток, благодаря которым возможны переходы от одной части программы к другой, сильно загромождают код, и наглядность программы теряется. В Algorithm Builder переходы осуществляются намного проще - стрелкой (вектором) . Но переходы по именованным меткам так же возможны.

Симуляция работы программы

Симулятор показывает все изменения, происходящие внутри виртуального микроконтроллера. Что бы проверить работу программы не обязательно даже покупать микроконтроллер! Симуляция может выполняться пошагово (с заходом в функции или нет), до установленной точки останова или до выделенного участка.

Отладка

Algorithm Builder обладает системой мониторной отладки на кристалле (On Chip debug) которая позволяет наблюдать содержимое памяти реального микроконтроллера в заданных точках. При этом для связи микроконтроллера с компьютером используется всего одна ножка микроконтроллера, причем по выбору пользователя. Мониторная отладка может быть применена практически к любому микроконтроллеру. Это программный вариант протокола debugWIRE.

Так почему же Algorithm Builder малоизвестен среди радиолюбителей? Во-первых, до 2010 программа была платной. Сегодня ПО распространяется абсолютно свободно. Во-вторых, отсутствие официальной поддержки программы. Вы не найдете ни одного апнота производителя в котором бы использовался Билдер. Интернет ресурсы, посвященные данной программе, можно пересчитать по пальцам.

Стоит немного рассказать о необходимых материалах и инструментах

Первое что понадобится - это паяльник . Основной инструмент радиолюбителя. Мощность паяльника должна быть в приделах 30-60 Вт. Почему нельзя больше? Мощный паяльник нагревается сильней, и повреждает дорожки платы и применяемые детали. Да и паять им не так удобно - такой паяльник намного больше и тяжелее.

Для того, чтобы загрузить программу в микроконтроллер нужен программатор - в простейшем варианте состоит всего из нескольких резисторов и диодов (на порт LPT и COM). Если у Вас на компьютере нет порта COM либо LPT, USB программатор можно заказать на , DealExtreame или (Поисковой запрос"avr programmer"; стоит примерно 4-6$). О выборе и сборке программатора я напишу в следующем уроке.

Графический ассемблер

Программное обеспечение является источником жизни системы, основанной на микроконтроллере или микропроцессоре. Разработка его является центральным моментом общего процесса проектирования. Основным инструментом для профессиональной разработки программ является ассемблер, предполагающий детализацию на уровне команд микроконтроллера или микропроцессора. Только он позволяет максимально использовать ресурсы кристалла. Однако работать на ассемблере не слишком удобно. Существенным барьером между программистом и предметом программирования является текстовый редактор с его ограниченными возможностями.

В данной публикации я хотел поговорить о технологии графической разработки программного обеспечения для микроконтроллеров и микропроцессоров. Такая технология освобождает программиста от целого ряда неудобств, свойственных классическому ассемблеру, а также предполагает существенное упрощение работы при сохранении уровня его детализации. Рассмотрение темы я буду вести с использованием в качестве примера среды разработки "Algor ithm Builder", в частности адаптированной под микроконтроллеры фирмы ATMEL с архитектурой AVR.

Вначале немного о мнемонике. Мнемоника представляет собой короткий набор букв латинского алфавита, однозначно определяющий соответствующую ему операцию в ядре микропроцессора. Конечно, разработчики старались вложить в этот набор букв смысл выполняемой операции, чтобы максимально облегчить жизнь программисту. И в ряде случаев им это вполне удалось, например, MOV, CALL, ADD, JMP и так далее. Но таких ситуаций немного. А появившиеся позже команды SBI, XTHL, BRBC, ADIW, XCHD и другие начинают соперничать с китайской письменностью. Разумеется, можно попытаться их запомнить, но и без того проблем достаточно.

Кроме того, те, кто имел дело с разными микропроцессорами, конечно, обратил внимание, что общность мнемоник их ассемблеров составляет не более трети. Среди присутствующих практически во всех ассемблерах, можно перечислить MOV, ADD, SUB, CALL, AND, OR, INC, DEC, PUSH, POP и еще некоторые. Основная же масса представлений эксклюзивна даже для ряда совершенно одинаковых операций. Например, в одном случае операция "исключающее или" записывается как XOR, в других - EOR. В одном случае обозначение операций переходов построено на основе слова JUMP, в другом - на основе BRАNCH. И таких примеров можно привести множество. Но ведь редко кому удается пользоваться только одним ассемблером. В реальной жизни "коней" приходится менять, и с таким нежелательным разнообразием сталкиваешься неизбежно.

С учетом всего этого, в среде "Algor ithm Builder" представление операций микроконтроллера построено иначе - по визуально-функциональному принципу. Запись операции содержит образ выполняемого действия. Например:

вместо "MOV R0,R1" записывается

вместо "LDI R16,63" - "63->R16",

вместо "ST X,R2" - "R2->[X]",

вместо "LSR r7" - "r7>>",

вместо "SBI PortB,3" - "1->PortB.3" и так далее.

В результате, время освоения системы команд сокращается до минимума, а смысл операций становится понятным даже неподготовленному человеку. Кроме того, в среде предусмотрен оперативный вызов через меню таблицы шаблонов всех имеющихся операторов, который позволяет легко найти необходимый.

Одно из основных неудобств ассемблера (и не только его) состоит в том, что в редакторе программа записывается и отображается в виде одной сплошной вертикальной полосы. И логическая структура тех или иных фрагментов может быть построена только в воображении программиста. В особо сложных случаях приходится предварительно прорисовывать необходимую структуру на бумаге. Это дополнительно загружает программиста совершенно ненужной работой.

Главное предназначение графических сред - приведение интерфейса разработки в соответствие с природой человеческого восприятия, освобождение пользователя от лишних рутинных действий для чисто творческого процесса. Элементы этих технологий мы наблюдаем в таких языках программирования, как Visual Basic, C-Builder, Delphi и других. Но там этот процесс ограничивается в основном конструированием содержимого окна. А с полным правом к этой категории можно, пожалуй, отнести такие среды, как PCAD, OrCAD и прочие. Можно, конечно, электрическую схему описать в текстовом редакторе, вводя список соединений, но гораздо удобнее это делать в специализированном графическом редакторе.

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

Например, приведенная ниже подпрограмма содержит три таких блока:


SubName: LDI XL,96

Label0: LD R16,X

Label1: SBI PortA,0

Label2: SBI PortA,2


Первый блок начинается с оператора "LDI XL,$20" с меткой "SubName", а завершается оператором безусловного перехода "RJMP", два других - начинаются с оператора "SBI" с метками "Label1" и "Label2", соответственно, а заканчиваются оператором "RET".

Визуальное разделение таких блоков на плоскости является одним из принципов графических методов. Другим принципом является возможность графического отображения алгоритма программы. Благодаря этому, обеспечивается возможность ввода программы на плоскости в двух измерениях в виде алгоритма с древовидной структурой, с визуальным отображением направления условных и безусловных переходов. В результате - вся логическая структура как на ладони.

На рис. 1 показано отображение вышеприведенной программы в графической среде "Algorithm Builder".

Рис. 1. Отображение программы в среде "Algorithm Builder"

Поскольку основная масса условных и безусловных переходов вводится и отображается графически, программа освобождается от бесчисленных имен меток, которые в ассемблере являются неизбежным балластом, загромождающим текст программы. Необходимость имен для меток остается только для входов в подпрограммы.

Графическая технология ассемблера в среде "Algorithm Builder" реализуется посредством нескольких базовых объектов, из которых выстраивается конструкция алгоритма. Среди них:


  • "Label" (метка) - отображается в виде вертикального штриха, расположенного на оси блока операторов. Метка может иметь необязательное имя, которое располагается слева или справа от штриха. Метки предназначены для подвода концов векторов переходов;

  • "Vertex" (вершина) используется в качестве начала блока, а по своему отображению и назначению аналогичен метке;

  • "Field" (поле) предназначен для записи операторов алгоритма и представляет собой отцентрированную строку в блоке;

  • "Condition" (условие) предназначен для обозначения операторов условных переходов. Конструктивно наиболее сложный. Графически представляет собой контур, располагающийся посредине блока, внутри которого вписывается текст с условием перехода и возможный вектор перехода в виде ломаной линии, исходящей от одного из краев контура, со стрелкой на конце, которая должна заканчиваться на метке или вершине. Действие интерпретируется как ветвление, если вписанное условие выполняется;

  • "JMP Vector" предназначен для представления безусловного перехода. Графически представляет собой ломаную линию, исходящую из середины блока операторов, аналогичную вектору объекта "Condition".
Редактор среды позволяет свободно вносить на рабочее поле любые необходимые объекты, модифицировать их, вставлять и так далее. Принципы редактирования аналогичны используемым в других графических редакторах.
Для удобства, конец вектора ветвления разрешается останавливать на отрезке другого вектора, если конечно адрес у них общий. Но при большом нежелании рисовать вектор ветвления, либо, если это ветвление слишком длинное, всегда остается возможность адресовать переход классическим способом, на имя метки.

Рис. 2. Основное окно редактора

Рис. 3. Окно программиста

В целом данная среда программирования является самодостаточной системой. Она содержит в себе компилятор алгоритма, симулятор микроконтроллера и внутрисхемный программатор, обеспечивающий загрузку откомпилированного алгоритма в кристалл. Кроме того, обеспечивается режим мониторной отладки, при котором к откомпилированному коду программы добавляется скрытый код, обеспечивающий вывод всего внутреннего состояния реального микроконтроллера в заданных точках останова в соответствующие окна, как при работе в симуляторе. При работе мониторного отладчика и программатора микроконтроллер непосредственно подключается к параллельному порту LPT несколькими цепями.

Рис. 4. Окно настройки таймеров

В числе дополнительных возможностей, не связанных непосредственно с графическими технологиями, можно назвать метки со стандартным именем прерывания. Встретив такую метку, компилятор автоматически вставит в соответствующее вектору прерывания место программы код необходимого безусловного перехода. Имя таких меток можно выбрать через соответствующий пункт меню. Реализован также удобный интерфейс настройки таймеров, который избавляет от необходимости помнить назначение каждого бита управляющего регистра и ряд других сервисных возможностей.

Рис. 5. Работа симулятора

Среда "Algor ithm Builder" предна- значена для работы в операционной системе Windows 95/98.

На рис. 6 приведен более сложный пример фрагмента программы. Слева - в классическом ассемблере, а справа - полная его копия в среде "Algor ithm Builder".

Рис. 6. Ассемблер: классика и графика

Конечно, в рамках одной статьи невозможно достаточно подробно описать все особенности работы в графической среде.

В ближайшее время среда "Algor ithm Builder" будет адаптирована под иные типы микропроцессорных архитектур.

Переход к использованию такой среды труден психологически. В голове многих проскользнет мысль: "может, ассемблер и не располагает этими возможностями, но я к нему очень привык, мне и с ним хорошо". Это чем-то сродни переходу от командной (DOS) к графической оболочке (Windows). Однако, освоение этого инструмента и последующая работа с ним заметно проще классического ассемблера. Во всяком случае, те, кто его уже используют, пути назад не ищат.

Algorithm Builder fo AVR, Начинаем

Качаем и устанавливаем Algorithm Builder fo AVR http://algrom.net/russian.html
Внимательно читаем Manual.pdf