?

Log in

No account? Create an account

April 2019

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930    
Powered by LiveJournal.com

Заметка по программированию - Установка и настройка Geany + AVRA + AVRDude

Ставить будем под Ubuntu 16.04.4 LTS

Ставим пакеты:
sudo apt-get install geany avra avrdude
У меня они уже установлены:
Уже установлен пакет avra самой новой версии (1.3.0-2).
Уже установлен пакет avrdude самой новой версии (6.2-5).
Уже установлен пакет geany самой новой версии (1.27-1).

Скачиваем шаблон синтаксиса avr_asm для его скудной, но все же подсветки:
wget http://wiki.geany.org/_export/code/config/avr_asm -O ~/.config/geany/filedefs/filetypes.asm
*если получили ошибку "Нет такого файла или каталога" то вероятнее всего ранее Geany не запускался, и следовательно не создал свои рабочие каталоги, запускаем и повторяем процедуру.

Библиотеки микроконтроллеров для avra находятся в /usr/share/avra/, но там не все, недостающие
я обычно беру с установленной Atmell Studio под Windows, их можно взять у меня
wget http://p5277.ru/distr/other/avra.zip -O ~/avra.zip
Распаковываем (необходим пароль суперпользователя):
sudo unzip -o ~/avra.zip -d /usr/share/avra/
Удаляем скачанный архив:
rm ~/avra.zip

Теперь запускаем Geany и выполняем настройку для компиляции и прошивки мк:
Смотрим Меню->Сборка->Установить команды сборки


В первой строке прописываем Build и avra --includepath /usr/share/avra/ "%f"
Во второй с конца прописываем Flash и команду для прошивки микроконтроллера, здесь все зависит от типа прошивальщика и
от типа микроконтроллера.

Рассмотрим пример с USB AVR JTAGICE XPII для ATmega328P

avrdude -p m328p -c jtag2isp -U flash:w:%e.hex


С программатором USB AVR ISP mkII

avrdude -p m328p -c avrispmkII -U flash:w:%e.hex


Типы поддерживаемых программаторов можно посмотреть так:
avrdude -с ?
Типы поддерживаемых МК так:
avrdude -p ?

Вот что у меня получилось:

*в процессе написания был убран ключ -v (verbose) как не нужный.

Для проверки можно создать файл test.asm следующего содержания (просто выставляем высокий уровень на PD0):
.INCLUDE "m328pdef.inc"
   .CSEG
   .ORG 0x00

   CLI

   SBI DDRD,PD0
   SBI PORTD,PD0
LOOP:
   RJMP LOOP


Сохраняем, жмем Menu->Сборка->Build (или клавишу F8)
Получаем вывод avra:
avra --includepath /usr/share/avra/ "test.asm" (в каталоге: /home/kostas)
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.
   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0003, Length = 0x0004
Assembly complete with no errors.
Segment usage:
   Code      :         4 words (8 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
Сборка прошла успешно.



Компиляция прошла успешно, пробуем прошить, для этого жмем Menu->Сборка->Выполнить (или клавишу F5, иногда дважды)
Получаем вывод:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "test.hex"
avrdude: input file test.hex auto detected as Intel Hex
avrdude: writing flash (8 bytes):

Writing | ################################################## | 100% 0.82s

avrdude: 8 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 8 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.85s

avrdude: verifying ...
avrdude: 8 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:99, L:CE)

avrdude done.  Thank you.



------------------
(program exited with code: 0)
Press return to continue


Для работы с фьюзами я воспользовался онлайн калькулятором http://www.engbedded.com/fusecalc/
Вродебы добротный, умеет генерировать сразу параметры для AVRDude

Насчет стандарта кодирования, я использую табуляцию с размером в 3 символа и отсутп для комментариев с 58 символа - это главное, также пишу весь текст в верхнем регистре,  кроме комментариев, максимальную длину строки делаю в 160 символов.

В общем пока все, в дальнейшем планирую дополнить пост примерами прошивки другими программаторами, и навреное поработаем со фьюзами.

Comments