Выбрать главу

Дополнительный ’+’ вызывает проверку на FF «свободных» с точки зрения НЕХ-файла позиций.

-1[+]# -1# — установить уровень защиты # = 1 or 2.

-1+# — то же самое, только lock биты прошиваются до зашивки fuses (необходимо для включения BODEN и залочки 90s4433 в одном цикле подачи питания).

-f<fuselist> — список fuses для тех чипов, в которых они шьются по ISP.

<fuselist> выглядит как fusename=value,fusename=value,alias,alias…

value — ШЕСТНАДЦАТЕРИЧНОЕ значение без префиксов и суффиксов.

Для однобитовых fuse добавлены значения ON и OFF (прошить и стереть, 0 и 1 соответственно).

alias'bi — это однобуквенные сокращения для fusename=value, соответствующие буквенным обозначениям в версиях avreal до 1.22.

При наличии «противоречивых» fusename=val и/или alias выдается сообщение об ошибке.

В целях совместимости с предыдущими версиями оставлена возможность перечисления alias-ов без разделения запятыми.

Перечень fusename с диапазоном value и комментарием, а также Допустимые alias'bi для конкретного чипа можно получить при помощи avreal +chipname -?

Если работа с fuses по SPI поддерживается, то их состояние сообщается при любой операции с чипом, задание ключа — F необязательно.

OSCCAL (Tiny12, Tiny15, Mega163) рассматривается как Read-Only fuse;-)

В случае наличия — F<fuselist> при — V производится верификация fuses.

Не упомянутые fuse остаются неизменными (кроме BLB для megal61, megal63, так как они могут быть стерты по — Е).

AVReAl обеспечивает также расширенную поддержку osccal (см. ниже)

Группа BLB относится скорее к lock-битам, записать 1 поверх уже запрограммированной в 0 fuse невозможно. Если запрошена такая операция и чип не стирался, то программа завершает работу с соответствующим предупреждением.

Для tiny12, tiny15 поддерживается программирование SPIEN и RSTDSBL, будьте осторожны, SPIEN по умолчанию запрограммировано, ключ — fspien=1 (-fspien=off) _сотрет_ SPIEN и запретит дальнейшее низковольтное программирование. То же произойдет и при _программировании_ RSTDSBL (-frstdsbl=0 или — frstdsbl=0).

-% — выдавать по ходу дела дополнительную информацию (производимые действия и ответы чипа). Внутри. bat-файпов следует писать — %% (пожалуй, это был неудачный выбор — символ, имеющий особый смысл в bat-файлах, но меняться уже не будет).

-! — делать, что велено, даже если чип не распознан (или распознан «не так», как задано в +<имя чипа>), а также, если не обнаружен указанный в командной строке адаптер. Попытка стереть нераспознанный (возможно, просто залоченный) чип при наличии команды стирания производится и без - после чего проводится повторное детектирование чипа.

Возможны осмысленные комбинации:

/vw — записать, проверить;

-e-wv+ — понятно;

-bw — проверить на чистоту, если не пустая — завершить работу, иначе записать.

После ключа -d идет имя файла данных, после — с — имя кода, в этом случае порядок файлов не важен. Пробел между ключами -c/-d и именами не обязателен, т. е. допустимо как -cfoo.hex, так и -с foo.hex.

Если дано два имени файла без ключей -с и -d, то первое имя — файл кода, второе — файл данных (EEPROM).

Если имя одно и нет ключей -c/-d, то этот файл содержит данные для кода, и если он содержит информацию после верхнего адреса FLASH для заданного кристалла, то эта информация используется для программирования EEPROM данных. То есть если, например, для 90s2313 hex-файл содержал данные в адресах от 0x800 до 0x87F, то эти данные будут записаны в EEPROM по адресам 0x00-0x7F.

Для Mega163 и Tiny12 поддерживаются особые формы ключей - с и -d для записи значения OSCCAL по адресу offset (шестнадцатеричное значение без префиксов и суффиксов). Байт (слово для '?') по offset должен существовать в исходном НЕХ-файле. Используется адрес байта, а не слова, в том числе и при обращении ко flash коду.

— d*osccal=offset — как байт в EEPROM данных;

— c*osccal=offset — как байт во FLASH коде (под команду LPM);

— c?osccal=offset — врезать OSCCAL как часть команды LDI по ofFset,ofFset+1.

Например:

public osccal_ldi

osccal_ldi:

ldi R16,0xFF

out OSCCAL,R16

Далее смотрим по MAP-файлу значение osccal ldi, например, оно вышло 0x120

avreal +tiny12 -ewv -с foo.hex -c?osccal=120

Группа ключей может задаваться как одним аргументом (-wv)? так и раздельно (-v -w). Ключ с параметром (-р -с -d) может стоять в группе только последним. То есть допустимо, скажем, такое:-) — wddata.hex -bv+c prog.hex -ер1

Порядок ключей не важен, выполнение производится в порядке Е B W V L.

Если проверка (В, V) дала отрицательный результат, то дальнейшая работа не производится. То есть — ebwv12