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

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

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

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

Якщо був ключ -n, то не виконується програмування коду

Writing erase counter = 125
Programming CODE memory
 done (7.9ms)
Verifying CODE memory

	% Verifying from 0x1FFFE to 0x1FFFF   passed
 done (2.83ms)
Programming CODE memory

Synchronisation lost
Reset pin released

Якщо ключа -n не було, то не виконується програмування fuses

	% Verifying from 0x1E000 to 0x1EFFF  ........
	% Verifying from 0x1F000 to 0x1FFFF  ........ passed
 done (3.2s)
Programming fuses
	% Write Fuses	command AC A8 00 EB,  reply 00 87 31 03

Synchronisation lost
Reset pin released

Якщо ж верхні два байти не використовуться, то верифікація та програмування проходять нормально.

	% Verifying from 0x1E000 to 0x1EFFF  ........
	% Verifying from 0x1F000 to 0x1FFFD  ....... passed
 done (3.2s)
Programming fuses
	% Write Fuses	command AC A8 00 EB,  reply 00 AC A8 00
	% Write Fuses	command AC E0 00 F3,  reply EB AC E0 00

Відомо, що помилка проявляється для ATmega128 та не проявляється для ATmega8, ATmega168, atmga328P, ATmega64, ATmega325, ATmega2561.
Обійти цю помилку можна, розділивши програмування на кілька викликів avreal або використовуючи адаптери для LPT.


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

 


Ще — ото не треба було в таку спеку щоcь чіпати — в 1.28r3 під час виправлення однієї помилки було зроблено давно заплановану модифікацію коду роботи з fuses і це призвело до появи іншої. Тепер для деяких кристалів fuses, судячи з логів, пишуться та читаються нормально

Programming fuses
    % Write Fuses    command AC A0 00 E7,  reply 00 AC A0 00
    % Write Fuses    command AC A8 00 F9,  reply E7 AC A8 00
    % Write Fuses    command AC A4 00 FC,  reply F9 AC A4 00
    % Read Fuses    command 50 00 00 00,  reply FC 50 00 E7
    % Read Fuses    command 58 00 00 00,  reply 00 58 00 FF
    % Read Fuses    command 58 08 00 00,  reply 00 58 08 D9
    % Read Fuses    command 50 08 00 00,  reply 00 50 08 FC

але при верифікації avreal використовує помилкові дані та стверджує, що ф’юзи не співпадають.


Таким чином, до виходу наступної версії краще використовувати 1.28r2, у випадку використання верхніх адрес флеш-пам’яті та програматора на FT2232 писати ф’юзи окремим викликом або, якщо доповнення в 1.28r2 непотрібні, взяти версію 1.28r1.

«Прошу вибачення за завдані незручності»™


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

Leave a Reply

[flagcounter image]