Чтобы записать прошивку с битами защиты, пришлось в свойствах проекта сделать Linker\Extra Output в hex-файл формата Intel-standard (это в среде IAR Embedded Workbench IDE), и воспользоваться ISP/SPI-программатором, встроенным в Avr Studio 4.
Процедура использования программатора (в Avr Studio 4):
Сначала нужно запретить режим debugWIRE, для этого в Avr Studio 4 нужно зайти в режим отладки. Для этого создаем любой пустой проект, вставляем команду nop, компилируем, запускаем отладку (для удобства я всегда держу такой пустой проект в дополнительно созданной папке prog проекта IAR Embedded Workbench IDE). Затем нажимаем Alt+O или заходим в меню Debug\JTAGICE mkII Options (это меню доступно только тогда, когда активна сессия отладки Debug\Start Debugging).
На закладке Connection жмем кнопку Disable debugWIRE. В ответ вылезет окно To disable the debugWIRE fuse, the SPI lines must be connected according to "Connecting to Target through the debugWIRE Interface" in the JTAGICE mkII online help. Would you like to disable debugWIRE and close the project?
Отвечаем Yes. Закроются все окна отладки. Теперь можно программировать устройство через меню Tools\Program AVR\Auto Connect, доступны все программируемые ресурсы микроконтроллера, вплоть до его полного стирания.
Как выяснилось, при вышеописанном переходе в режим программирования стирается почему-то содержимое EEPROM. Поэтому пришлось выгрузить не только hex-файл прошивки кода (Debug\Exe\servotest.a90), но и дамп EEPROM с помощью контекстного меню окна просмотра дампа памяти (я дамп выгрузил в файл Debug\Exe\eeprom.hex), а затем с помощью ISP/SPI-программатора Avr Studio 4 записывать оба этих файла в кристалл.
[Ссылки]
1. Как сделать, чтобы в AVR Studio не портилась EEPROM при старте отладки. |