20 років avreal

Отак багато часу пройшло. Весь 2018 рік — рік 20-річчя програми avreal, назва якої утворена дуже просто, як комбінація AVR і ReAl. І деякий час пошук по слову avreal видавав лише обговорення на інтернет-форумах або мій сайт, і лише потім почав вважати це помилкою набору і видавати «якусь співачку» 🙂

Писати я його почав влітку 1998 року, під час роботи над реальним проектом з AT90S8515.
До того лише трохи «грався для себе» і для того мені вистачало PIP04, був для Windows такий попередник PonyProg-а. Але для реальної щоденної роботи возити мишкою мені було незручно, хотілося інструмента, якого можна запхати у makefile і викликати з редактора. Тобто потрібна була утилітка командного рядка. Здається, тоді вже існував лінуксовий uisp, але на лінукс я перейшов кількома роками пізніше. Для MS DOS знайшлася лише (підказали в RU.EMBEDDED) програма fbprg. Та з’ясувалося, що вона хоч і «command line», але страшенно незручна.

От тоді й всівся за своє. Паралельно із робочим проектом, продовжуючи в ньому використовувати fbprg. Саме тому перший адаптер, який підтримував avreal, був той fbprg, а LPT за умовачанням використовувався другий, бо на першому був принтер.

Зрештою, воно більш-менш впевнено запрацювало, хтось із знайомих (Євген Краштан?) перевірив на 90s1200 і 90s2313, знайшов декілька помилок, надав парочку 90s1200 із запоротим DevID для експериментів. Таке ж саме запитання — «де знайти програматор AVR, який добре вбудовується в ланцюжок make і компіляторів командного рядка» — виникало в RU.EMBBEDED і SU.HARDW.SCHEMES, на початку вересня 1998 року я запропонував свою програму.

Так і пішло. Фактично, навіть сайт я завів, ще на LuckyNet, для розміщення нових версій та опису, у щось блогоподібне воно перетворилося набагато пізніше, десь ближче до 10-річчя програми.

З часом додавалися інші адаптери (спочатку Altera ByteBlaster, бо працював тоді з альтерівськими PLD і цей адаптер був і вдома, і на кожному столі на роботі, затим за компанію Xilinx Download Cable, а тоді просто можливість задати довільну конфігурацію).
З Win98 на роботі перейшли на WinNT — з’явилася win-версія (через DLPortIO, який на роботі ж використовувався для іншого). Сам я перейшов на Linux — от вам лінуксова версія. Попросили FreeBSD — зробив, але реально його окрім прохача майже ніхто не використовував, та й для нього з часом стало неактуально. Тому ця версія трохи «недорізаною» тяглася, туди нові можливості додавалися лише ті, які «само собою» починали працювати. Пізніше я зовсім відмовився від підтримки.

З’явилися мікросхеми FTDI з MPSSE, тобто апаратним JTAG/SPI, відповідно, в avreal з’явилася можливість працювати через USB. Для USB були ще геть недорогі адаптери з soft-USB, зокрема, з емуляцією COM-порта і AVR910. Але вони були повільні, відчутно повільніші за PCI-LPT карту, не набагато швидші за звичайний LPT. Згодом і звичайні, і PCI-LPT почали уповільнюватися, але то інша історія.

І от так потихеньку і пройшло 20 років.

Ще наприкінці минулого року я згадав про дату, чесно 🙂 тоді хотів щось дописати в avreal. Але трапилася одна справа, в яку я вклав весь свій вільний час. У травні цього року звільнився з роботи. Не заради дописування avreal, звісно, але початково були плани протягом літа завершити свою частину тієї справи, роззирнутися, відіспатися, почитати чогось корисного, а восени шукати нову роботу. Та не так сталося, як гадалося — в кінці липня вже була нова робота з купою нової інформації, яку слід перетравити і засвоїти.
Навіть згадана справа пригальмувалася, все інше відклалося.

Тому, на жаль, на рік 20-річчя сам avreal не отримав ніяких подарунків у вигляді якихось нових можливостей, але в результаті змін у житті я познайомився з кількома чудовими людьми, які «в молодості» використовували avreal 🙂 І відновив контакт з кількома такими ж, яких знав раніше.

p.s. Мене заспокоюють, що «справжня зрілість» це 21 рік. І що до наступної осені я ще можу щось встигнути.

AVReAl update — 1.29r1

Вийшла нова версія програматора avreal — v1.29r1 (Sun 2018-02-11).

  • Додано підтримку:
    • Attiny441, ATtiny841
    • ATmega48PB, ATmega88PB, ATmega168PB, ATmega328PB
    • ATmega324PB
  • Файл із серійним номером пристрою тепер може містити шістнадцяткове число з префіксом 0x.
  • Виправлено внесену в 1.29r0 помилку, через яку символьні масиви довідки по ключу -h стали задовгими й обрізалися під час виводу функцією vsnprintf(). Завдяки тому, що вони обрізалися, avreal не падав так гучно, як то робив avr-ld ;-).

AVReAl update — 1.29r0

Вийшла нова версія програматора avreal — v1.29r0 (Wed 2013-12-11).

  • Ключ -% розширеної діагностики замінено на ключ -i керування рівнем інформаційних повідомлень;
  • При перенаправленні stdout у файл критичні повідомлення дублюються на stderr (якщо той не перенаправлено);
  • Остаточна відмова від групування ключів (тепер не можна -wv, можна лише -w -v);
  • Додано синоніми mega325PA, mega3250PA.

AVReAl update — 1.28r14

Вийшла нова версія програматора avreal — v1.28r14 (Mon 2013-08-05).

  • Виправлено помилку в сигнатурах ATmega128rfr2, ATmega256rfr2;
  • Додано ATmega32HVE, ATmega64HVE.

AVReAl update — 1.28r13

Вийшла нова версія програматора avreal — v1.28r13 (Sun 2013-06-02).

Помилка в синхронізації (MPSSE)

Виявлено помилку, через яку не проходить процедура пересинхронізації додатковим імпульсом SCK у наступних умовах:

  • програма у мікроконтролері виставляє на ніжці ніжку SCK високий рівень;
  • використовується MPSSE-адаптер (FT2232, FT4232H, FT232H).

При роботі через LPT-адаптер синхронізація проходить нормально, після стирання через нього знову можна запрограмувати через USB-адаптер.

Схоже, помилка давня, але в більшості випадків до неї не доходило, бо синхронізація встановлювалася після обов’язкового початкового циклу RESET-синхронізації.
Наче хтось колись на щось подібне жалівся, але я не міг відтворити у себе і не знаходив нічого підозрілого в коді avreal. На цей раз мені знадобилося «підняти» одну стару плату з AT90S8515 і я таки отримав оте «Can’t resync» на USB-адаптері. Спробував за допомогою маленької тестової програми відтворити ситуацію на ATmega168 — все нормально працює і через MPSSE, синхронізується першою RESET-спробою, до SCK-імпульсів справа не доходить. А от AT90S8515 не програмується.

Все необхідне я зробив через ByteBlaster, помилку ловитиму за хвіст найближчим часом.


Помилку виправлено у версії 1.28r13.

AVReAl update — 1.28r12

Вийшла нова версія програматора avreal — v1.28r12 (Fri 2013-01-04).

  • Додано ATtiny828, ATmega64RFR2, ATmega128RFR2, ATmega256RFR2
  • «Купу крапочок» замінено на щось більш схоже на індикатор процесу (progress bar)

Також зроблено дрібні зміни у внутрішній структурі, більш важливі для мене самого як ознака того, що я ще не закинув проект і збираюся робити трохи більше, ніж ліниво додавати в таблиці нові кристали 🙂

AVReAl update — 1.28r11

Вийшла нова версія програматора avreal — v1.28r11 (Sat 2012-06-23).

  • Додано AT90pwm161, ATtiny1634
  • Виправлено реакцію на ключ -a без аргументів — вихід з програми з повідомленням про помилку замість використання адаптера за замовчуванням FBPRG)

Перехідник зі шлейфа на макетну плату.

Знадобилося мені якось терміново підключити до плати з ATmega64 макетку, на якій перевірити один задум. Вільні лінії мікроконтролера було виведено на 16-контактні штирі, залишалося підключити шлейф до макетної плати. А сама макетка — куплена в Імраді SOLDERLESS BREADBOARD EIC-406 фірми E-CALL (куплялися в Імраді, «там їх є»). Тобто не підпаятися (для того і бралося ж), потрібен перехідник.

Звичайно, можна було б використати з’єднувач DIP на шлейф. Та треба було «бігом», поки думка ворушиться, а до Нью-Паріса їхати зараз неблизько. Тому було знайдено шматочки макетки та штирі і мені швиденько запаяли ось такі перехідники:

Перехідник, макетка та штирі.

Все, що потрібно, було перевірено і на деякий час я про це забув. Аж тут раптом виявився потрібним аналогічний перехідник на шість контактів, під варіант 6-pin AVR ISP шлейфа програматора. Причому вдома — а паяти самому ліньки 🙂
Лінощі — двигун прогресу. Дуже швидко в голові промайнули … (подивитися, що саме)

AVReAl update — 1.28r10

Вийшла нова версія програматора avreal — v1.28r10 (Sun 2012-04-29).

  • Виправлено помилку розміру EEPROM для мікроконтролерів ATmega328, ATmega328P
  • Додано синонім для мікрокнтролера ATtiny84A
[flagcounter image]