|
Во-первых, про саму идею оболочки :-)
Идея не новая, давно реализованная и даже продаётся (см. ссылку) неким предприимчивым человеком, который продаёт байт-бластер с дискеткой. То, что там в глубине 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
endifrun: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -e -w -v $^fuses:
$(AVREAL) -o800 -w -v -f$(FUSES)reset:
$(AVREAL) -o800ifdef FUSES
verify: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -v $^ -f$(FUSES)
else
verify: $(TRG).hex $(TRG).eep
$(AVREAL) $(AVREAL_FREQ) -v $^
endiflock: $(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
E-mail: info@telesys.ru