Командная строка avreal - как я это делаю (точнее, как я этого не делал с самого начала).
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ReAl 21 августа 2003 г. 16:21

Во-первых, про саму идею оболочки :-)
Идея не новая, давно реализованная и даже продаётся (см. ссылку) неким предприимчивым человеком, который продаёт байт-бластер с дискеткой. То, что там в глубине avreal - можно увидеть, вызвав "отчёт" по окончании программирования.

Теперь как у меня сделано, что я вообще не набираю командную строку. В окружении (мой компьютер - свойства - дополнительно - переменные среды) стоит ABB_PORT=1 (или 2) и прочие настройки, которые могут понадобиться (скажем, дома и на работе avrgcc живёт на разных дисках).


# file avreal.make
#### AVREAL related variables & rules
#
# in project makefile must be defined:
# MCU - mcu name, for example MCU=atmega8
# TRG - project file name w/o extension
# XTAL_FREQ_HZ = AVR clock frequency in hertz
# FUSES = fuses switches, for example
# FUSES = m103c=1,cksel=f,sut=1,ckopt=0,boden=0,blev=0
#

AVREAL = avreal32.exe -ab -p$(ABB_PORT) +$(MCU) -n $(AVREAL_OPT)

ifdef XTAL_FREQ_HZ
AVREAL_FREQ = -o$(XTAL_FREQ_HZ)hz
endif

run: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -e -w -v $^

fuses:
$(AVREAL) -o800 -w -v -f$(FUSES)

reset:
$(AVREAL) -o800

ifdef FUSES
verify: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -v $^ -f$(FUSES)
else
verify: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -v $^
endif

lock: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -vl2 $^

В основном мейк-файле проекта помимо include avrgcc.make со стандартными правилами компилятора стоит include avreal.make. Для каждого конкретного проекта всё равно надо прописать его имя и используемый процессор (делать это в IAR в меню или редактором в makefile - труд одинаковый.
Один раз там же (malefile) прописываются FUSES. Всё. Меньше работы быть не может ни при каком ГУЕ.
Теперь когда я в MED (а вы что, думали я и тексты набираю из командной строки при помощи cat или echo? :-) F9, то он зовёт make и я получаю результат компиляции. Если нажимаю CtrlF9, то он вызывает
make run и вызывается avreal для защивки программы. Естесвенно, если какой-то исходник изменён, то make
сначала перекомпилирует/пересоберёт.
Нечто похожее можно сорудить на target - DEBUG и RELEASE в AVRstudio.
Для прошивки fuses отдельная позиция в tools у MED, нечего их каждый раз дёргать.

А когда мне надо просто зашить текущий проект, то я могу из командной строки руками сказать


make run
или
make fuses run
для "нулёвого" кристалла

Ну и на закуску - когда я "сдаю" проект на монтаж, то я говорю

make
make -n fuses run >write.bat

и отдаю батник вместе .hex и .eep
Строка с '-n' просит make "а изобрази-ка ты то, что собрался делать, но ничего не делай"
Вот так.
Теперь моих тогдащних оппонентов прошу сказать - что именно упростится, если я начну пользоваться GUI программатором.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru