Index

Введение

ORANGE-5 - универсальный программатор микросхем Serial EEPROM и микроконтроллеров. Программатор предназначен для чтения и верификации и записи информации в программируемые запоминающие устройства различных серий.

Возможности

  • Чтение, запись и верификация микросхем памяти и микроконтроллеров
  • В отличие от других программаторов, все алгоритмы чтения и записи написаны на специальном макроязыке HPL, что позволяет пользователю не только изучать и корректировать протоколы обмена, но и самостоятельно добавлять любые типы SEEPROM и MCU.
  • Чтение и запись файлов в bin и hex форматах. Чтение файлов в e2p формате.
  • Редактирование буфера обмена в шестнадцатеричном и символьном виде.
  • Возможность записи выделенной области буфера редактирования в EEPROM.
  • Поддержка системного буфера обмена (clipboard).


Начинающим

Работа с программатором.
Первые шаги.

1. Установка.

  1. Выключите ПК
  2. Включите ПК
  3. Скопируйте программу с CD на HDD или распакуйте архив, скачанный с сайта. Программа также работоспособна при запуске с USB/FLASH карты.
  4. Соедините кабелем из комплекта поставки программатор с USB портом компьютера
  5. При обнаружении нового устройства Windows потребует установить драйвер. Драйвер USB расположен в каталоге DRIVER
  6. После установки драйвера перезапустите ПК.
После корректной установки зеленый светодиод на программаторе должен гореть непрерывно при отсутствии обращений к программатору. Мигающий светодиод означает, что драйвера не установлены, либо неисправен ПК, программатор или USB кабель.

2. Запуск.

  1. Запустите программу Orange.exe
  2. Для переключения интерфейса и справочной системы на русский язык выберите в меню Options - Language - Russian. Перезапустите программу.
  3. При первом запуске рекомендуется проверить исправность программатора и правильность подключения. Для этого в меню Опции - Программатор нажать кнопку "Тест". При этом в панели не должно быть микросхем. При нахождении неисправностей выдается соответствующее сообщение.

3. Программирование.

  1. Выберите требуемый тип микросхемы в меню. Большинство микросхем 24 25 и 93 серии имеют унифицированную систему команд и расположение выводов. Это значит, что микросхема AT24C02 может быть выбрана в меню и как Atmel AT24C02, и как I2C 24C02. Однако, при наличии в списке микросхем точного соответствия, следует выбирать именно его, поскольку в этом случае программатор оптимально выбирает параметры программирования.
    Определить фирму можно по логотипу на корпусе либо по первым буквам маркировки. Также возможно определение в режиме поиска в окне выбора типа.
  2. Поставьте рычаг ZIF панельки в верхнее положение и установите микросхему в панельку. Зажмите микросхему поворотом рычага в нижнее положение. Программатор Orange5 имеет одну 16-выводную панельку. Практически все микросхемы SEEPROM в 8-выводном корпусе устанавливаются в переднюю половину панельки (первым выводом к рычагу ZIF).
    Микросхемы с интерфейсом Microwire в корпусе SOIC8 выпускаются в 2 вариантах с различным расположением выводов.
    Стандартный вариант устанавливается в левую часть панельки.
    "Rotated" вариант устанавливается в правую часть - 1 вывод попадает на 5 ножку панельки.
    Определить вариант можно как по документации производителя, так и по разводке цепей питания в схеме.

    Для выпаянных микросхем следует очистить выводы от остатков припоя и флюса. В противном случае это приведет к проблемам при программировании и загрязнению панели.
  3. Некоторые типы микросхем памяти и микроконтроллеры программируются только через специальные адаптеры. Информация о требуемом адаптере отображается в информационной строке программатора. Установите адаптер в разъем расширения и вставьте в него микросхему.
  4. Для чтения содержимого памяти нажмите кнопку F5 либо выберите в меню пункт Команды - Чтение. При этом должен загореться светодиод на плате программатора и появится окно с индикатором процесса. Для микросхем большого объема процесс чтения и записи может занимать достаточно большое время.
  5. После окончания чтения светодиод должен потухнуть и в окне буфера отобразится содержимое памяти. Для надежности можно проверить стабильность чтения, повторив несколько раз команду сравнения (F7). При этом отличий быть не должно.
  6. Не забудьте сохранить прочитанные данные в файл. (Файл - Сохранить как).
  7. Для записи новых данных в микросхему загрузите прошивку из файла в буфер программатора (Файл - Открыть).
  8. Нажмите кнопку Запись (F6).При этом должен загореться светодиод на плате программатора и появится окно с индикатором процесса. Программатор проверяет правильность записи автоматически. Также можно проверить правильность после окончания записи с помощью команды сравнения.
  9. После завершения работы поднять рычаг панели и извлечь микросхему.
    10. Перед началом работы с микроконтроллерами, имеющими функции защиты от чтения/записи ознакомьтесь с соответствующим разделом справки.

4. Хранение.

  1. При длительном не использовании отключайте программатор от сети. Закрывайте панели программатора для исключения попадания пыли. Не допускайте переламывания кабеля.


System Requirements

Требования к конфигурации компьютера

Программаторы ORANGE нормально функционируют на ПК со слеследующими параметрами:

  • Компьютер IBM PC/AT либо совместимый с ними;
  • Процессор Pentium и выше;
  • VGA (SVGA) - совместимый видеоадаптер;
  • Свободный USB 2.0 порт
  • устройство "МЫШЬ"- (рекомендуется);
  • Операционная система MS Windows 2000/XP (tm);
  • 32 Mb ОЗУ (64 для W2000);
  • Как минимум 1Mb на жестком диске.


Install

Подключение и инсталляция программы

  1. Выключите ПК
  2. Включите ПК
  3. Скопируйте программу с CD на HDD или распакуйте архив, скачанный с сайта
  4. Соедините кабелем из комплекта поставки программатор с USB портом компьютера
  5. При обнаружении нового устройства Windows потребует установить драйвер. Драйвер USB расположен в каталоге DRIVER
  6. После установки драйвера перезапустите ПК.
  7. Запустите программу Orange.exe
  8. Программатор готов к работе.
  9. При первом запуске рекомендуется проверить исправность программатора и правильность подключения. Для этого в меню Опции - Программатор нажать кнопку "Тест". При этом в панели не должно быть микросхем. При нахождении неисправностей выдается соответствующее сообщение.


Menu

Работа с меню

Для выбора элементов меню следует нажать клавишу Alt и подвести маркер к нужному элементу клавишами управления курсора (со стрелками) либо выбрать нужный пункт указателем мыши.

  • File (Файл)
    - New - новый файл
    - Open file - чтение файла в буфер
    - Save - запись файла
    - Save as - запись файла c новым именем
    - Descriptions - просмотр и редактирование описаний.
    - Recent - Имена последних четырех рабочих файлов для их загрузки.
    - Exit - Выход

  • Buffer (Буфер) - операции с буфером:
    - Copy - копировать выделенную область буфера
    - Paste - вставка скопированной области
    - Search - поиск шестнадцатеричной строки в буфере. Допустимо использовать символ '?' для замены произвольного байта или полубайта.
    - Replace - замена. Обработка строки поиска аналогична Search.
    - Select Block - выделение блока по заданным адресам
    - Fill Buffer - заполнение константой или последовательностью
    - Xor Buffer - Исключающее ИЛИ константы и буфера
    - Swap bytes - перестановка соседних байт.
    - Swap nibbles - перестановка полубайтов в байте.
    - Swap bits - перестановка битов в байте.
    - Checksum - подсчет контрольной суммы (3 алгоритма).
    - Registers - редактирование пользовательских регистров (если они заданы).

  • Device (Команды)
    - Read - чтение микросхемы
    - Write - запись микросхемы
    - Modify - запись только отмеченных байт
    - Compare - сравнение буфера c микросхемой с отметкой несовпадений
    - Difference - сравнение буфера c микросхемой с построением таблицы

  • Tools (Инструменты)
    - Calculator - Вызов встроенного Калькулятора.
    - Pin Tester - Окно ручного управления выводами.
    - Statistic - Статистический анализатор содержимого буфера.

  • Options (Настройки)
    General - установка общих параметров
    - Force write - принудительная запись всего буфера (иначе пишутся только необходимые байты)
    - Verify during write - выполнять контрольное сравнение при записи слова
    - Verify After write - выполнять сравнение после окончания записи (сравнение не выполняется в режиме записи "Modify")
    - Block mode enable - разрешение блочного чтения/записи
    - Confirmation - Подтверждение операций
    - Button Bar - Панель дополнительных кнопок (для пользовательских секций HPL)
    - Autosave - Автоматическое сохранение опций

    Hardware - выбор типа программатора и номера LPT порта. Тестирование подключенного программатора.

    Editor - Параметры шестнадцатеричного редактора
    - Mark clear - снимать выделение после операции
    - 16 bit editor - 16-битный режим редактирования
    - ANSI-OEM conversion - перекодировка символов для ASCII поля редактора.
    - Show gridlines - отображение сетки
    - Read only - запрет редактирования буфера
    - Default buffer value - шестнадцатеричное число, определяющее начальное заполнение буфера

    Files - Настройки файловых операций
    - Check file size - проверка размера файла при загрузке.
    - Mark load data - выделение загруженной области в редакторе.
    - Descriptions - Поддержка файлов описаний.
    - Swap 16-bit files - Перестановка старших и младших байт в бинарных файлах для 16-разряжных микросхем.
    Внимание! При установке данной опции записанные файлы будут несовместимы со стандартными файлами Orange.
    - Backup files - число сохраняемых архивных файлов при чтении микросхем. файлы сохраняются в каталог BACKUP. 0 - отключение архивирования.
    Device - Параметры текущей микросхемы
    Colors - Настройка цветов
    Language - Выбор языка программы (русский, английский). Смена языка происходит после перезагрузки программы.
    Compare mode - Режим сравнения в редакторе.
    Debug - включение отладочного режима.

  • Type - Выбор типа микросхемы

  • Help
    Help - Справочная система к программе
    Chip info - Дополнительная информация о микросхеме (INFOFILE)
    Chip pinout - Расположение выводов микросхемы.
    System info - Информация о системе.
    About Orange - Версия программы.

Наиболее часто используемые функции могут быть вызваны с помощью комбинации клавиш:
F1 | Вызов справки
Shift-F1 | Расположение выводов микросхемы
F5 | Чтение
Shift-F5 | Чтение выделенного блока
F6 | Запись
Shift-F6 | Запись выделенного блока
F7 | Сравнение микросхемы с буфером
Shift-F7 | Сравнение в виде таблицы
Ctrl-F7 | Сравнение с файлом
Ctrl-A | Выделить весь буфер
Ctrl-С | Копировать в буфер обмена
Ctrl-M | Переход на следующий выделенный байт
Ctrl-N | Новый файл (очистка буфера)
Ctrl-O | Открыть файл
Ctrl-P | Переключение режима управления питанием
Ctrl-S | Сохранить файл
Ctrl-V | Вставить из буфера обмена
Ctrl-F1..F5 | Вызов пользовательских функций


Editor

Редактор

Редактор предназначен для шестнадцатеричного и символьного редактирования содержимого буфера.
В верхнем столбце окна отображаются адреса байтов в строке. Правый столбец отображает адреса редактирования. Адрес текущего байта равен сумме адреса строки и адреса столбца. Его также можно узнать в строке дополнительной информации. Нажатие левой кнопки мыши на столбце адресов открывает окно перехода на заданный адрес.

Основное поле разбито на 2 части, в левой отображаются шестнадцатеричные значения, в правой - соответствующие символьные коды. Выделение блока производится нажатием и удержанием левой кнопки мыши и перемещением курсора. При нажатии на правую кнопку мыши вызывается контекстное меню.

В зависимости от выбранного типа EPROM автоматически включается 8 или 16-битный режим. Порядок отображения байт и ASCII символов в этих режимах не совпадает!

"Горячие клавиши" редактора
Tab | переключение HEX/ASCII
Ins | выделение байта (установка/сброс) (или двойной щелчок левой кнопкой мыши)
Gray - | отменить выделение
Gray + | установить выделение для всего буфера
Gray * | инвертировать выделение
Ctrl-B | Начало блока
Ctrl-C | копировать блок
Ctrl-E | Конец блока
Ctrl-M | Переход на следующий выделенный байт
Ctrl-T | Проверка установки
Ctrl-V | вставить блок
PageUp | страница вверх
PageDown | страница вниз
Ctrl PgUp | начало буфера
Ctrl Home | начало буфера
Ctrl PgDn | конец буфера
Ctrl End | конец буфера чипа
Home | начало строки
End | конец строки
BackSpace | переход на предыдущий байт (символ)

Строка статуса

Строка статуса находится внизу экрана. Строка статуса отображает тип микросхемы, панель для установки и состояние служебных клавиш. Список областей памяти отображается только для микросхем, имеющих более одной области.


Type

Установка типа микросхемы

Выбор типа микросхемы производится с помощью команды меню Type либо кнопкой "Выбор типа" на панели кнопок.

Окно выбора содержит два столбца: Группа и Микросхема. Все микросхемы разбиты по группам в соответствии с фирмой-производителем или функциональным характеристикам. При смене группы список микросхем в правом окне обновляется автоматически. Управление производится не только с помощью мыши, но также курсорными клавишами.
Быстрый переход к нужному названию осуществляется с помощью нажатия первой буквы названия на клавиатуре. Для подтверждения выбора - двойной щелчок левой клавиши мыши или кнопка "OK",

Для поиска нужной микросхемы установить режим "Поиск" (Search) и вводить цифры (либо цифры и буквы) названия микросхемы. Курсор утсановится на первую подходящую пр названию микросхему.

Типы и параметры задаются в файле orange.cfg.
Текущий тип и параметры микросхемы отображаются в нижнем информационном окне.


cfg

Конфигурационный файл

В конфигурационном файле orange.cfg задается:

GROUP - Название группы:
(*) GROUP=MicroWire
Все чипы описанные до следующего раздела GROUP или до конца файла относятся к данной группе.

CHIP - Описание микросхемы:
CHIP=NAME,SIZExORG(BLKSIZE),HPLNAME
(*) CHIP=93C56,128x16,93c66.hpl
где: 93С56 - название микросхемы
128x16 - объем (емкость) памяти и разрядность. Если разрядность равна 8, ее можно не задавать. Размер можно задавать и в килобайтах. Значение передается в модуль через параметр $SIZE. Если вместо числа в поле объем вставлен символ '?', объем устанавливается по прошлому значению или по объему загружаемого файла.
93c66.hpl - имя HPL файла
Если микросхема имеет режим блочного чтения/записи, размер блоков задается в скобках после объема:
(*) CHIP=24C64,8K(16/8),24c512.hpl
Где 16 - размер блока чтения
8 - размер блока записи
Если размеры совпадают, можно задавать только одно число. Значение передается в модуль через параметр $BLOCKSIZE

AREA - описание области памяти:
AREA=NAME,SIZExORG(BLKSIZE),ADR,BUF-ADR,FLAGS
(*) AREA=DATA,128,0,0x4200,b
Где DATA - имя области
128 - размер,
0 - адрес в микросхеме
0x4200 - адрес в буфере
b - конвертирование области памяти (для PIC контроллеров)
r - чтение области запрещено.
m - модификация области запрещена.
w - запись области запрещена.

Поля ADR,BUF-ADR,FLAGS могут быть незаполнены. Если BUF-ADR равен 0, адрес размещения области в буфере устанавливатеся программой на конец предыдущей области.

 VCC - напряжения питания в милливольтах:
(*) VCC=5000

BAUD - скорость обмена по UART, при указании двух значений, первое является начальным, второе - рабочим.

IMAGE - имя картинки или файла описания. Для одной мс может быть задано до 4 разных корпусов

Все HPL файлы располагаются в подкаталоге HPL\. Загрузка файла производится при выборе соответствующего типа в меню. Один HPL модуль может соответствовать нескольким типам микросхем различного объема.
Windows-версия программы поддерживает работу с несколькими конфигурационными файлами. Они могут иметь любые имена и располагатся в каталоге с программой. Выбор рабочего конфинурационного файла в этом случае производится в меню выбора микросхемы.


Организация защиты в микроконтроллерах Motorola.

HC05

В микроконтроллерах серии HC05 защита активируется путем установки в ноль SEC бита в Options register (OPTR). Для 05B и 05x этот регистр расположен в первой ячейке EEPROM (адрес $0100).
После активации SEC процессор не может быть запущен в режиме Serial RAM loader, и соответственно чтение и запись памяти невозможны. Для работы с защищенными процессорами следует использовать функцию Skip SEC (Обход SEC) программатора Orange5.
Внимание! В некоторых образцах загрузчик модифицирован производителем таким образом, что при этом в режиме Serial RAM loader происходит стирание EEPROM. В таких случаях следует сразу использовать функцию Skip SEC, а не Boot!
Функция Skip SEC не меняет состояния SEC бита. Для отключения защиты следует модифицировать регистр OPTR.

HC08

В HC08 Область FLASH, а иногда и EEPROM защищены от чтения 8-байтным паролем. Паролем является значение FLASH памяти по адресам $FFF6-$FFFD. При неверном пароле из всех ячеек памяти будет читаться константа 0xAD, либо хаотическая информация.
Для работы с защитой выбрать в меню Skip SEC. Если пароль известен, введите его в окне SSCode. или выберите из списка известных паролей (список хранится в файле hc08sec.ini). Для определения неизвестного пароля для 908AS60(A)/908AZ60(A) нажать кнопку Scan. Процесс определения занимает до 10 минут. Если процесс завершается успешно, в окне отображается найденный пароль.
В режимах поиска пароля питание процессора должно подаваться от программатора.

HC11

В микроконтроллерах серии HC11 защита активируется путем установки в ноль SEC бита в CONFIG register (адрес $003F).
После активации SEC попытка чтения приводит к стиранию EEPROM и CONFIG. Для работы с защищенными процессорами следует использовать функцию Skip SEC (Обход SEC) программатора Orange5. Перед выполнением обхода программатор проверяет состояние SEC, и выдает соответствующее сообщение. эта операция безопасна и не приводит к стиранию памяти.
В некоторых типах, например 11PA8, SEC бит работает так же, как в HC05, т.е. EEPROM не стирается.
Функция Skip SEC не меняет состояния SEC бита. После загрузки процессора с помощью Skip SEC прочитать реальное значение CONFIG невозможно. Если требуется определить значение CONFIG, следует выполнить следующую последовательность действий:
1. Выполнить Skip SEC, потом прочитать EEPROM и сохранить в файл.
2. Выполнить Boot, сразу после этого прочитать содержимое CONFIG, запомнить.
3. Повторить Boot, записать EEPROM и CONFIG.

HC12

В HC12 возможна блокировка BDM-интерфеса микроконтроллера. Внутрисхемное чтение и запись в этом случае невозможны. В серии HCS12 возможна защита паролем содержимого FLASH и EEPROM. Для определния защиты FLASH в серии 9S12 следует прочитать значение регистра FSEC. Младшие 2 бита этого регистра SEC[1:0] соответствуют:
00 secured
01 secured
10 unsecured
11 secured.

Старший бит KEYEN определяет парольную защиту:
1 = backdoor to Flash is enabled.
0 = backdoor to Flash is disabled.


Калькулятор

Встроенный калькулятор выполняет арифметические операции с 32-разрядными данными поддерживает запись формул в прямом виде с выдачей результата в шестнадцатеричном, десятичном и двоичном виде.
Калькулятор может быть вызван 2 способами:
1 - Стандартный режим: Меню>Настройки>Калькулятор.
2 - Контекстный режим: Правая клавиша мыши в редакторе>Редактор. В этом случае результат вычислений записывается по текущему адресу редактирования (при условии отсутствия ошибок в выражении).

Типы чисел:
0xNN,0NNH - шестнадцатеричное
NN - десятичное
NNb - двоичное
[NN] - Байт (слово) из буфера по адресу NN.

Арифметические и логические операции:
+ - сложение
- - вычитание
* - умножение
/ - деление
% - взятие остатка
& - AND
| - OR
^ - XOR

Деление на 0 и взятие остатка запрещено. Приоритет операций задается круглыми скобками.

Примеры:
12+20/2 = 22
0x16&01111b = 6
[10]+[0Bh] = сумма 10 и 11 ячеек буфера


HPL

Описание языка HPL rev 2.6

10.12.2008

Язык HPL (Hardware Programming Language) разработан специально для описания низкоуровневых протоколов обмена с различными устройствами.

Рассмотрим реализацию языка HPL в трансляторе программатора Orange.
Cимволом (*) обозначены примеры в данном документе.

Символ ';' является признаком комментария - конец строки начиная с этого символа не обрабатывается. Все пробелы внутри текста удаляются, за исключением текстовых строк. Ключевые слова пишутся только в верхнем регистре (большими буквами).

  • Числа. Числа могут задаваться в двоичном, десятичном и шестнадцатеричном формате.
    Если шестнадцатеричное число записано в виде nnnnH и начинается с буквы (A-F), то перед ним следует писать дополнительный 0.
    Двоичное число должно содержать только символы '0', '1' и завершаться 'b'.
    (*) 1234 - десятичная константа
    (*) 010101B - двоичная
    (*) 0x1234 или 0A234H - шестнадцатеричная.
  • Строки. Текстовой строкой является последовательность символов, заключенных в двойные кавычки (*) "Test"
    Пробелы внутри строк не удаляются. При необходимости использования символа " внутри самой строки, он заменяется на две простые кавычки: ' '.
  • Адрес. Ключевое слово ADR содержит текущее значение адресного регистра (32 разряда), по которому выполняется чтение/запись данных. Для адресного регистра могут использоваться операции установки (только в пользовательских секциях) и инкремента (в секциях блочного чтения и записи)
  • Данные. Для доступа к данным в буфере по текущему адресу используется ключевое слово DATA. Данные доступны пословно (8 или 16 бит в зависимости от установленного типа памяти) или поразрядно.
  • Регистры. Для выполнения математических и логических операций, описания констант и хранения данных можно использовать 16 (В Windows версии 32) 32-разрядных регистров R0...R9,RA...RF. Регистры R0...R9 универсальные, регистры RA...RF специального назначения. Через них передаются параметры:
    RA - передача параметров
    RB - размер блока чтения/записи (из cfg)
    RC - адрес текущей области
    RD - номер области для микросхем, имеющих несколько областей памяти (например, для микроконтроллеров).
    RE - глобальный код операции (1-READ,2-VERIFY,3-WRITE,4-USER)
    RF - полный размер памяти (из cfg).

    Параметры устанавливаются автоматически перед запуском секции. Если значение, передаваемое специальным регистром не используется, он может использоваться как универсальный внутри секций. Формат объявления регистров дан     ниже

    Доступ к регистрам специального назначения возможен также через символьные имена:
    $SIZE - полный размер памяти (из cfg),
    $BLOCKSIZE - размер блока чтения/записи (из cfg),
    $VERIFY - режим сравнения (0 - отключен),
    $CDELAY - задержка (эквивалентна CDELAY),
    $WDELAY - задержка записи,
    $AREA - номер области памяти,
    $VERSION - версия hardware и software.
    Для Windows версии рекомендуется использовать символьные имена.

Описание протокола состоит из нескольких секций, основными являются три: начальная, [READ] - чтение слова и [WRITE] - записи слова.

Кроме этого, дополнительно можно использовать следующие секции:

[SETUP] - начальная установка, вызывается однократно при загрузке модуля
[INIT] - инициализация, вызывается однократно перед всеми операциями.
[WRITEINIT] - инициализации записи, вызывается один раз перед началом записи EEPROM.
[WRITEEND] - завершение записи, вызывается один раз после записи всех слов EEPROM.
[READBLOCK] - Чтение блока
[WRITEBLOCK] - Запись блока
[END] - завершение операции, вызывается один раз для любой операции.

При необходимости могут быть описаны дополнительные пользовательские секции, которые добавляются в меню под своим именем. Их названия также записываются в скобках []. При использовании пробелов имена следует дополнительно заключать в кавычки:
(*)["Test 1"]
Секция с именем [---] служит для использования в качестве разделителя в меню и не вызывается.

Для того, чтобы функция выпонялась без подачи питания на микросхему, перед именем функции следует вставить символ '!'. Символ '#' означает, что функция будет исполняться на процессоре ПК (реализация зависит от аппаратной платформы). Для функций, предназначенных для математической обработки буфера рекомендуется использовать оба символа:

(*) [!#Calculator]

Можно использовать локальные секции (функции). Для описания функций перед именем добавляется символ '_' :

(*) [_START]

Функции должны быть описаны в модуле до их использования. Вызов функции осуществляется по имени:

(*) _START.

Передача параметров возможна с использованием регистров. Разрешено использовать внутри функций вызовы других функций. Не рекомендуется использование рекурсивных вызовов.

Секции чтения и записи вызываются при выполнении операций Read и Write для каждого слова.

Порядок вызова секций в режиме чтения:

[INIT]
FOR (ADR=0,ADR<SIZE;ADR++{
[READ]
}
[END]

Порядок вызова секций в режиме записи:

[INIT]
[WRITEINIT]
FOR (ADR=0,ADR<SIZE;ADR++{
[WRITE]
IF (Проверка записи)
[READ]
}
[WRITEEND]
[END]

Порядок вызова для пользовательских команд:
[INIT]
[USERSECTION]
[END]

Измение ADR внутри секции не меняет глобального значения.

В начальной секции описываются:

  • Входные и выходные сигналы для подключения к EEPROM (pins):
    (*) PINO=SCL,0 - Выход, SCL - имя сигнала, 0 - номер бита для драйвера
    (*) PINI=SDA,1 - Вход, SDA - имя сигнала, 1 - номер бита для драйвера

    Входные и выходные сигналы могут иметь одинаковые имена. Имена должны быть не длиннее восьми символов. Имена не могут совпадать с зарезервированными ключевыми словами: "ADR", "BREAK", "BUSI", "BUSO", "CDELAY", "CONST", "DATA", "EXIT", "GET", "IENABLE", "IDISABLE", "LOOP", "MARK", "PINI", "PINO", "POWER", "REG", "RETURN", "SOCKET", "VCC", "VPP". Символ # перед именем является признаком инверсии сигнала:

    (*) PINO=#DTA,0

    Дополнительно можно указать реальный вывод микросхемы, к которому подключен сигнал:

    (*) PINO=SDA,1,5

    Это необходимо для создания графического изображения микросхем, подключаемых через адаптеры.

    •
  • Задержка после каждой операции установки пина (в микросекундах):

    (*) CDELAY=10

    Позволяет регулировать скорость обмена. Реальные задержки могут получаются насколько больше заданных.

    •

  • Номер панельки для установки EEPROM (по схеме Orange-1)

    (*) SOCKET=1

    Если параметр SOCKET не указан, он считается равным 0. Можно создавать свои новые Socket, но для того, чтобы условное графическое изображение микросхемы отображалось в окне Chip Info, таблица выводов должна быть внесена в драйвер или описана в модуле.
    Нумерация панелек условная, соответствует схеме Orange1:
    1 I2C
    2 MicroWire
    3 SDA2506
    4 SPI
    5 NVM3060
    6 S2100R
    7 AT17XXX
    8 M35080
    В программаторах Orange4,5,SE трансляция номеров выводов для заданного Socket производится в драйвере автоматически.

  • Дополнительная информация о модуле, которая отображается в нижнем окне. Не более одной строки

    (*) INFO="Новый модуль"

    •

  • Дополнительный справочный файл (вызывается из меню). Рекомендуемый формат файла - chm.

    (*) INFOFILE="megahelp.chm"

    •

  • Общее число выводов в корпусе EEPROM (по умолчанию 8)
    (*) ALLPINS=14

    •

  • Объявления регистров, доступных для просмотра и редактирования через меню (Buffer->Registers). Имена регистров не должны совпадать. Если регистры используются локально внутри секций, объявлять их не нужно.

    (*) R0=Protect - где "Protect" - имя регистра

    После имени регистра через запятую может быть указан тип (режим отображения значения) регистра:
    H - hex, D - Dec, B - Bin, L - List, C - CheckBox, S - String.
    Если тип набран в нижнем регистре, он не отображается в окне редактирования.

    (*) R1=CODE,h

    Для типов H,D,B,C дополнительно может быть указано число отображаемых знаков:
    (*) R2=FLAGS,B8
    (*) R3=Box,C4

    Для типа L добавляется список текстовых строк.
    Значение регистра соответствует порядковому номеру выбранной строки начиная с 0.
    (*) R0=Mode,L,On,Off

    Строковые типы S при использовании в функции     GET обязательно должны быть связаны с соответствующим массивом. Для этого в регистр следует занести порядковый номер начиная с 0.

  • Массивы - предназначены для работы с блоками памяти заданной длины.
    Имена массивов должны начинаться с символа '@'. Массивы описаваются только в начальной секции:
    (*) @AR1=25 ;незаполненый массив (25 элементов)
    @AR2={1,2,3,4,5,6,7,8,9,10,11,12,13} ;заполненый массив

    •

  • POWER - режим управления питанием:
    1 - автоматическое включение/выключение
    0 - управление из модуля.

Все остальные секции имеют одинаковый формат записи. в одной строке может быть описано несколько инструкций, между собой они разделяются запятыми.

Краткое описание инструкций приведено ниже:

  • Установка пина константой, битом данных, адреса или регистра:
    (*) SDA=1
    (*) SDA=DATA[2]
    (*) SCL=ADR[3]
    (*) PIN=R2[3]

    •
  • Проверка текущего состояния пина (линий ввода) или бита регистра R0-R7
    (*) DAT?1
    (*) R2[4]?0
    или всего регистра:
    (*) R4?0x1234

    Если после операции сравнения в скобках {} описан блок инструкций, то он выполняется при равенстве бита(регистра) и константы, иначе выполняется инструкция следующая за скобками. Если такой блок не описан, при несовпадении проверяемого значения выполнение операции прерывается с выводом сообщения "Error: Chip not respond!" и номером строки HPL файла, на котором произошла остановка.

    (*) R2[4]?0 {P1=0}, P2=1
    Если 4 бит регистра R2 равен 0, то выполняется инструкция P1=0, а потом P2=1, если бит равен 1 - то сразу P2=1

    Если перед сравниваемым числом стоит символ !, то условие меняется на противоположное. (Блок выполняется при несовпадении значений).

    (*) R2?!1234H {P1=0}
    Если R2 не равен 1234H, то выполняется инструкция P1=0, если R2 = 1234H, выполняется следующая инструкция.

    •
  • Установка константы. Значения констант должны лежать в пределах 0...65535.
    (*) CONST=159

  • Операции с регистрами.

    1. Операции присвоения (копирования):
      Регистр-регистр (*) R2=R5
      Регистр-данные (*) R2=DATA
      Данные-регистр (*) DATA=R3
      Данные-число (*) DATA=0x45
      Разрядность данных в зависимости от установленного типа микросхемы составляет 8 либо 16 бит.

    2. Арифметические и логические операции
      (В операциях может участвовать константа или другой регистр):
       установка "=" (*) R0=356H
       сложение "+" (*) R0=+123 ; R0=R0+123
       вычитание "-" (*) R0=-R1 ; R0=R0-R1
       умножение "*" (*) R0=*R1 ; R0=R0*R1
       деление "/" (*) R0=/5 ; R0=R0/5
       взятие остатка "%" (*) R0=%10 ; R0=R0%10
       циклический сдвиг ">>", "<<" (*) R0=>>1 ; сдвиг R0 вправо на 1 разряд (бит 0 переносится в бит 31, бит 1 - в 0, бит 2 - в 1 и т.д....)
       Логическое И - AND "&" (*) R0=*R2 ; R0=R0 and R2
       Логическое ИЛИ - OR "|" (*) R0=|R2 ; R0=R0 or R2
       Исключающее ИЛИ - XOR "^" (*) R0=^R2 ; R0=R0 xor R2

      В операциях деления и взятия остатка запрещено использовать константу 0 либо регистр, содержащий 0!

      3) Битовые операции с регистрами (*) R0[R1]=1 - бит регистра R0, равный R1 установить в 1

  • LOOP - Циклы. Переменная циклов может быть 3 видов: адрес, данные чтения/записи и константа. Кроме того может быть описан универсальный цикл, без указания переменной, в этом случае доступ осуществляется через счетчик (индекс) цикла I. Универсальные циклы могут быть вложенными, во внутреннем цикле непосредственно доступен только счетчик внутреннего цикла. Для универсальных циклов границы могут быть также заданы через регистры. В Orange5 можно использовать только универсальные циклы!

    Константа должна быть задана до начала цикла с помощью инструкции CONST Границы цикла должны лежать в пределах:
    0...32767 - для универсальных циклов
    0...32767 - для циклов CONST
    0...1023 - для циклов DATA
    0...31 - для циклов ADR
    При выполнении кода для универсальных циклов не контролируется выход индексов за пределы реального размера DATA, ADR и CONST.

    Скобки "{","}" ограничивают тело цикла.

    (*) LOOP=(15,0) {DI=R0[I],...}
    линия вывода DI поочередно принимает значения бит 15..0 значения регистра R0. (*) LOOP=(7,0) {DI=ADR[I],...} (*) LOOP=ADR(7,0) {DI=I,...} - старый вариант линия вывода DI поочередно принимает значения бит 7..0 текущего значения адресного слова.

    (*) LOOP=(0,15) {DATA[I]=DO,..} (*) LOOP=DATA(0,15) {I=DO,..} - старый вариант поочередное считывание бит 0..15 слова данных с линии ввода DO.

    (*) R1=10H
    LOOP=(5,0) {D=R1[I],..}
    (*) LOOP=(R1,R2) {R3[I]=DATA[I]}
    Копирование битов от R1 до R2 адресного слова в соответствующие биты регистра R3

    (*) LOOP=(0,7){ P1=0,LOOP=(6,1){P1=0,P1=1} }
    Вложенные циклы.

    •
  • BREAK - выход из текущего цикла.
    (*) LOOP=(7,0) {PI?0{BREAK}}
  • Задержка (в микросекундах). Значение задержки может быть в пределах 1мкс...65с.
    (*) P=200

    •

  • PRINT Вывод сообщения. Вывод на экран окна с сообщением, строка должна быть заключена в кавычки. Внутри строки можно использовать стандартные модификаторы аналогичные используемым в языке C для printf(). (В DOS версии для всех числовых аргументов необходим дополнительный параметр l (long int)).

    %X - шестнадцатеричное значение
    %u - десятичное значение

    Для самостоятельного использования символа % (процент) внутри строки, он должен быть повторен дважды %%. Транслятор не проверяет правильность и количество передаваемых аргументов!

    (*) PRINT=("Hello, World")
    (*) PRINT=("Code=%04lX",R1) - Вывод значения регистра R1 в шестнадцатеричном виде - минимум 4 цифры.

    Можно также использовать дополнительные модификаторы, определяющие тип окна:
    E - Error - сообщение об ошибке
    (*) PRINT=E("Hello, Mr. Bug!")

    S - Status - запись в статусное окно
    (*) PRINT=S("Progress %03lu",R0)

    L - Log - запись в окно протокола
    (*) PRINT=L("Operation %02lu",R0)

    A - Ask - запрос подтверждения пользователя
    Значение возвращается в регистре RA (Ok=1,Cancel=0)
    PRINT=A("Are you ready ?")

    •

  • GET Ввод значений. На экран выводится окно с запросом данных. Строка в скобках задает заголовок окна. Одновременно могут быть введены сразу несколько значений в заданные регистры. Имена регистров и формат данных соответствуют описанным в начальной секции.
    (*) GET=("Enter value",R7,R8)

    •

  • MARK Установка и получение отметки (выделения) текущего слова. Адрес соответствует значению ADR.
    (*) MARK=R1
    (*) R2=MARK

    •

  • EXIT - Завершение работы секции.

    •

  • RETURN - Выход из функции. Не может использоваться для прерывания цикла.

    •

  • VCC - Управление напряжением питания (включение, выключение, установка):
    (*) VCC=1 - включить
    (*) VCC=0 - выключить
    (*) VCC=3000 - установить напряжение 3,0 V (значение в милливольтах)

    •

  • VPP - Управление напряжением программирования (включение, выключение, установка):
    (*) VPP=1 - включить
    (*) VPP=0 - выключить

    •
  • IDISABLE/IENABLE Запрет/Разрешение прерываний. Используются для выполнения критичных по времени операций.
    Для каждой команды IDISABLE обязательна последующая IENABLE.

Подробней изучить конструкции языка можно примере поставляемых в составе программатора файлов *.hpl.


FileType

Типы файлов

BIN - двоичный файл данных

ROM - двоичный файл данных

EEP - двоичный файл данных

HEX - Intel HEX

S19 - Motorola S-records

E2P - Файл в формате PonyProg

DIZ - файл описания

HPL - описание алгоритма на языке HPL

HPX - закодированный HPL файл

ORG - файл регистров Orange

PIN - Описание корпусов и выводов

Файлы с расширениями BIN, HEX, S19, ROM, EEP могут автоматически открываться в редакторе программатора из проводника Windows. Для этого следует зайти в меню: Настройки - Файлы - Расширения и установить необходимые "птички". Если они уже были установлены, то снять, выйти из программы, зайти заново и установить еще раз.


descriptions

Файл описания

Описания представляют собой текстовые файлы с именем рабочего файла и стандартным расширением *.diz. Сохранение и загрузка файла описания производится синхронно с основным файлом. Для работы с описаниями необходимо установить флаг "Description file" в опциях программы.


HardWare

Панельки и разъемы программатора

Внешний разъем SE

A:Vpp | x | 1:GND | 2:P0 | 3:P1 | 4:P2 | 5:P3 | 6:P4 | 7:P5 | 8:VCC
B:VppR | x | 9:GND | 10:P6 | 11:P7 | 12:P8 | 13:P9 | 14:P10 | 15:P11 | 16:P12

Внешний разъем MTRK

2 - GND | 4 - RXD | 6 - TXD | 8 - RST | 10 - OSC | 12 - PDX | 14 - V10V | 16 - VCC | - | 20 - GND
1 - GND | 3 - RXD | 5 - TXD | 7 - RST | 9 - OSC | 11 - AS | 13 - V10V | 15 - VCC | 17 - VL | 19 - GND

Программатор содержит одну 16-выводную панельку. Все микросхемы в 8-выводном корпусе устанавливаются в переднюю часть панельки. Первым выводом к рычагу ZIF. В заднюю часть устанавливается переходник SOIC8DIP для микросхем Microwire Rotated (MWR).


FAQ

Frequently Asked Questions
(Часто Задаваемые Вопросы)
по программатору Orange

Версия 2.5 (21.10.2010)

Q: С какими операционными системами может работать программатор?
A: Рекомендуется использование операционной системы Windows XP (SP2,SP3). Возможна работа программатора с Windows7 (32bit), однако в настоящее время этот вариант еще не прошел полное тестирование. Для установки драйвера требуются права администратора.

Q: Какой кабель нужен для программатора?
A: Используется стандартный USB кабель A-B длиной не более 1.8 метра. рекомендуется выбирать наиболее качественный кабель, так как от этого зависит стабильность работы программатора. Примерно оценить качество кабеля можно с помощью самого программатора. (в меню Опции - Программатор нажать кнопку "Тест"). Чем больше значение в процентах в поле VccUSB, тем лучше.

Q: Для чего нужен разъем питания на плате программатора?
A: Этот разъем является вспомогательным. При подключении к USB контроллеру компьютера, обеспечивающему требования стандарта по напряжению и току необходимости в дополнительном источнике питания нет. В противном случае можно использовать внешний источник питания с напряжением 5 Вольт и током не менее 500 мА (плюсовой контакт - центральный).

Q: Как проверить исправность программатора?
A: В меню Опции - Программатор нажать кнопку "Тест". При этом в панели не должно быть микросхем. При нахождении неисправностей выдается соответствующее сообщение.

Q: Для чего нужны светодиоды?
A: Красный светодиод на плате программатора служит для индикации подачи напряжения на микросхему и загорается только на время работы с микросхемой. Зеленый светодиод означает готовность программатора к работе по USB. Постоянное мигание зеленого светодиода свидетельствует об отсутствии драйвера, либо его некорректной работе.

Q: Как деинсталлировать программу?
A: Windows-версия Orange не делает записей в системном реестре и не устанавливает свои библиотеки. Для деинсталляции достаточно удалить каталог с программой.

Q: Как узнать серийный номер программатора?
A: Cерийный номер программатора Orange можно узнать, выбрав в меню пункт Помощь - Система. Программатор при этом должен быть подключен.

Q: Чем отличается "Verify during write" от "Verify After write"?
A: Первое выполняет проверку после записи каждого слова, а второе после записи всей области памяти. Проверка после записи более надежна, зато проверка во время записи быстрее покажет, что запись выполняется с ошибками. Как правило, включать обе опции сразу нет необходимости.

Q: Почему Orange меняет местами старший и младшие байты для 93с46 и других 16-битных EEPROM при записи в файл?
A: В отличие от некоторых других программаторов, Orange использует Intel-подобный формат (младший байт по младшему адресу). В данном случае это более корректно, что подтверждается тем, что те микросхемы, которые имеют 8 и 16 битный режим, читаются в обоих режимах одинаково. Если Вас такой порядок не устраивает, есть 3 способа:
1) Установить перестановку байтов в опциях файлов. Однако постоянно пользоваться этим режимом не рекомендуется для сохранения совместимости.
2) Воспользоваться командой Swap bytes, она переставляет байты в буфере.
3) Исправить соответствующий HPL.

Q: У меня не работает модуль XX с EEPROM YY фирмы ZZ, что делать?
A: 1) Убедиться в исправности программатора
2) По возможности проверить в исправности микросхемы на другом программаторе.
3) Сравнить модуль с алгоритмами чтения/записи, рекомендуемые производителем. EEPROM одинаковых серий у разных фирм могут иметь существенные отличия.

Q: Как мне написать свой HPL модуль и добавить его в меню?
A: Сначала спросите - может он уже написан до вас :)

  1. Определите расположение выводов EEPROM - если оно совпадает с каким-нибудь существующим, возьмите подходящий модуль за основу, если нет, начинайте писать с самого начала. Не забудьте сделать копию перед редактированием какого-либо модуля. 2) Выберите имя будущего модуля. Как правило, существует несколько EEPROM разного объема с совместимым форматом команд. Рекомендуется выбирать для названия EEPROM максимального объема. Например, для группы 24C04 (512x8), 24C08 (1024x8), 24C16 (2048x8) лучшим названием будет 24C16.HPL. Все модули хранятся в каталоге \HPL.
  2. Добавьте новый модуль в меню. Для этого необходимо вставить в orange.cfg строку описания, например: CHIP=93C46,64x16,93C46.hpl Имя EEPROM, емкость, имя модуля.
  3. Опишите начальную секцию. Для нестандартного расположения выводов задайте пока параметр SOCKET=0 и сообщите автору - он включит эту таблицу выводов в следующую версию драйвера и присвоит порядковый номер. Опишите выходы и входы чипа в соответствии с подключенными выводами программатора. Задайте параметр CDELAY, определяющий максимальную тактовую частоту. Не стоит увлекаться экспериментальным снижением этого параметра до минимальной величины - реальная задержка зависит также от скорости процессора и LPT порта. Лучше установить рекомендуемое производителем значение.
  4. При необходимости создайте секции [INIT] и [END] и опишите в них начальные установки и действия после включения питания и перед выключением соответственно.
  5. Опишите секцию [READ]. Как правило, она состоит из цикла выдачи команды, одного или нескольких циклов выдачи адреса и цикла чтения данных.
  6. Секцию записи [WRITE] можно делать, когда чтение уже написано и отлажено.

Q: А зачем вообще нужны пользовательские секции и что с ними делать?
A: Для выполнения "нестандартных" операций. Например, стирание, чтение/запись дополнительных регистров и т.п.

Q: Что такое "Pin Tester"?
A: Это режим ручной установки/проверки пинов. Полезен для настройки программатора, проверки подключения при внутрисхемном программировании. Кроме того, он может использоваться для отладки различных устройств.

Q: Почему модули для Orange2-4 могут не работать с Orange5?
A: Схемотехника программатора имеет некоторые отличия от Orange2. В старой версии для Microwire и SPI интерфейсов использовался общий канал данных, DI и DO соединялись через резистор. В Orange3 для входа данных используется отдельный пин. Совместимость обеспечивается прозрачным перенаправлением запросов в драйвере. Для его корректной работы должен быть правильно установлен параметр "SOCKET" в модуле.

Q: Как с помощью Orange разделить один файл на два, содержащих четные и нечетные байты соответственно?
A: Загрузить файл (Open File), Выделить четные байты (Buffer - Select - Even), сохранить выделенный блок (File - Save block), аналогично выделить и сохранить нечетные.
С помощью команды выделения и загрузки блоков можно таким же образом соединить два файла в один.

Q: Почему не сохраняются текущие настройки при повторном запуске программы?
A: Возможно программа запускается с CD, либо другого защищенного от записи носителя. Или программа была скопирована целиком на жесткий с такого носителя. В этом случае следует вручную снять с файла orange.dat атрибут "Только для чтения" (Read only).

Q: Не стираются lock биты у AT90S2313.
A: 1. Возможно отключен режим сериального программирования, тогда только параллельным программатором.
2. Попробуйте стереть при пониженном питании (4.0...4.5V), это глюк, признанный Atmel-ом.

Q: Как сделать автоматическую загрузку битов конфигурации для AVR?
A: К сожалению, фирма Atmel не предусмотрела стандартного метода хранения fuses в HEX файле, как у Microchip. Выйти из положения можно следующим образом:
- Выбрать нужный тип контроллера
- Выполнить команду "Write Fuses" и задать требуемые значения битов
- Сохранить значения регистров: Файл - Экспорт - Orange Registers. Имя файла должно совпадать с именем файла прошивки, расширение будет установлено ORG.
- При следующих загрузках файлов значения регистров будут загружаться автоматически.

Q: Что означают надписи Панель I2C, MW, SPI в информационной строке программы.
A: В программаторе Orange3 для микросхем разных серий используются отдельные панельки (подписаны на плате).
В программаторе Orange5 панели I2C, MW, SPI панели объединены в одну.

Q: Не читаются и не пишутся микросхемы 93c46 (..93c86) в корпусе SOIC8
A: Эти микросхемы выпускаются в двух вариантах расположения выводов MW и MW-R. Уточнить тип конкретной микросхемы можно по фирменной документации либо проверить подключение выводов питания в устройстве, где установлена микросхема.