Изменения в программе
Обозначения.
- !!
- non-fixed bug :-(
- !
- bug fix
- +
- new feature
- *
- change feature
- -
- remove feature
- ?
- непонятки
Более подробно о внесенных изменениях смотрите в описании программы.
v1.26rev0 (Thu 2008-07-10)
WIN32, Linux, FreeBSD
- -
- DOS-версия больше не поддерживается
- *
- WIN32-версия динамически загружает DLportIO.dll при запуске под NT-линейкой и
использует прямой доступ к портам под WIN98 (т.е. под WIN98 можно не устанавливать
пакет DLportIO).
- +
- добавлены attiny167, atmega32U4, atmega32M1, atmega32C1, atmega1284P,
atmega8HVA, atmega16HVA, atmega32HVB
v1.25rev6 (Sun 2007-12-30)
DOS, WIN32,
Linux, FreeBSD
- !
- Dev ID для ATmega640 приведён в соответствие новой документации от Атмел
- !
- Исправлена ошибка в размерах FLASH и EEPROM для mega644, mega324p,
mega644p (шилось не более 16 килобайт)
- +
- добавлены at90usb646/647, at90usb82/162, at90pwm216/316, atmega48P/88P/168P/328P
v1.25rev5 (Tue 2007-01-15)
DOS, WIN32,
Linux, FreeBSD
- !
- Исправлена ошибка обработки счётчика стираний для кристаллов с более 128К памяти программ.
- !
- Исправлена ошибка в таблице кодов DevID для mega325..mega6450
- !
- WIN32-версия - исправлена выдача на консоль имён файлов в кириллице
- +
- Добавлены atmega165P/325P/3250P, atmega169P/329P/3290P, attiny261/461/861,
at90pwm1, atmega644/164P/324P/644P, at90usb1286/1287
v1.25rev4 (Fri 2006-03-24)
DOS, WIN32,
Linux, FreeBSD
- !
- Исправлена ошибка верификации и проверки на чистоту для кристаллов
с более 128К памяти программ.
- !
- Исправлена ошибка в определении границ перекрытия записей в HEX-файле.
- *
- При совпадении данных в перекрытых записях выдаётся предупреждение и
программа продолжает работу.
- +
- Добавлен at86rf401
v1.25rev3 (Thu 2006-02-09)
- !
- Исправлена ошибка в реализации mapped adpter для случая, когда
сигнал[ы] enable находятся в регистре данных LPT (касается также
адаптеров STK, так как они внутри были переведены на работу через
mapped adapter), приводившая в некоторых случаях к невозможности входа
в программирование.
- !
- Исправлены ошибки в описании кристаллов at90pwm2/pwm3 и attiny25..85,
приводившие к невозможности работы с этими кристаллами.
- *
- Работа с ByteBlaster/ByteBlasterMV/ByteBlaster-II также переведена
внутри на mapped adapter, теперь все адаптеры используют единый код.
- +
- Добавлены at90pwm2B/3B, attiny24/44/84, at90can32/64
v1.25rev2 (Thu 2005-04-26)
- +
- Добавлены at90pwm2/3, attiny25/45/85, atmega329/3290/649/6490,
atmega640/1280/1281/2560/2561
- +
- Добавлены формы ключа -b: -bc для проверки на чистоту только кода,
-bd для проверки только данных.
- +
- Добавлен анализ lock-битов и отказ выполнять операции, заблокированные
на данном уровне защиты.
- +
- Добавлены синонимы для имён fuses - параллельно работают как
"традиционные для avreal" имена, так и указанные в документации
на кристалл. Как обычно, все имена можно посмотреть по
avreal +chip_name -h
v1.25rev1 (Sat 2005-01-01)
- !
- Исправлена ошибка в реализации произвольного адаптера.
v1.25rev0 (Wen 2004-12-02)
- +
- возможность почти произвольно задавать
распайку адаптера
(линии mosi, sck, xtal, reset должны быть в регистре данных LPT).
- +
- Оптимизирована реализация программного SPI, до 30% ускорение обмена при
выскоих тактовых частотах процессоров.
- +
- добавлены atmega165, atmega325/3250, atmega645/6450
v1.24rev0 (2004-06-20)
av124r0.zip (~126KB)
- !
- Исправлена ошибка работы поллинга со страничными кристаллами при наличии
страниц, полностью заполненных FF и без команды стирания.
- !
- При изменении процедуры входа в программирование (1.23rev3) было забыто
про "особенности" кристалла at90s1200. Исправлено.
- +
- добавлены mega48, mega88, mega168, 90can128
- +
- добавлен дополнительный делитель на SCK при генерации XTAL
для работы ключа -o0 с кристаллами с зашитым CKDIV.
- +
- добавлена форма ключей -c -d для
записи последовательности байтов
v1.23rev4 (2004-01-18)
av123r4.zip (~124KB)
- !
- Исправлен формат вывода в сообщениях об ошибке при верификации fuses
(с десятичного на шестндцатеричный)
- !
- При добавлении сериализации кристаллов была сделана ошибка в обработке
ключа -с? (запись под команду LDI). Исправлено.
- !
- Убрана ошибка чтения при совместной работе ключей -! -n на
нераспознанном кристалле (ну когда уже перестанут применять 90s1200!!!)
- *
- При наличии ключа -! и ключа -e- EEPROM сохраняется/восстанавливается
даже если кристалл не нераспознан.
- +
- Добавлена поддержка Altera BYTEBLASTER-II, Xilinx Parallel Download Cable
- +
- Добавлен tiny2313
- +
- добавлена выдача на экран нового значения serno если запись в кристалл
прошла успешно, а запись нового значения в файл закончилась неудачей
v1.23rev3 (2003-09-07)
- !
- исправлена обработка кода и данных в одном файле (для кристаллов
с < 4K флеша происходил аварийный выход из программы)
- +
- Добавлен tiny13
- +
-
Добавлена специальная процедура стирания для tiny12 (описанный
в документации обход ошибки кристалла)
- *
-
Изменены процедуры входа в программирование и пересинхронизации
(для кристаллов mega8..mega128, tiny26, tiny13)
- *
-
Изменено программное формирование XTAL - теперь SCK и MOSI меняются
в момент спада XTAL, так как при изменении по фронту в зависимости от
характеристик порта LPT мог сбоить обмен.
- *
-
Убран поллинг для 90s1200, так как с ней он реально не работает.
- *
-
При наличии ключа -! и ключа -n счётчик стирания считывается из
кристалла, даже если он нераспознан.
v1.23rev2 (2003-05-15)
- !
- подправлена обработка ключа -p - задание времени обращения к порту
игнорировалось при указании адреса (а не номера) порта
- !
- Исправлен со 128 на 256 байт размер страницы для mega128, mega64
(шилось нормально и с неправильным, но дольше)
- +
- Добавлен поллинг при записи, модификатор p ключа
-w
v1.23rev1 (2003-04-13)
- !
- При комбинации -e- и файла для записи в EEPROM - не записывались
байты FF в EEPROM
- !
- При комбинации -e- -b сначала производилось восстановление EEPROM,
после чего не проходила проверка на чистоту.
- !
- При наличии формы ключей -c -d для записи OSCCAL, но без ключей -w
или -v
(т.е. при отсутствии файлов, в данные из которых надо было бы добавить
OSCCAL) происходил выход из программы по assert(). Теперь расширенные
формы -c -d без -w -v просто игнорируются.
- +
- Введена сериализация прошивок. Сериализация производится аналогично
зашивке байта OSCCAL - при помощи расширений ключей
-с и -d.
- +
- Перед записью OSCCAL можно подкорректировать,
увеличив или уменьшив его значение на заданное в командной строке число.
- *
- Игнорируются записи стартового адреса программы из hex-файла.
v1.23rev0 (2002-12-18)
- +
- добавлены новые кристаллы:
mega16, mega32, mega64, mega8515, mega8535, mega162, mega169, tiny26
- +
- введена поддержка нескольких байтов OSCCAL
- +
- в синтаксис ключа -o
добавлен модификатор частоты (Hz, kHz, MHz),
частоту можно задавать с плавающей точкой.
- +
- добавлено прямое задание байтов fuses, например,
-f_low=C4,_high=F8
- *
- ВНИМАНИЕ! УБРАНЫ aliases для fuse!
Т.е. теперь нельзя сказать -fb, надо говорить -fboden=0 или -fboden=on
А для короткой записи можно воспользоваться и прямым заданием байтов :-)
- *
- fuses для кристалла mega161 приведены в соответствие с новой
документацией (BODEN отсутствует, BLEVEL влияет только на
start-up timer и называется SUT).
v1.22rev9 (2002-09-02)
av122r9.zip (~115KB)
- !
- Для mega8 был неправильно составлен список fuses и указан размер страницы
флеш-памяти.
- !
- На всех кристаллах со страничной записью при наличии во входном файле
страниц, заполненных одними только FF, avreal посылал очень много
лишних команд записи страницы.
- !
- В конце справки по -h, перед выдачей ссылок на сайты, не производилась
проверка устройства вывода - экран или нет. В результате при
перенаправлении вывода в файл программа тоже останавливалась до нажатия
клавиши.
- *
- Собственно, это уже довольно давно - для зашивки fuses необходимо
дать не только ключ -f, но и -w (ну а для проверки -v). В описании
это было отражено сразу, а вот в history тогда не попало.
Поскольку описания читаются реже перечня изменений, была масса жалоб :-)
v1.22rev8 (2002-04-15)
- !
- Исправлена еще одна ошибка, внесенная на этапе rev5->rev6, не писалась
нормально EEPROM данных
- !
- В rev7 был выключен кусок кода, отвечающий за запись fuse в
свежедобавленные меги.
v1.22rev7 (Wen 13-Feb-2002)
- !
- Исправлена ошибка в работе с "обычными" кристаллами, которая была
внесена при обходе особенности записи слова кода для кристаллов
со страничной организацией флеша.
- +
- Добавлены mega8, mega16, mega128, mega323
- +
- Введена форма ключа -L+#
для зашивки lock-битов до зашивки fuses (необходимо для
включения BODEN и залочки 90s4433 в одном цикле подачи питания).
v1.22rev6 (Mon 21-Jan-2002)
- !
- фича "Если есть только имена файлов, то выполняется чтение" забывала
смотреть на наличие ключа -e. В результате при командной строке -e foo.hex
чип успешно стирался после чего foo.hex радостно переписывался поверх
содержимым стретого кристалла, все FF, а это уже баг.
Теперь чтение производится только при явном наличии -r.
- !
- Это скорее фича кристалла, нигде не описанная в документации.
Если для какого-то слова кода выдать одну команду записи байта, то в другой
байт этого слова будет записан предыдущий засылавшийся в чип байт
(похоже, это справедливо только для чипов с секторной организацией флеша).
Ситуация проявлялась только при наличии в HEX-файле только одного байта для
слова, например, в конце текстовой строки и при верификации по -v+.
Теперь ситуация проверяется, и во второй байт слова принудительно
прописывается FF.
- !
- При hex-файле, содержащем только концевую запись :00000001FF
avreal вываливался по assert. Теперь считает, что никакого
файла и не было.
- !
- После добавления возможности задавать содержимое flash и eeprom
в одном файле была по недосмотру оставлена отладочная запись
списков кода и данных в файлы hcode.hex и hdata.hex.
- *
- имена кристаллов для ключа +name могут задаваться как в виде,
выводимом по -h (например, 90s8515), так и с дополнительным
префиксом 'at' (например, at90s8515).
v1.22rev4 (Thu 09-Aug-2001)
- +
- Добавлена возможность задавать содержимое кода и данных в одном
файле, информация для EEPROM должна находится в HEX-файле начиная с
адреса, равного размеру кода для специфицированного в командной строке
кристалла. Для записи flash и EEPROM из одного файла необходимо задать
имя этого файла без ключей -с -d. Если хотя бы один из этих ключей задан
или задано два имени файла - информация для данных берется из своего
файла (либо не берется вовсе)
- +
- Добавлена возможность программировать fuse RSTDISBL и SPIEN для
tiny12, tiny15. Кому это не надо - будьте осторожны и помните,
что если сделать SPIEN=1 (стереть SPIEN) или RSTDISBL=0 (зашить),
то кристалл через байт-бластер уже не зашить. Для осторожных
добавлены мнемоники ON (0) и OFF (1) для однобитовых fuse,
например -fspien=ON,rstdisbl=OFF - нормальное состояние для tiny15.
"Во избежание" залочки через fuses чипа, у которого неудачно зашились
код или дата, несколько изменен порядок записи/верификации. Если заданы
и запись, и верификация в несколько мест, то
Было: Стало:
запись FLASH запись FLASH
запись EEPROM верификация FLASH
запись FUSES запись EEPROM
верификация FLASH верификация EEPROM
верификация EEPROM запись FUSES
верификация FUSES верификация FUSES
Естественно, прекращение дальнейшей работы при первой неверификации.
v1.22rev3 (Sun 17-06-2001)
- +
- Добавлена расширенная поддержка osccal для tiny15
v1.22rev2 (Wed 23-05-2001)
Особое спасибо Ignat Olenchuk за обнаружение глюка в 1.22rev0 и
тестирование на своих многострадальных кристаллах.
- !
-
Убрана ошибка, приводившая к стиранию "несуществующих" fuses,
а SPIEN и RSTDSBL для tiny12, tiny15 не были прописаны в таблицах
и как бы "не существовали".
Работа с tiny12, tiny15 разрешена.
v1.22rev1 (Thu 03-05-2001)
- !!
-
:-( непонятки с SPIEN для tiny12, tiny15. Вроде бы должно
писаться назад в кристал прочитанное значение ('0' - SPI enabled),
но этого не происходит. SPIEN снимается со всеми вытекающими.
Пока эти два кристалла просто заблокированы.
v1.22rev0 (Mon 30-04-2001)
Мои благодарности за тестирование avreal на новых чипах
Gavrilenko Igor, Titov Alexey, Alexey Voroshen
(а Игорю еще и за полезные обсуждения :-)
- +
- добавлены tiny12, tiny15, mega161, mega163
- +
- OSCCAL рассматривается как Read-Only fuse и сообщается при
обращении к чипу
- +
- расширен формат задания fuses в командной строке (оставлена
совместимость со старым). Также изменена логика работы с fuse,
не упомянутые в ключе -f теперь
ОСТАЮТСЯ НЕИЗМЕНЕННЫМИ, их верификация не производится.
- +
-
Несколько расширен синтаксис
ключей -с и -d, позволяющий в процессе
программирования записать прочитанное из чипа значение OSCCAL
в память данных или кода (в последнем случае возможна запись как
части команды LDI процессора)
- *
- +name теперь обязательно, использование 90s1200 "по умолчанию"
не производится.
- *
-
В силу обязательности +name ключ '--' потерял смысл (если
задан только чип, то уже будет произведен его сброс, а если
чип не был задан, то и сбрасывать некого) и ИСКЛЮЧЕН.
v1.21rev0 (Thu 15-02-2001)
- +
- Добавлена возможность генерировать XTAL для микроконтроллера (ключ
-o0) при использовании буферизованных адаптеров STK (XTAL
генерируется по линии LED) и ByteBalster (байт-бластер должен быть
модифицирован, XTAL берется с
вывода 8, помеченного у меня ранее как "пока не используется").
- !
- При нераспознанном чипе даже при наличии -! не производилась запись
счетчика стираний по -n
v1.20rev7 (Mon 05-02-2001)
av120r7.zip (~100KB)
- *
- Действие ключа -!
расширено также и на тип адаптера. Т.е. если
задан конкретно ByteBlaster или STK*00 (а не автовыбор между ними),
то даже при нераспознанном адаптере используется указанный в
командной строке.
v1.20rev6 (Fri 02-02-2001)
- !
- Правка мелких, но очень тупых и обидных :-( описок при в форматных
строках при выдаче типа адаптера.
v1.20rev5 (Fri 26-01-2001)
- !
- Наконец-то исправлена старая плюха - при наличии счетчика
стираний даже при указании -n
не удавалось проверить чип на чистоту
(имеются ввиду остальные ячейки кода) так как проверялся весь диапазон
адресов, включая две верхние ячейки.
- +
- Добавлена проверка записей HEX-файла на перекрытие. При нахождении первого
перекрытия производится выход из программы с указанием диапазона адресов
перекрывающихся данных.
v1.20rev4 (Thu 19-10-2000)
- !
- В процессе модификации исходников таким образом, чтобы они
компилировались и под LINUX добавились ошибки. Убрана одна из них - в
случае несовпадения при верификации программатор не отключался от
чипа. Остальные пока не обнаружены...
v1.20rev3 (Mon 09-10-2000)
- !
- убрана ошибка в обработке ключа -p с базовым адресом порта
- *
- DOS-версия теперь также компилируется в BC5.02 (а не в BC3.1, как раньше).
- +
- Добавился третий вариант программы - под LINUX.
v1.20rev2 (Tue 15-08-2000)
- !
- исправлена некорректная обработка ключей -c -d при отсутствии имени
файла
v1.20rev1 (Sun 09-04-2000)
- !
- убрана ошибка в обработке ключа -ap
v1.20rev0 (Sun 26-03-2000)
- +
- Теперь параллельно ведутся две версии, отличающиеся только процедурами
работы с LPT/отработкой задержек: avreal.exe - DOS (80286+) avreal32.exe -
win32 (80486+) Подробности работы с win32 версией см. в описании программы.
- +
- Появилась поддержка адаптера Atmel STK (ключ
-as), а также автоматическое
определение адаптера из STK/ByteBlaster (ключ -aa).
- +
- Проверяется наличие запрошенного адаптера (кроме "fbprg"), проверка
начинается с установки LPT-порта в состояние, при котором запрещены
формирователи как в STK*00, так и в ABB.
- *
- У ключа -p появился второй параметр -
скорость обращения к LPT порту (подробнее см. описание программы).
- *
- Изменена процедура разрешения работы адаптера.
- Было:
- Ставим на выходы SCK=0, RESET=active
Разрешаем формирователи
- Стало:
- Ставим на выходы SCK=0, RESET=NOT active
Разрешаем формирователи
Ставим на выходы SCK=0, RESET=active
В результате вход в синхронизм с первой попытки, но возможен конфликт на линиях SCK, MOSI.
- *
- Мне надоело манипулировать операциями /,% (div, mod) для вывода чисел в
виде с плавающей запятой, но используя только целочисленную арифметику. Я стал
пользоваться числами с плавающей запятой и их вводом-выводом, но, поскольку
дос-версия поддерживает 80286+, а "двоечки" чаще всего были без сопроцессора -
для этой версии подлинковал эмулятор. Размер avreal.exe сильно вырос именно
поэтому :-).
v1.14rev6 (Mon 03-01-2000)
av114r6.zip(~27KB)
- *
- В порту управления LPT изменяются только те биты, которые нужны при работе
(бит hi-Z состояния выходов и при ключе -ab разрешение работы ByteBlaster
через AutoLF). В 1.14rev5 это было недоделано - оставалось обнуление порта
управления при калибровке скорости обращения.
- *
- Отредактирована таблица чипов, заменен ID для 90s2323 с 1E9104 на 1E9102
(в соответствии с изменением генеральной линии, отраженном в doc1004 версии B
по сравнению с версией A)
- *
- Частота генератора по умолчанию измененя на 800kHz (частота внутреннего
RC-генератора при 5V с некоторым запасом)
v1.14rev5 (Mon 03-01-2000)
- !
- при наличии одного из ключей (-1..-5)
и одного из ключей (-n,
-e-) времена
умножались на соответствующий множитель дважды.
- *
- Изменена обработка прочитанного из чипа DevID и запрошенного по +name
имени для корректной работы в ситуациях "один чип - два ID" (mega103 разных
версий кристалла) и "два
чипа - один ID" (90s4434 по даташиту 1041C(11/98) имеет такой же ID, как
90s4433, по 1041E(04/99) уже не такой, но мало ли)
v1.14rev3 (Tue 23-11-99)
- +
- Добавлен в таблицу tiny22
- +
- Добавлен ключ времени неактивного Reset после стирания
-ai
- *
- Запятые в ключе -f игнорируются,
допустимо -f0,e. Позже будет что-то типа
-fCKSEL=0,EESAVE=ON а нынешние буквы для -f будут назначены
как aliases на конкретные значения.
- *
- Увеличены времена "отстоя" при питании от LPT
- *
- Переделана процедура сброса - не делается попытка гарантирования SCK=0
путем короткого нективного reset уже после сброса чипа. Для имеющих resync
чипов это несущественно, но иногда мешает из-за негарантированности
длительности. Для не имеющих resync (90s1200) возможно возникнут
трудности.
v1.14rev2 (Sun 07-11-99)
- +
- 90s2333,90s4433 - добавлены входы в таблицу чипов для megaX03 добавлены
"новые" сигнатуры
v1.14rev1 (Sun 17-10-99)
- ?
- Не хочет нормально работать под W98 при отсчете задержек через TIMER0 -
попытка исправить отработкой времен только через LPT
v1.14rev0 (Mon 21-06-99)
- !
- (значок не совсем подходит :-(, но отдельный не заведен). Теперь сначала в
память "оглашается весь список", только потом производится его сортировка.
Поначалу я крепко ламернул ("списки короткие, машины быстрые") и каждую новую
запись из HEX-файла помещал на нужное место в список, еще и не оптимальным
образом. Для больших файлов с перемешанными записями тормоза оказались жуткие,
нет - ЖУТКИЕ!, прошу прощения у мучившихся.
- !
- :-) убрано число 13 из номера версии, как многие советовали. И дело тут
вовсе не в суеверии, а в том, что 13 - число несчастливое :-) (C) оперетта
"Белая акация"
- +
- добавлен модификатор '+' для ключа -w
- +
- добавлен "laZyBlaster" (-az)
v1.13rev0b (Fri 23-04-99)
- !
- Убран завис программы для чипов, в принципе имеющих доступные по SPI на
запись FUSES.
- ?
- В 90s8535 FASTSTART fuse вроде бы как прописывается, но действий вроде бы
как не производит. Что глючит (avreal, чип, луна со своей фазой) - непонятно.
Сам не пробовал.
v1.13rev0 (Sat 27-03-99)
- !!
- при наборе ключей -ebn говорит, что чип не стерт, т.е. не может выполнить
проверку на чистоту [S.Budakow]
- +
- добавлена работа с FUSES.
- +
- Пустые строки и строки, начинающиеся с '#' игнорируются во входных
HEX-файлах (облегчение патчей по HEX и вспоминаний, что это за файл; более
естественный для комментариев символ ';' был отброшен как слишком похожий
на ':')
v1.12
- !
- исправлены ошибки в обработке ситуации с нераспознанным чипом, приводившие
к вываливанию по assert вместо объяснения причины и корректного выхода из
программы [Serge Budakow]
- *
- При пустой командной строке никаких действий не производится Добавлен ключ
'--', просто делающий командную строку непустой для сброса чипа.
- *
- Удлиннение времен программирования при пониженном напряжении питания:
Изменен множитель для -3 (стало *3), добавлены
-1, -2, -4, -5 ( *1.5,
*2, *4, *5 соответственно) [Alexey Boyko]
- +
- Сделан вывод help на дисплей фрагментами меньше 25 строк [Andy
Chernyshenko]. При выдаче help в файл ( avreal -? >somefile ) ожидание
нажатия любой клавиши не производится.
- +
- В таблицу чипов введены все известные мне на момент компиляции чипы. При
выводе списка звездочкой помечены те, работа с которыми не тестировались (мной
либо кем-то другим).
- +
- Компилируется для 80286 процессора [Vyacheslav Ovsienko]
до v1.12
много всяких фиксов, спасибо всем, кто проверял и ругался.