Установив AVR Studio 5.1 неожиданно обнаружил ряд интересных и полезных вещей.
Например, появился командный интерфейс (CLI), позволяющий прошивать контроллеры из командной строки =)
Находится сия программа в папочке \AVR Studio 5.1\avrdbg и называется atprogram.exe. Конечно, оно поддерживает только канонные устройства, но такая ли сложность их достать? =)
Интерфейс у неё простой и достаточно свободный. Например, для прошивки устройства я сделал следующий алгоритм:
atprogram -t jtagice3 -d atmega1280 -i isp -cl 250khz write -fs --values FFC9FC
atprogram -t jtagice3 -d atmega1280 -i isp -cl 1500khz chiperase
atprogram -t jtagice3 -d atmega1280 -i isp -cl 1500khz program -fl -f %1
atprogram -t jtagice3 -d atmega1280 -i isp -cl 1500khz verify -fl -f %1
читать дальше-t — прибор, которым пользуемся.
-d — контроллер.
-i — интерфейс программирования (isp, jtag, debugwire, hvpp, hvsp).
-cl — скорость интерфейса. В данном коде фьюзы ставятся на частоте 250 кГц (так как новый контроллер работает на частоте 1 МГц), а потом прошивка и проверка идёт на частоте 1.5 МГц.
Команды говорят сами за себя. Есть и иные, но это в справку.
-f указывает файл с прошивкой (hex, elf).
-fl — записываем и проверяем флеш.
-fs — пишем фьюзы. --values указывет, что пишем не из файла, а вот прям то, что написано: FFC9FC. порядок фьюзов такой: Low, High, Extended.
Данный код сидит в файлике program.bat в той же папочке и вызывается по мановению ярлыка, где в качестве аргумента передаётся путь до файла прошивки. Примерно так:
"C:\Program Files\Atmel\AVR Studio 5.1\avrdbg\program.bat" C:\Production\NyashaPomigasha.hex
В общем, удобно.
Поддержка подобных алгоритмов появилась и в самой студии. Так называемые ELF Production file. То есть в исходном коде программы можно указать фьюзы и содержимое EEPROM. И оно запишется в elf-файл.
И в окошке AVR Programming появилась вкладочка Production, где этот файл можно зашить:
скриншот
Правда, тут всё шьётся с одной скоростью, а значит, с минимальной (250 кГц для меня). Не круто, но где-то таких проблем нет и прекрасно можно пользоваться.
И как бонус, пример файлика, объявляющего необходимые фьюзы: fuse.c
Он ничего не требует, достаточно его подключить к проекту. Однако ж для каждого контроллера надо иметь свой файлик =) Или же сделать комбо с помощью макросов...
И, применяя фьюзы подобным образом, не залочьте контроллер и не удивляйтесь невозможности отладки, если во фьюзах выключен JTAG или OCD. Фьюзы перед каждой отладкой зашиваются ж.