Обновление прошивок через ISP

Некоторые модули SSSR Labs оснащены 6-контактным разъемом под названием ISP (In-circuit Serial Programming, внутрисхемное последовательное программирование). Этот разъем может быть использован для обновления прошивки модуля до последней версии. Для этого вам нужен ISP-программатор для платформы AVR.

Выбор программатора

Сейчас на рынке представлено множество различных моделей программаторов с ценой от пары сотен рублей. В отличие от професионального аудио, сегодня сделать программатор оень легко. Ниже приведен небольшой список самых известных программаторов с разной стоимостью. Возьмите самый дешевый, если он нужен только для редкого обновления прошивок какого-нибудь Eurorack модуля. Если вы программируете, возьмите Arduino и развлекайтесь с созданием проектов на нем. Если вы потенциально заинтересованы в чтении и программировании других видов чипов (EPROM, EEPROM, контроллеры PIC и т.д.), возьмите для этих задач TL-866 и USBtinyISP для быстрого обновления устройств с ISP: вы не пожалеете об этом выборе. Мы рекомендуем использовать avrdude в качестве приложения для программирования. Рядом с названиями программаторов вы увидите специальные некие строковые значения в квадратных скобках. (Напр. [avrisp]) Это условные названия интерфейсов программирования, которые используются в качестве параметров оконного приложения-надстройки над AVRDude или параметра командной строки.

Замечание для российских пользователей. Ситуация такова, что очень многие товары не продаются в Россию из Amazon, поэтому просто не надо тратить на него время. Если вы находитесь в крупном городе, в котором есть радиорынок или интернет-магазин электронных конструкторов, роботов и всяких Arduino, то проще всего именно там взять любой имеющийся AVR ISP программатор за разумную цену. (до 1000 р) В остальных случаях рекомендуется открыть eBay и искать там. Можно еще поискать в интернете какой-нибудь частный российский магазинчик, рассылающий такие гаджеты по почте. Таковых на самом деле сейчас много.

USBASP (200 руб) [usbasp] — дешевый опенсорсный USB-свисток с 10-контактным разъемом. Должен поставляться со 10-контактным шлейфом и ISP переходником 10 на 6 контактов. Доступен на eBay, Ali Express и практически везде. Главный и единственный недостаток: это самый медленный в мире программатор, но для редких обновлений его достаточно. (Купить на eBay)

USBtinyISP (200 руб) [usbtiny] — Недорогой опенсорсный программатор, совместимый с STK-500. Распространяется в множестве версий и дизайнов от Adafruit и других производителей, как фирменных, так и безымянных. (Купить на eBay)

Arduino UNO R3 (500 руб за клон) [avrisp] — Самая известная в мире плата разработки на микроконтроллере ATMEGA328p с собственной фирменной средой разработки. Может быть использован как программатор совместимый с Atmel STK-500. В качестве бонуса, можете собирать проекты на этой платформе. (Купить на eBay) Вам потребуется 6 однопиновых проводочков (так называемых «Dupont wires») папа-мама не менее 20 см длиной. (Купить провода на eBay) Кроме того, на саму плату потребуется загрузить так называемый «скетч» ISP программатора из стандартной библиотеки Arduino IDE. Статья на сайте Arduino.cc

AVR ISP MK II (1000–2000 руб) [avrisp2] — Официальный USB программатор полностьюб совместимый с STK-500. В отличие от дешевых аналогов, полностью совместим с Atmel AVR Studio, но это важно только для разработчиков, пользующейся этой средой. Обратите внимание на наличие 6-контактного кабеля или переходника с 10 на 6. (Купить на eBay).

TL-866A (3000–5000 руб) — Универсальный параллельный программатор профессионального уровня с собственным приложением под Windows. Очень быстрый и единственный из представленных, который может «лечить» контроллеры с «запоротыми» фьюзами и поддерживает что-то помимо AVR. Версия A имеет ICSP разъем, который можно подключить к ISP-разъему проводами Dupont мама-мама, но это не очень удобный способ программирования, поэтому этот программатор больше рекомендуется не для ISP поделючений, а для прямого программирования и чтения разнообразных чипов на постоянной основе (Купить на eBay)

Обновление фьюзов в Matrixarchate 1.0

Перед перепрошивкой Matrixarchate версии 1.0 требуется обновление фьюза hfuse. Его значение должно быть 0xD7 (то-есть, установлены в 0 SPIEN и EESAVE). Если этого не сделать, любое обновление кода очистит всё содержимое пользовательской памяти: программы и настройки, а модуль нельзя будет использовать до загрузки заводского EEPROM. Если вы используете MacOS, AVRFuses без проблем обновит фьюз. Если вы используете Windows, вам необходимо создать файл updatefuse.cmd со следующим содержимым:

@echo off
avrdude -c avrisp -p ATMEGA328P -P COM5 -U hfuse:w:0xd7:m
pause

Параметры -c avrisp и -P COM5 зависят от используемого программатора и порта и они те же, что и в avrdudeGUI.

После успешного выполнения можно обновлять любые прошивки.

Перепрошивка под MAC OS X

  1. Скачайте и установите фреймворк CrossPack-AVR и приложение AVRFuses
  2. Скачайте архив с прошивкой и распакуйте в известный вам каталог на локальном диске.
  3. Подключите программатор к компьютеру и подождите минутку, пока автоматически установятся драйверы.
  4. Отсоедините модуль Eurorack от системы и подсоедините ISP-разъем к программатору.
  5. Запустите AVRFuses, выберите пункт меню File→Preferences (⌘,) и установите следующие параметры:
    • Path to avrdude: Каталог в который установлен пакет Crosspack (Скорей всего /usr/local/bin/avrdude или /usr/local/CrossPack-AVR-20131216/bin).
    • Programmer: То самое значение в квадратных скобках (usbasp, avrisp, avrisp2, usbtiny или еще что-то)
    • Port: Последовательный порт ассоциированный с вашим только что подключенным программатором (usb, tty.usbmodemXXXXX в случае usb/serial программаторов или usbasp/пустое значение в случае USBASP)
    • Baud Rate: Этот параметр в большинстве случаев не нужно менять. По-умолчанию он равен 115200, но возможно, его нужно будет понизить до 38400 или даже до 9600 при использовании USBASP. Попробуйте покрутить этот параметр, если что-то пойдет не так.
    • Bit Clock: 8
  6. В основном окне выберите тип чипа: ATmega328P.
  7. Для обновления программного кода, в области Flash укажите путь к .hex файлу с прошивкой и нажмите кнопку Program.

Перепрошивка под Windows

  1. Скачайте AVRDude GUI и распакуйте в заранее известное место на локульном диске.
  2. Скачайте архив с прошивкой и распакуйте его туда же.
  3. Установите (при необходимости) драйвера для своего программатора, подсоедините его к USB-порту и подождите минутку, пока устройство опознается. Затем извлеките его.
  4. Отсоедините модуль Eurorack от системы и подсоедините ISP-разъем к программатору.
  5. Если вы используете USBASP или AVRISP MKII, можно пропустить этот шаг и просто вставить назад програматор. Если вы используете старый STK500, AVRISP, Arduino или любой другой программатор создающий виртуальный COM-порт, вам необходимо определить имя этого порта. Для этого откройте Диспетчер устройств (Win+R, «devmgmt.msc») и найдите там раскрывающийся пункт списка с названием «Порты (COM и LPT)». Раскройте его и запомните уже существующие COM-порты. Теперь подсоедините программатор и найдите новый появившийся порт. Он может быть прокомментирован читаемым именем, но вас интересует только само имя порта: COM5 и т.п.
  6. Запустите avrdudeGUI.
  7. Во вкладке Setup выберите интерфейс программирования, соответствующий вашему программатору и укажите порт (usb, COMxx или usbasp для USBASP)
  8. Во вкладке Programming выберите  ATMEGA328P в качестве целевого устройства (Target Device). Убедитесь, что отмечена галочка «Verify after programming» и выбран формат файлов Intel Hex.
  9. Укажите путь к .hex файлу в области «FLASH» и нажмите кнопку Program.