AVReAl update — 1.28r10

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

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

scmRTOS 4.0 release

4 квітня (2012.04.04) нарешті вийшла «офіційна» версія 4.0 операційної системи scmRTOS.

Попередню версію по виправленні відомих помилок збережено в гілці scmrtos/tags/3.11.

Нова версія зафіксована в scmrtos/tags/4.00 та продовжує розвиватися в scmrtos/trunk.

»»» Дізнатися, що нового в з’явилося в scmRTOS 4.0

AVReAl та MPSSE

Деякі з мікросхем фірми FTDI мають вбудований апаратний блок послідовних інтерфейсів MPSSE, який призначено для реалізації інтерфейсів JTAG, SPI, I2C. FT2232D та її старіші версії FT2232C, FT2232L підтримують Full-Bandwidth USB та мають верхню межу частоти сигналу TCK/SCK 6 МГц. Для мікросхем, що працюють в стандарті USB 2.0 Hi-Speed, тобто FT2232H, FT4232H, FT232H, межа вища — 30 МГц.

MPSSE визначає використання ліній DBUS0..DBUS2 як сигналів TCK/SCK, TDI/MOSI та TDO/MISO. Для програмування мікроконтролерів AVR потрібен сигнал RESET, для якого можна використати лінію DBUS3 (TMS/CS), що і зроблено в AVReAl за замовчуванням.

»»» Використання MPSSE з AVReAl

AVReAl update — 1.28r9

Вийшла нова версія програматора avreal – v1.28r9 (Tue 2011-12-20).

  • Додано підтримку FT232H (режим MPSSE)
  • Змінено обробку затримок у Windows-версії: зменшено завантаження процесора при роботі з ключами -k/-K.
  • Для всіх мікроконтролерів змінено метод пересинхронізації (resync). Спочатку робиться одна спроба синхронізації імпульсом RESET, після чого виконується спосіб з додатковим імпульсом SCK.
    Більше про методи синхронізації.

Синхронізація ISP-програматора з AVR

Робота ISP-програматора з мікроконтролером AVR починається з активації сигналу скидання мікроконтролера, за якою йде передача по SPI команди входу в режим програмування. На момент активації сигналу RESET на вході SCK обов’язково має бути низький рівень. Якщо ця умова з якоїсь причини не виконується, то спад сигналу SCK вже після встановлення низького рівня на RESET призводить до непередбаченої зміни стану автомату програмування.

AVR programming waveforms

Цей зайвий спад спотворює наступну 4-байтову команду входу в програмування, мікроконтролер її не розпізнає і не переходить у потрібний режим. Зсув фази на один період SCK між програматором та мікроконтролером порушує байтову синхронізацію, тому нема сенсу просто передавати команду ще раз. Перед нею теж буде зайвий спад на SCK — під час передачі останнього біту попередньої команди.

Синхронізацію може бути втрачено і під час програмування, про це можна почитати в публікації про повідомлення «synchronisation lost» в AVReAl.

В документації на мікроконтролери AVR різних років розробки описано два способи відновлення синхронізації у випадку, якщо перша команда входу у режим програмування закінчилася невдачею.

»»» Дізнатися більше про способи пересинхронізації

AVReAl beta — 1.28r9b1

Вийшла бета-версія програматора avreal 1.28r9b1 з підтримкою FT232H.
Прохання до власників плат з мікросхемою FT232H перевірити роботу.

Linux32 avreal-1.28r9b1-linux32.zip
Linux64 avreal-1.28r9b1-linux64.zip
Win32 avreal-1.28r9b1-win32.zip

AVReAl 1.28r8 / FreeBSD

Я дійсно сильно затримався на FreeBSD 6.4, бо сам я не користуюся цією операційною системою і забув слідкувати за виходом нових версій.
Мене довелося підштовхнути до переходу на FreeBSD 8.2.

Перезібрав avreal-1.28r8 для 8.2 та після перевірки виклав на сторінці завантаження avreal поруч зі збіркою для 6.4.

Всі наступні версії збиратимуться вже лише для 8.2.

AVReAl update — 1.28r8

Вийшла нова версія програматора avreal – v1.28r8 (Sat 2011-08-13).

  • Додано підтримку двійкового формату файлів (raw binary).
    Формат задається префіксом :bin: в імені файлу.
  • Змінено поведінку ключа -r.
    При використанні ключа з модифікатором -r+ у вихідний файл записується весь вміст відповідного регіону пам’яті мікроконтролера, тобто поведінка відповідає «старій» поведінці ключа.
    Без модифікатора, у формі -r, у вихідний файл формату :ihex: не записуються рядки, які в полі даних мають лише байти FF. У файли формату :bin: не записується «хвіст», що складається лише з FF.

Використання секцій в GCC

Нехай перед нами стоїть наступна задача. Програма може складатися з набору модулів, які комбінуються в залежності від потреб. Кожен модуль має функцію, яка викликається при його виборі в простому меню на терміналі. Також є текстовий рядок та літера для меню. Ми хочемо автоматизувати процес збирання програми таким чином, що при підключення модуля в проект він «сам» ініціалізується і «реєструється» в програмі до початку роботи main(). В C++ це робиться за допомогою конструкторів, але при цьому розмір програми росте. В C можна в окремому файлі створити масив структур опису модулів і ініціалізувати його статично. Щоправда, при цьому доведеться ініціалізувати модулі окремим циклом на початку функції main() (теж трохи додаткового коду) та для формування масиву залежно від потреб використовувати #ifdef / #endif.

Зрозуміло, якщо «з першого акту на стіні висить рушниця» моделі «використання секцій», то тут стрілятиме саме вона.
»»» Читати далі — автоматизація реєстрації модулів за допомогою секцій…

Attached Files:

  • zip GCC sections usage demo

    avr-gcc, atmega168. Code::Blocks project with external makefile (can be used with any IDE or without IDE)

Секції .init в avr-gcc

Для програм, написаних мовою С чи С++, часто буває зручно, а іноді просто необхідно проініціалізувати якісь ресурси мікроконтролера до початку роботи фунцкії main() (для C++ — до початку роботи конструкторів статичних об’єктів). В багатьох системах програмування для цього використовується функція на зразок low_level_init(), яка викликається з С-шної «запускалки» (start-up module) і має бути визначеною десь в проекті. Якщо такої функції нема, тобто програміст її не написав у даному проекті, то з бібліотеки береться коротка «затичка» (stub), яка просто нічого не робить.

У avr-gcc це зроблено дещо по-іншому. Використовуються можливості системи програмування по обробці секцій (сегментів, sections, segments) програми. Вашій увазі пропонується невеличкий приклад з детальним описом.
Continue reading ‘Секції .init в avr-gcc’ »

Attached Files:

[flagcounter image]