Корзина
(нет товаров)
 
(495) 500-7890
На главную Программаторы Панельки Загрузка ПО Магазин Поддержка Поиск панельки Карта сайта

Виртуальный процессор

PreviousNext

В дополнение к стандартным алгоритмам программирования, программатор имеет виртуальный процессор, позволяющий пользователю самостоятельно написать произвольный алгоритм работы с микросхемой. На практике это означает, что программатор может работать с любой микросхемой, которая проходит по электрическим характеристикам и "попадает" в ключи (Vcc и Vpp) в панельке программатора. Система команд разработана с учетом особенностей программирования микросхем, и позволяет писать простой и эффективный код, обеспечивающий высокую скорость работы с микросхемой.

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

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

Под скрипт в параметрах микросхемы отведено 192 байта. Это может показаться ничтожно мало, но сейчас в программаторе более 300 скриптов и пока этого объема вполне хватает. Вот два примера скрипта, читающих содержимое микросхемы W25Qxx:


;==================================================
READ:	BGS		;Включить питание
	FLP		;Открыть файл
	CLR CS
	LDI $03		;Команда: READ_Chip
	SWL
	LDS ADR_H		;Адрес
	SWL
	LDS ADR_M		;Адрес
	SWL
	LDS ADR_L		;Адрес
	SWL
L01:	SRL		;Чтение байта
	CPB
	JNA L01		;Следующий адрес
	SET CS
	END		;Завершить цикл
;==================================================
 или
;==================================================
READ:	BGR		;Включить питание
	FLP		;Открыть файл
	SPI_ADR $03	;Установить Команду и Адрес
	SPI_RDA		;Считать содержимое
	END		;Завершить цикл
;==================================================

Скрипт позволяет обратиться к первым 128 ячейкам в блоке параметров ($00..$7F), где находятся основные параметры микросхемы. Начиная с адреса $80 размещаются шины адреса и данных и сам скрипт. Доступ из скрипта к этой области закрыт. В памяти программатора блок параметров микросхемы расположен по адресу $80. Поэтому, в командах адрес ячейки необходимо увеличивать на $80. Например, для проверки считанной сигнатуры, расположенной в блоке параметров по адресу $00..$01, используются команды JRN $80,Label и JRN $81,Label.

Описание. В каждой строке должна находится только одна команда. В начале строки может находится метка, за ней через разделитель должна следовать команда и далее один или два операнда, в зависимости от команды. Регистр значения не имеет. В качестве разделителей можно использовать один или несколько пробелов, знак табуляции или запятую. Используемый компилятор не имеет препроцессора, поэтому какие-либо операции над операндами недопустимы.

Комментарий - ';' может находиться в любом месте строки. Все, что стоит после него компилятором игнорируется. Другие типы комментариев, такие как '//', '{}', не поддерживаются.

Метка должна начинаться с начала строки. Знак ':' в конце метки должен присутствовать обязательно. После метки должен быть разделитель: пробел или знак табуляции.

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

Операнд. В качестве операндов используются обычные числа, зарезервированные или назначенные константы. Все числа должны записываться только в шестнадцатеричном формате, начинаться с символа '$' и содержать 2 знака. Запись '$3' - недопустима, правильная запись - '$03'.

Константы. Для лучшей читаемости скрипта вместо числовых значений можно использовать зарезервированные или назначенные константы. Чтобы назначить константу, в начале скрипта необходимо ввести что-то типа: '.WE =$4B'

КонстантаОписание
ADR_L, ADR_M, ADR_HСчетчик адреса микросхемы. Автоматически инициализируется в начале каждого цикла. Для инкремента и проверки окончания цикла используются команды JNA (JumpIfNextAddr) и JLA (JumpIfLastAddr).
FIN_L, FIN_M, FIN_HКонечный адрес микросхемы. Используется при проверке конца цикла. Мало когда нужен, но вдруг потребуется...
DATAL, DATAHРегистры временного хранения данных, считанных из буфера командами LDB и LDW.
BYTEL, BYTEHРегистры временного хранения данных, считанных из микросхемы.
TIMERРегистр таймера. Период инкремента ~3msec. Максимальное значение TIMER ~380msec. Сброс таймера - CLT. Проверка таймера - JTO.
FLAGM, FLAGW,
FLAGS, FLAGE
Флаги микросхемы, флаги режимов работы, флаги программатора, флаги ошибок. Описание этих флагов есть в описании блока параметров микросхемы. Менять значения этих флагов, кроме флага ошибок, во время работы, не рекомендуется.
REG_1.. REG_5Адреса регистров [$18,$19,$1A,$1B,$1C], обеспечивающих установку логических уровней и чтение состояния выводов панельки. REG_1=$1C, REG_2=$19, REG_3=$18, REG_4=$1A, REG_5=$1B. Для программатора V5.8T: REG_6=$1D. Привязка регистров к выводам панельки показана на рисунке.
VCP_1.. VCP_5Адреса регистров [$10,$11,$12,$13,$14], обеспечивающих подачу Vpp и Vcc на выводы панельки. Привязка регистров к выводам панельки показана на рисунке.
PULSEЯчейка блока параметров ($10). Длительность импульса записи.
NLOCKЯчейка блока параметров ($17). Количество бит защиты.
CFG_L, CFG_HЯчейки блока параметров ($24, $25). Конфигурационное слово микросхемы.
REG_CS, REG_DWR,
REG_DRD, REG_CLK
Ячейки блока параметров ($2C..$2F). Используются для подпрограмм последовательного ввода-вывода. Адреса регистров: CS, Dat_WR, Dat_RD, CLK.


* Vcc на 22 выводе есть только в программаторах V5.7T


Вначале создается описание параметров микросхемы. Лучше подобрать ближайший аналог микросхемы и изменить необходимые параметры. Напряжения, адреса, расположение выводов, все это задается в параметрах микросхемы и затем используется в скрипте для работы. Система команд позволяет писать скрипт не привязанный к данной микросхеме, т.е. один и тот же скрипт может работать с группой микросхем, отличающихся напряжением питания, объемом памяти и разной цоколевкой. Чтобы перевести любую микросхему со штатного алгоритма на скрипт, надо в параметрах микросхемы изменить ячейку $12 и загрузить или написать собственно алгоритм работы. Значение $1E позволяет работать с микросхемами с 16-битной организацией, значение $1F - для микросхем с 8-битной организацией.

Для правильной работы скрипта необходимо задать начальное состояние выводов микросхемы (Log 0/1, GND, VCC), которое будет подано на микросхему в момент включения питания и которое обеспечивает вход микросхемы в режим программирования. Чтобы не повредить находящуюся в микросхеме информацию во время включения или выключения питания, микросхема должна находится в неактивном состоянии. Для микросхем с параллельным доступом тут же можно назначить шину адреса и данных. Для микросхем с последовательным доступом, линии ввода-вывода назначаются на вкладке Управляющие сигналы.

Для работы с любой микросхемой используются всего четыре режима работы: чтение, запись, стирание и установка защиты. Соответственно, в каждом скрипте обязательно должны присутствовать метки READ, PROG, ERAS и LOCK. В начале каждого цикла командами BGR или BGW необходимо подать питание на микросхему. При необходимости, можно выполнить проверку готовности или считать ID микросхемы. Затем для режимов READ и PROG открыть файл командой FLP.

В режиме READ данные считываются с микросхемы и обрабатываются, в зависимости от выбранного режима работы (записываются в буфер, сравниваются с данными из буфера, проверяются на чистоту и участвуют в подсчете контрольной суммы). Для чтения 8 или 16 битных микросхем с параллельной шиной данных используются команды PRB и PRW. Для чтения микросхем с последовательной шиной - SRL и SRR. Обработка данных производится командами CPB (Compare Byte) и CPW (Compare Word). Для обработки конфигурации микросхем используются команды CCB, CCW и CCP. Для организации цикла используются команды проверки адреса: JNA Label и JLA Label.

В режиме PROG данные считываются из буфера (команды LDB - Load Byte и LDW - Load Word) и записываются в микросхему. Для микросхем с параллельной шиной данных, для установки данных используются команды PWB и PWW, после чего формируется импульс записи. Для микросхем с последовательной шиной - SWL и SWR. Цикл организуется командами JNA Label и JLA Label.

В режиме ERAS производится стирание микросхемы, если в микросхеме есть такой режим. Если такого режима работы нет, то после метки ERAS должна следовать команда END.

Режим LOCK обеспечивает установку или снятие защиты, запись Fuses или конфигурационных регистров. Если режим не используется, то после метки LOCK должна следовать команда END.

Пример скрипта для работы с W27C512 в корпусе PLCC-32 через переходник TSU-D32/PL32:


;========================================
;===  W27C512P  PLCC-32
;========================================
.CE	=$2A		;Адреса выводов
.OE	=$3A
;========================================
ERAS:	BGE		;Включить питание
	SVP $52		;Подать Vpp на A9
	SVP $60		;Подать Vpp на OE
	PLS CE,$E4	;Pulse CE,100ms
	SET $60		;Выключить Vpp на OE
	SET $52		;Выключить Vpp на A9
	END		;Завершить цикл
;========================================
READ:	BGR		;Включить питание
	FLP		;Открыть файл
	CLR CE
	CLR OE
L01:	A16		;Адрес 16-bit
	PRB		;Чтение байта
	CPB		;Обработка данных
	JNA L01		;Следующий адрес
	SET OE
	SET CE
	END
;========================================
PROG:	BGW		;Включить питание
	FLP		;Открыть файл
	SVP $60		;Подать Vpp на OE
L02:	A16		;Адрес 16-bit
	LDB		;Байт из буфера
	PWB		;Запись байта
	PLS CE,$80	;Pulse
	JNA L02		;Следующий адрес
	SET $60		;Выключить Vpp
	END
;========================================
LOCK:	END
;========================================
ООО «ТЦ ТРИТОН»   (495) 500-7890