Archive for the ‘AVReAl’ Category.

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 рік. І що до наступної осені я ще можу щось встигнути.

“B” and “not-B” AVRs

I am sorry, this text in English does not exist (yet).
I apologized there. Try google translate.


Від публікації огляду відмінностей між «A» і «не-A»-версіями мікроконтролерів AVR пройшло чимало часу і вже давно можна порівнювати «B»-версії. Таких мікроконтролерів ще небагато, але є на що подивитися. Errata на кристали я ще не вивчав, як там буде що важливе — доповню пізніше.

Раніше я вже коротко писав про ATmega48PB…168PB. ATmega328PB і ATmega324PB просунулися набагато далі, це вже практично нові мікроконтролери, сумісні по виводах з «not-B». Для всіх цих мікроконтролерів є спільний, з першого погляду непомітний, але важливий момент — DIP-корпусів більше нема. Тому тим, хто розраховує лише на них, далі можна не читати 😉

З точки зору програматора змінилися лише сигнатури (ідентифікатри) мікроконтролерів та додався один fuse в ATmega328PB і ATmega324PB. Він забороняє нову функцію (CFD, див. нижче) і з заводу запрограмований. Якщо його не треба міняти і якщо можна змусити програматор проігнорувати сигнатуру, то всі ці кристали можна прошивати як відповідні PA. Втім, в avreal ці мікроконтролери вже додано, а для всіх іншіх програматори це, думаю, зроблено давно 🙂

Можливо, цей список і не збільшуватиметься вже, бо анонсовано геть нові ATmega3208/3209/4808/4809 із суттєво збільшеним обсягом оперативної пам’яті (натомість зменшеною EEPROM) та розширеною периферією.

Отже, відмінності… » » »

AVReAl update — 1.29r1

avreal v1.29r1 (Sun 2018-02-11) has been released.

  • Added support for:
    • Attiny441, ATtiny841
    • ATmega48PB, ATmega88PB, ATmega168PB, ATmega328PB
    • ATmega324PB
  • The file with device serial number can now contain a 0x-prefixed hexadecimal number.
  • Fixed a bug where the character arrays for -h became too long and cuts off by vsnprintf(). But avreal was not crashes like avr-ld does.

    AVReAl update — 1.29r0

    avreal v1.29r0 (Wed 2013-12-11) has been released.

    • Switch -% replaced by message level switch -i;
    • If stdout is redirected to file critical messages are duplicated to stderr;
    • The final rejection of the switches grouping (-wv prohibited now, only -w -v allowed);
    • mega325PA, mega3250PA aliases added.

    OpenOCD та FTDI-MPSSE

    Зрідка щось пробуючи на LPC1766, вже доволі тривалий час не зазирав у новини OpenOCD. Як зібрав колись 6-тої версії, так і працював. Ще раніше, коли робив собі плату на FT2232H, трохи промахнувся і керування драйверами зробив несумісним з жодним з підтримуваних OpenOCD 6.x адаптерів. Тому для роботи з кортексами діставав напівмакетку (плата з FT2232D та шинником, перерізана на сумісність з Amontec JTAGkey).

    А оце підтягнув git-ом свіжий стан, а там вже 8.0. А з 7.0 вже для FTDI/MPSSE підтримується довільне призначення службових виводів (reset, керування драйверами). Навіть краще, ніж в avreal, бо можна задати довільне своє ім’я сигналу, прив’язати його до ніжки і керувати ним командами OpenOCD — інтерактивно або з командного рядка. Додав у makefile в частині формування командного рядка вмикання червоного світлодіода на початку програмування і вимикання в кінці. Все чудово запрацювало, через FT2232H програма зашивається у півтора-два рази швидше, ніж через FT2232D, веріфікується у три-чотири рази швидше. І таке враження, що і через FT2232D свіжа версія OpenOCD працює відчутно швидше, ніж 6.x, але вже ніде перевірити, а спеціально збирати ліньки.

    І дуже вчасно я сьогодні (хм… вже вчора) за це взявся — через хвилин двадцять після того, як зберіг на флешку конфігураційний файл та приклад makefile, подзвонив колега і сказав, що на роботі полетів J-Link. А там у мене точно така ж плата з FT2232H лежить.

    AVReAl update — 1.28r14

    avreal v1.28r14 (Mon 2013-08-05) has been released.

    • Error in ATmega128rfr2, ATmega256rfr2 signatures — fixed;
    • ATmega32HVE, ATmega64HVE added.

    AVReAl update — 1.28r13

    avreal v1.28r13 (Sun 2013-06-02) has been released.

    bug in resync (MPSSE)

    Bug was found in SCK-pulse synchronisation in following conditions:

    • firmware sets high level on SCK pin;
    • an MPSSE-based adapter is used (FT2232, FT4232, FT232H).

    Microcontroller can be programmed again via USB-based adapter after erasing via LPT-based adapter.

    In my case the bug appears with AT90S8515 but not reproduced for ATmega168.

    Bugfix will be published as soon as possible.


    The bug has been fixed in version 1.28r13.

    AVReAl update — 1.28r12

    avreal v1.28r12 (Fri 2013-01-04) has been released.

    • ATtiny828, ATmega64RFR2, ATmega128RFR2, ATmega256RFR2 added.
    • “A lot of dots” replaced with something more like a progress bar.

    «A»-AVR: POR

    Sorry, but this post is not available in English

    [flagcounter image]