22 февраля 2014 г.

Книга: Geany автоматизация 1

Автоматизация Geany.
Вариант 1: простой и универсальный.




Теперь запускаем Geany, создаем новый файл или открываем любой исходник .asm, открываем вкладку "Сборка" / "Установить команды сборки".
Видим окно настройки пользовательских команд:


В соответствующие поля вводим команды команды: 

"Скомпилировать" - avra --includepath /usr/share/avra/includes %f
"Фьюзы" - avr8-burn-o-mat
"Размер" - avr-size  %e.hex
"Очистить" - rm -f %e.cof $e.eep.hex %e.hex %e.obj
"Прошить" - PART=`grep -m 1 -e "^\.include " %f | sed -r -e 's/.*include "(.+)def\.inc".*/\1/' | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit

Пояснения:
%f - шаблон geany, имя текущего файла (в нашем случае это Example.asm)
%e
шаблон geany, имя текущего файла без расширения (Example)
%dшаблон geany, путь к папке, в которой лежит текущий файл (~/Projects/AVR/Example/)
%pшаблон geany, путь к текущему проекту (~/Projects/AVR/Example/)
PART - строковая переменная, в которую заносится результат выполнения скрипта, определяющего тип контроллера
echo "target device: $PART" - выводим в консоль название распознанного контроллера (исключительно как информация вам для справки)
avrdude -p $PART -c usbasp -U flash:w:"%e.hex" - запускаем avrdude, подставляя в него нужную опцию
grep -m 1 -e "^\.include " %f - находит строчку начинающуюся на .include, опция -m 1 указывает что не стоит продолжать поиск, если хотя бы 1 строка уже найдена.
sed -r -e 's/.*include "(.+)def\.inc".*/\1/' - из найденной строки с помощью шаблона вычленяется название контроллера (все что после кавычки и перед def.inc).
sed "s/tn/t/g" - заменяет tn на t. так как в аппноутах Tiny2313, например, зовется tn2313, а avrdude ее понимает как t2313. 

Чтобы Geany сам распознавал тип микроконтроллера и менял опцию -p в команде avrdude нужно в исходном файле анализировать строки вида .include "m8def.inc", которые указывают тип используемого микроконтроллера и присутствуют в каждом asm файле.

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


Для прошивки Фьюзов используется графическая оболочка к avrdude AVR8_Burn-O-Mat.


Теперь для того чтобы:
Скомпилировать код - нужно нажать F8 (или иконку с пирамидой и шаром), 
Прошить код в микроконтроллер - нажать F5 (или иконку с шестеренкой),
Править Фьюзы - нажать F9 (или иконка с кирпичем).



____Приведенная в этой заметке команда "Прошить" - PART=`grep -m 1 -e "^\.include " %f | sed -r -e 's/.*include "(.+)def\.inc".*/\1/' | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit отличается от наличествующих в интернете подобных описаний Geany. Отличается в лучшую сторону: во-первых она действительно работает (LinuxMint15), во-вторых корректно распознает все имена поддерживаемых контроллеров.



Комментариев нет:

Отправить комментарий