Archive for the ‘Помилки’ Category.

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

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

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

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

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

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


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

Помилка в обробці ключа -v+

В avreal версій з 1.28r2 по 1.28r6 є помилка в обробці ключа -v+, тобто ключа -v з модифікатором +.
Помилково виконується перевірка на чистоту всього обсягу пам’яті мікроконтролера, а не лише адрес, не зайнятих вмістом hex-файлу. В результаті після першої ж верифікації робота припиняється і подальші операції, наприклад, запис fuses, не виконуютьcя.

Ключ -v без модифікатора працює нормально, тому рекомендується використовувати його.
Помилка не критична, буде виправлена в черговій версії avreal.

Чесно кажучи, я вже і не пам’ятаю з яких міркувань в avreal було додано можливість перевірки на 0xFF не задіяних у вхідному HEX-файлі позицій. Чи хтось колись просив зробити, чи мені самому раптом захотілося. Зараз от думаю, що особливої потреби в цьому і нема — при записові після стирання вони і так мали б бути стерті, а якщо дуже хочеться, можна ключ -b додати. При дозаписові якихось таблиць без стирання нема сенсу перевіряти на чистоту, бо в незайнятих цим HEX-файлом позиціях розміщено основний код.
А місце для внесення помилок додалося. Кажуть же, що «простота — запорука здоров’я» :-)
Може, пізніше я цей модифікатор приберу зовсім.


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

avreal/linux and libftd2xx.so.1.0.0 64-bit

На початку грудня FTDI зробила нам невеличкий подаруночок — випустила версію 1.0.0 бібліотеки libftd2xx.so (попередня версія була 0.4.16). Щось там, мабуть, дуже сильно покращили, але 64-бітна версія avreal/linux перестала працювати. В чому причина, явні помилки десь, чи «просто неохайний» код, через який вилізли проблеми в avreal, доведеться ще розбиратися. Поки-що я на сторінці download виклав архіви попередньої версії libftd2xx, з якою avreal працює стабільно.


Більше про це тут: «Подаруночок від FTDI»

Помилки в avreal 1.28r2 та 1.28r3

Виявилася доволі дивна помилка в avreal 1.28r2 та 1.28r3. При співпадінні умов

  • Використовується програматор на базі FT2232/FT4232
  • Зайняті верхні два байти флеш-пам’яті (кодом або лічильником стирань)
  • В одному виклику avreal виконується робота як з флеш пам’яттю, так і з ф’юзами
  • Присутній ключ верифікації -v

для деяких мікроконтроллерів після першої операції верифікації робота обривається на помилці synchronosation lost.

Continue reading ‘Помилки в avreal 1.28r2 та 1.28r3’ »

Помилка в обробці fuse

avreal не обробляє fuse з Extended Fuse byte для мікроконтроллерів ATmega16M1, ATmega32M1, ATmega64M1, ATmega32C1, ATmega64C1. При зчитуванні показує для всіх нульові значення (начебто прошиті), запис не виконується.


Виправлено в avreal 1.28rev3

bug in avreal -a swicth (1.28r0, 1.28r1)

При використанні ключа -a без хоча б одного з ключів -p чи +chip програма “падає” (“виконала неприпустиму операцію …” і так далі).
Вважаю цю помилку не критичною, бо при правильному використанні в комбінаціях -a -p або -a +chip програма працює нормально, а при неправильному нічого не ламає ні в мікроконтроллері, ні в операційній системі. Нова версія програми для виправлення цієї помилки випускатися не буде, виправлення буде додано пізніше в чергову версію.


Виправлено в avreal 1.28rev2

bug in avreal -n switch

Для комбінації ключів -n -v не проводиться аналіз зайнятості двох верхніх байтів пам’яті коду заданого мікроконтроллера у вхідному HEX-файлі. В результаті не проводиться верифікація цих байтів, бо вважається, що вони є лічильником зтирань.


Feb 8, 2010

Ні, помилки немає, помилка була при перевірці :-)
Є лише особливість функціонування.
avreal звіряє всі байти віхдного HEX з flash, просто мовчки ігнорує ключ -n.

bug in AVReAl 1.27r2

“це, мабуть, на погоду крутить” – за кілька днів прийшло двоє повідомлень про помилки в avreal версії 1.27r2.

Старіша з них прорилася ще десь між версіями 1.22rev9 та 1.23rev4 – при використанні -o0 та запису без опитування готовності (-w а не -wp) не програмувалися flash та eeprom. Причина була в знятті тактування мікроконтроллера по XTAL1 при програмуванні flash/eeprom. Схоже, всіма користувачами програми -o0 використовувався лише для відновлення потрібних fuses або просто після відновлення окремим викликом avreal кристал вже тактувався від внутрішнього генератора і все було нормально, тому помилку досі не було виявлено.

Також знайдено помилку в описі fuses для at90usb82/at90usb162, при уважному перегляді знайдено схожі помилки для atmega16u2, atmega32u2, atmega328P.

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

[flagcounter image]