Руководство по использованию EJTAG Tiny Tools CPLD (Tele-Sat.ru)


Знакомство с программатором CPLD_EJTAG, определения.

    JTAG - это аббревиатура, которая расшифровывается как "Joint Test Action Group". Если говорить простым языком, это название интерфейса микропроцессорной техники, который служит для отладки и мониторинга работы процессора какого-либо собранного устройства с использованием стандарта IEEE 1149.1. Подробнее можно прочитать об этом в Википедии.
    EJTAG - это расширенный вариант обычного JTAG для процессоров MIPS.
   CPLD - это "Complex Programmable Logic Devices" (сложные программируемые логические устройства).
    А программатор CPLD_EJTAG - это программно-аппаратный комплекс, реализованный на Altera EPM7064 и работающий под управлением программы EJTAG Tiny Tools CPLD, разработанный с целью дать возможность перешивать микросхемы флэш-памяти через JTAG интерфейс процессоров, устанавливаемых в различных устройствах (будь то, например, спутниковый ресивер или ADSL модем). Автор разработки - Sergiuss (IceGSM).

    Подключение к компьютеру и обмен данными производится через LPT-порт, запитывается плата через стандартный разъём mini-USB того же компьютера. Тактовая частота JTAG'а (ТСК) стабилизирована кварцевым генератором, чем устраняется влияние скорости процессора компьютера на формирование сигналов (в сравнении с традиционными вариантами JTAG'а для LPT), т.е. с какими бы задержками ни поступали данные через LPT-порт, внутри CPLD сигналы формируются всегда одинаково.
    Поддерживаемые на данный момент типы процессоров:

Т.к. постоянно ведётся разработка и усовершенствование, поддерживаемый набор процессоров будет увеличиваться. Кроме функции работы через JTAG с процессорами, данный программатор может использоваться для прошивки SPI-Flash 25xx серии и DataFlash AT45xx серии.



Внешний вид, описание перемычек, распиновка.
 

    Перемычки JP1 в разных комбинациях установки служат для задания тактовой частоты работы CPLD. От этого зависит скорость обмена данными (на максимальной частоте минимальное время на чтение/запись микросхем). Снижение частоты может понадобиться в случае нестабильного коннекта или ошибок при передаче данных при длинном шлейфе.
Возможные комбинации:  1+2 = 14МГц,    2 = 7МГц,   1 = 3,5МГц,   Обе сняты = 1,8МГц.
    Перемычка RTCK ("Return TCK") служит для выбора режима тактирования CPLD. В положении 1-2 тактирование производится имеющимся на плате кварцевым генератором, в положении 2-3 - самим устройством. В случае использования RTCK надо снять обе перемычки JP1 и в программе не использовать настройку Быстрый JTAG.
    8-пиновая колодка предназначена для прошивки Serial Flash при помощи программы SPI_TT: тесты и описание, а сама программа доступна в форуме поддержки.
    Индикаторы: Красный светодиод «Power» горит, когда подключено питание. Зелёный светодиод «ACT» быстро мигает во время обмена данными, либо горит постоянно во время простоя (после установления связи). Если связь не установлена, его состояние не несёт никакой полезной информации.



Изготовление шлейфов, соединяющих плату
программатора с платой перешиваемого устройства.

    Самое важное в данных шлейфах - экранирование соседних проводников с данными друг от друга. Экранировка должна быть гораздо более хорошей, нежели в обычных схемах JTAG для LPT-порта. И именно в этом кроется большинство проблем с нестабильным определением процессора или при ошибках в передаче данных. Я перепробовал несколько разных вариантов шлейфов, где жила с землёй была всего одна, но стабильного коннекта с ними так и не смог добиться, не смотря на небольшую их длину. Стабильный коннект возможен только в случае, если проводники с данными располагаются в плоском шлейфе поочерёдно с проводниками земли и при этом каждая жила земли подсоединена к земле с каждой стороны. Подсоединив все проводники с землёй со стороны платы программатора, а со стороны устройства только один из них, мы получим одни проблемы - стабильного коннекта не будет. Если точка подключения земли на устройстве всего одна, то к ней подключаются все земляные проводники шлейфа.

Разводка разъёма:
   

*Внимание! Разъём на приведённой фото запаян ключевым вырезом в другую сторону, так что при изготовлении шлейфов смотрим только на описание выводов относительно платы.


Пример стабильно работающих шлейфов (длина от 20 до 35см):

Для изготовления использовались косички от COM-портов и разъёмы IDE/FDD-шлейфов.



Подключение программатора к компьютеру и к устройству.

    Для этого используется LPT-удлинитель (представлен на фото), либо, если кому-то так удобнее, плату программатора можно вставить непосредственно в LPT порт компьютера.

    Первое, что нужно сделать - удостовериться, что режим работы LPT-порта компьютера в настройках BIOS'а выставлен EPP или ECP/EPP. Если выбран режим работы SPP - программатор работать не будет.
    Внимание! Чтобы предотвратить выход программатора из строя по причине разницы потенциалов на корпусах устройств, рекомендуется соединять корпус компьютера с корпусом устройства, к которому подключается программатор, отдельным проводом!
    Последовательность действий:

  1. Соединяем отдельным проводом корпус компьютера и устройства.

  2. Подключаем программатор к LPT порту компьютера.
  3. Соединяем его интерфейсным шлейфом с разъёмом JTAG в устройстве.
  4. Подключаем питание программатора (вставляем разъём Mini-USB).
  5. Включаем питание устройства.

Пример (подключен ресивер Arion AF-3030IR):



Запуск программы, установка связи, проверка работы.

    Запускаем программу CPLD_EJTAG. В случае, если LPT-порт имеет стандартный адрес (для LPT1 это 378) - ничего не меняем, если адрес порта отличен от 378, переходим в закладку "Установки" и вписываем своё значение в строке "LPT порт" (нажав после этого кнопку "Применить"). Нажимаем кнопку "Соединиться", после этого светодиод «ACT» должен начать постоянно гореть (никаких настроек на данном этапе можно не делать и на лог коннекта не обращать внимания).

Если после нажатия кнопки "Соединиться" индикатор «ACT» сначала загорается, а потом гаснет через несколько секунд (порт не переключается в режим EPP), то необходимо: попробовать сменить режим LPT порта в BIOS'е на EPP 1.9; допаять резистор 68~100 Ом между 13 ножкой разъема LPT и землёй (18-25 контакты LPT) в случае его отсутствия. Если всё правильно и индикатор «ACT» горит постоянно, переходим на закладку "Установки" и нажимаем там кнопку "Тест скорости":

Результат должен быть в районе 300'000 операций в секунду. В случае, если результат находится в районе 40'000, это означает, что связи с программатором по какой-либо причине нет. Если после нажатия на "Тест скорости" выводится сообщение об ошибке - это означает, что порт не переведён в режим EPP (не была нажата кнопка "Соединиться").


Конфигурация и настройки программы.

    При запуске программы, на первой закладке "EJTAG" доступны базовые настройки и кнопки работы с микросхемой флэш-памяти:

1 - Тип ядра процессора. Название говорит само за себя.
2 - Базовый адрес флэш-памяти.
3 - Настройки для работы с модулями по доступу к флэш-памяти:
Fast Flash Mode - в случае выбора используется быстрый режим записи, если доступен. На специализированных модулях флэш использует загрузчики.
SMART PROG - предназначен для оптимизации скорости записи (пропуск пустых байт) микросхем флэш-памяти от Intel и SST в универсальных модулях, т.к они не поддерживают быструю запись.
4 - Тип процессора - это просто предустановленные вручную (в файле ejtaps.ini) настройки на каждый тип процессора, флэш-памяти, базового адреса и режима доступа. Можно создавать на каждый аппарат свой собственный набор настроек, чтобы не выбирать при запуске программы всё вручную.
5 - Спец. установки. Предназначены для процессоров MIPS:
Откл Debug - не переводить MIPS-процессор в режим debug, если до этого он уже был переведён; в данный режим аппаратно.
Сброс PIO - сброс периферии MIPS-процессора при коннекте. Может потребоваться, т.к. некоторые процессоры не переводятся в режим debug без сброса.
WatchDog - отключение режима WatchDog в MIPS-процессоре. Данный режим сбрасывает процессор по таймауту, по умолчанию он отключен, но обычно включается при загрузке прошивки из флэш-памяти. Установка галочки - отключение сброса по таймеру.
6 - Режим доступа к флэш-памяти.
7 - Тип флешь. В данном разделе выбирается модуль работы с флэш-памятью. Модули делятся на две группы: универсальные (подходят для всех типов ядер, поддерживаемых программой) и специализированные (для конкретной архитектуры/типа процессора). К универсальным относятся модули AMD16/AMD8/SST16/SST8/INTEL16. Все остальные модули - специализированные (в названии указывается, для каких процессоров они используются).
    Универсальные модули имеют стандартные алгоритмы записи/чтения флэш-памяти и не отличаются высокой скоростью. AMD16/AMD8 могут работать в "быстром" режиме записи - "Fast Flash Mode", что даёт 25% прирост скорости записи, или в режиме "SMART-PROG". В модулях SST16/SST8/INTEL16 для ускорения процесса записи используется только режим "SMART-PROG".
    Специализированные модули:

8 - Смещение и длина. Смещение относительно начального (нулевого) адреса в микросхеме флэш-памяти и длина данных для считывания. В случае записи какого-либо файла, значение длины игнорируется, т.к. выбранный файл записывается целиком.
9 - Кнопки установления соединения с устройством и работы с данными микросхемы флэш-памяти.
"Стереть блок(и)" - для стирания блоков микросхемы флэш-памяти с выбранным смещением и длиной.
"Стереть флешь" - команда на стирание микросхемы флэш-памяти целиком. Поддерживается не всеми микросхемами! Большинство интеловых флэшек не имеет такой команды. Для их полного стирания надо использовать "Стереть блок(и)", указав в "Смещении" нолевой адрес и в поле "Длина" полный размер в байтах в шестнадцатеричном виде.
"Считать" - считывание данных по заданному адресу выбранной длины.
"Записать" - запись данных по заданному адресу.
"Отмена" - отмена выполнения чтения или записи. Остановка процедуры стирания невозможна!

На закладке "Установки" возможны дополнительные настройки:

1 - Конфигурация TAP цепочки. Для ручного задания параметров доступа к процессору через JTAG.
2 - Несколько дополнительных настроек:
Свой CPU ID - сюда можно вписать любой ID, отдаваемый подключаемым через JTAG процессором. По умолчанию сюда подставляется сохранённый для выбранной конфигурации "Тип процессора" ID из файла ejtaps.ini.
Trap IPTR - указатель на код Trap'а для STi-процессоров.
Debug Level - выбор режима информативности выводимого лога при работе программы. Возможные варианты - Debug (в лог выводится полная информация) и Normal (выводится только основная информация). В режиме Debug скорость операций чтения/записи флэшки несколько снижается.
LPT Port - возможность произвольного ввода адреса LPT-порта на каждом конкретном компьютере.
3 - Принудительное определение CPU. Если выбранное значение CPU ID не совпадает с тем, что отдаёт процессор при коннекте, то программа это игнорирует и продолжает пытаться работать с подключаемым процессором по алгоритму выбранного CPU ID.
4 - Кнопки "Тест скорости" (для проверки скорости обмена данными с CPLD) и "Применить". Внимание! Кнопку "Применить" надо нажимать всякий раз после внесения любых изменений настроек на данной закладке. В противном случае, сделанные настройки не будут использоваться.
5 - Запускать скрипт после коннекта. Установка данной галочки приводит к запуску после коннекта с процессором выбранного (в окошке "имя скрипта") файла-сценария, находящегося в каталоге "Script", расположенного рядом с самой программой CPLD_EJTAG. Скрипты нужны для дополнительной (ручной) инициализации тех или иных функций процессора, таких как доступ к ОЗУ или, в некоторых случаях, флэш-памяти. Имя файла-скрипта также прописывается в файле "ejtaps.ini" и автоматически подставляется при выборе предустановки "Тип процессора".
6 - Быстрый JTAG (TCK > 7MHz). Режим, когда программа не ожидает команды ответа готовности CPLD. Используется для увеличения скорости чтения/записи флэш-памяти в случае, если частота CPLD заданная перемычками, превышает 7MHz. Не используется в случае выбора режима тактирования RTCK.
    Внимание! Если после нажатия кнопки "Соединиться" было произведено изменение каких-либо настроек программы (не имеет значения, каких и на какой закладке), то для вступления их в силу нужно повторно нажимать "Соединиться".
    Сама программа CPLD_EJTAG построена на модульном принципе, что легко позволяет добавлять новые типы процессоров и флэшек. Большинство настроек программы находятся в INI-файле. Более подробно об описании настроек данного файла и самостоятельном добавлении различных устройств, можно прочитать на форуме поддержки в теме Тонкости использования CPLD EJTAG_TT.




Примеры коннекта, чтения и записи флэшки в ресиверах с различными процессорами.

Arion AF-3030IR на STx5105ALB


Коннект


Чтение флэшки


Стирание, проверка что стёрто и запись флэшки

Полный лог коннекта:

Logger inited
<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ ST20 DCU3
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/5
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x2D427041
CPU ID не совпадает с заданным
Читаем IMP code
IMP code не поддерживается
STi5119
Инициализируем модуль ST20 ....
Используемый Trap Core1
DCU CAPABILITY = 0x20022121
DCU ver = 1.0
DCU NUM_W_RANGE = 2
DCU NUM_CAPTURE = 4
DCU NUM_COMPARE = 4
DCU JTR_SUPPORT = 1
DCU NUM_TRIG_IN = 1
DCU CONTROL = 0x3C10
Инициализация EMMI.. OK
All Banks[0-3] have been configured
Ident from EPLD is FF
DCU reg = 0x3C11
Устанавливаем TRAP ... Завершено
Current Wptr = 0x80000500
Current Iptr = 0x80000200
DCU = 0x3C11
Активируем TRAP 
Status1 = 0xAA55AA55
Trap успешно активирован !!
Модуль ЦПУ инициализирован
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >Intel16 ST20< требует тип(ы) процессоров :
ST20 DCU2
ST20 DCU3

Зависимости удовлетворены
Базовый адресс = 0x40000000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
2020 2420 2020 2020 2529 FD48 AEDC 4003 
Определяем флешь ...
Manufacture ID = 0x0089 Device ID = 0x88C2
CFI = Q, R, Y
Boot type = 65535
CFI флешь найдена
VENDOR ID = 0x3
Intel совместимая
Decoding CFI table
Primary algorithm - at offset 0x35
Alternate algorithm - at offset 0x0
VCC - min 2.7 volt, max 3.6 volt
VPP - min 11.4 volt, max 12.6 volt
Таймаут записи байта/слова 32 мк-сек (тип.)
Таймаут записи байта/слова 512 мк-сек (макс.)
Таймаут стирания блока 1024 мсек (тип.)
Таймаут стирания блока 8192 мсек (макс.)
Интерфейс флеши - x8/x16 бит
PRI ID = PRI
версия CFI - 1.0
Address Sensitive Unlock - не требуется
Erase suspend - не поддерживается
Sector protect - не поддерживается
Temporary sector unprotect - не поддерживается
Sector protect/unprotect algo - 29F040
Simultaneous operation - 3 sectors
Burst mode - не поддерживается
Page mode - 

INTEL Security ID(16 bit device):
120A 01D3 46C7 DA91 FFFF FFFF FFFF FFFF 
Flash Size = 2097152
Region count = 2
Region = 0 ; Block size = 65536 ; Block count = 31
Region = 1 ; Block size = 8192 ; Block count = 8



DreamBox 500s на STB02500


Коннект


Чтение флэшки


Запись флэшки

Полный лог коннекта:

Logger inited
<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ PPC STB02500
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/7
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x12955049
IMP code не поддерживается
STB02500 определен
Ver - 1
Part № - 2
BEOL part № - 955
ID code - 0x024
Инициализируем модуль STB02500 ....
Модуль ЦПУ инициализирован
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >Intel16< требует тип(ы) процессоров :
NEC EMMA2x
MIPS DMA
MIPS PrAcc
ARM7
ARM9
ST20 DCU2
PPC STB02500
 
Зависимости удовлетворены
Базовый адресс = 0xFF800000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
 1985 0003 0000 000C F060 DC98 1985 C002 
Определяем флешь ...
Manufacture ID = 0x0089 Device ID = 0x0017
CFI  = Q, R, Y
Boot type = 65535
CFI флешь найдена
VENDOR ID = 0x1
Intel совместимая
Decoding CFI table
Primary algorithm - at offset 0x31
Alternate algorithm - at offset 0x0
VCC - min 2.7 volt, max 3.6 volt
Таймаут записи байта/слова 64 мк-сек (тип.)
Таймаут записи байта/слова 256 мк-сек (макс.)
Таймаут записи буфера 128 мсек (тип.)
Таймаут записи буфера 1024 мсек (макс.)
Таймаут стирания блока 1024 мсек (тип.)
Таймаут стирания блока 4096 мсек (макс.)
Интерфейс флеши - x8/x16 бит
Максимальный размер записываемого буфера 32 байт
PRI ID = PRI
версия CFI - 1.1
Address Sensitive Unlock - не требуется
Erase suspend - не поддерживается
Sector protect - не поддерживается
Temporary sector unprotect - не поддерживается
Sector protect/unprotect algo - 29F040
Simultaneous operation - 1 sectors
Burst mode - не поддерживается
Page mode - 
ACC - min 0.0 volt, max 0.1 volt

INTEL Security ID(16 bit device):
810D 01D3 463F 8DAE FFFF FFFF FFFF FFFF 
Flash Size = 8388608 byte
Region count = 1
Region = 0 ; Block size = 131072 ; Block count = 64


Signal TLS-2007T S2HD на Conexant CX24170

Коннект и чтение флэшки


Стирание и запись флэшки

Полный лог коннекта:

<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ ARM9
Модуль ЦПУ успешно создан
Конфигурация ТАР - 2 8/0 0/4
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x20920027
Читаем IMP code
IMP code не поддерживается
ARM part number = 0x0920
Core with MMU 
Family ARM9
Инициализируем модуль ARM9 ....
DBGCTRL = 0xD
Процессор остановлен в ARM.
ID reg val = 0x41129200
Модуль ЦПУ инициализирован
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >AMD16 ARM9 DCC< требует тип(ы) процессоров :
MIPS PrAcc
ARM9

Зависимости удовлетворены
Базовый адресс = 0xF0000000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
40F0 9FE5 0000 0000 0000 0000 0000 0008 
Определяем флешь ...
Manufacture ID = 0x00C2 Device ID = 0x22A8
CFI = Q, R, Y
Boot type = 2
CFI флешь найдена
VENDOR ID = 0x2
AMD совместимая
Flash Size = 4194304
Region count = 2
Region = 0 ; Block size = 8192 ; Block count = 8
Region = 1 ; Block size = 65536 ; Block count = 63


Логи коннекта ресиверов на других процессорах:


DRE-5000 на STi5518. Скорость чтения/записи ~33kb/s.

Logger inited
<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ ST20 DCU2
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/5
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x1D405041
Читаем IMP code
IMP code не поддерживается
STi5518MVB-X
Инициализируем модуль ST20 ....
Инициализация EMMI.. OK
DCU reg = 0x700
Устанавливаем TRAP ... Завершено
DCU = 0x80080000
Активируем TRAP 
Status1 = 0x60000
Trap успешно активирован !!
Модуль ЦПУ инициализирован
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >AMD16 ST20< требует тип(ы) процессоров :
ST20 DCU2
ST20 DCU3

Зависимости удовлетворены
Базовый адресс = 0x7FE00000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
5347 5748 07AC 47F8 0000 0001 0002 0000 
Определяем флешь ...
Manufacture ID = 0x0020 Device ID = 0x22C4
CFI = Q, R, Y
Boot type = 65535
CFI флешь найдена
VENDOR ID = 0x2
AMD совместимая
Decoding CFI table
Primary algorithm - at offset 0x40
Alternate algorithm - at offset 0x0
VCC - min 2.7 volt, max 3.6 volt
Таймаут записи байта/слова 16 мк-сек (тип.)
Таймаут записи байта/слова 256 мк-сек (макс.)
Таймаут стирания блока 1024 мсек (тип.)
Таймаут стирания блока 8192 мсек (макс.)
Интерфейс флеши - x8/x16 бит
PRI ID = PRI
версия CFI - 1.0
Address Sensitive Unlock - требуется
Erase suspend - да, для чтения и записи
Sector protect - да, группой по 1 сектора
Temporary sector unprotect - поддерживается
Sector protect/unprotect algo - 29LV800A
Simultaneous operation - не поддерживается
Burst mode - не поддерживается
Page mode - не поддерживается

AMD Security ID (16 bit device):
0F0A
4E47
6294
4864
Flash Size = 2097152
Region count = 4
Сортируем блоки для Top Boot
Region = 3 ; Block size = 65536 ; Block count = 31
Region = 2 ; Block size = 32768 ; Block count = 1
Region = 1 ; Block size = 8192 ; Block count = 2
Region = 0 ; Block size = 16384 ; Block count = 1
AMD Locked Sector Addr(16 bit device):

is-780 на NEC µPD61217. Скорость чтения 12kb/s, записи 3kb/s.

<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ NEC EMMA2x
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/6
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x00000000
Читаем IMP code
IMPCODE = 0x0
EJTAG version 1 - 2.0
EJTAG function : R4k DMA MIPS32 

Инициализируем модуль NEC ....
Читаем BHIF_VERSION адресс ..... 0xD010
Читаем BHIF_GENERATION адресс ..... 0x0000
Найден ЦП : UPD61217 (EMMA2SL)
Останавливаем Emma2xl ... OK
Проверка доступа к шине .... OK
Модуль ЦПУ инициализирован
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >AMD16< требует тип(ы) процессоров :
NEC EMMA2x
MIPS DMA
MIPS PrAcc
ARM7
ARM9
ST20 DCU2
ST20 DCU3
PPC STB02500

Зависимости удовлетворены
Базовый адресс = 0x1FC00000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
0000 0120 0507 2005 0000 000E B000 01AC 
Определяем флешь ...
Manufacture ID = 0x0001 Device ID = 0x22C4
CFI = Q, R, Y
Boot type = 0
CFI флешь найдена
VENDOR ID = 0x2
AMD совместимая
Decoding CFI table
Primary algorithm - at offset 0x40
Alternate algorithm - at offset 0x0
VCC - min 2.7 volt, max 3.6 volt
Таймаут записи байта/слова 16 мк-сек (тип.)
Таймаут записи байта/слова 512 мк-сек (макс.)
Таймаут стирания блока 1024 мсек (тип.)
Таймаут стирания блока 16384 мсек (макс.)
Интерфейс флеши - x8/x16 бит
PRI ID = PRI
версия CFI - 1.0
Address Sensitive Unlock - требуется
Erase suspend - да, для чтения и записи
Sector protect - да, группой по 1 сектора
Temporary sector unprotect - поддерживается
Sector protect/unprotect algo - 29LV800A
Simultaneous operation - не поддерживается
Burst mode - не поддерживается
Page mode - не поддерживается

Spansion Security ID S29ALxxxM(16 bit device):
0FA2 66E5 612C 965E 15A7 EB93 2142 6D38 
B672 AF22 326B DDBC 7226 FFAD 0F54 C928 
C1E7 F4C4 149C 8E07 FD1E 4D48 4E42 00FD 
9B75 1BBB 668D 56DA DD73 984B C773 8365 
25A9 2A3E E0AB 4723 1B00 BB78 4D35 AC31 
5D8C 3FE4 E88D 375E B900 2207 046F EE2B 
6588 BBED 0BFA FD0B 0626 4F53 7ECA 93F8 
B91A EEF3 1973 3513 B363 04BE 01FD 126B 

Flash Size = 2097152
Region count = 4
Сортируем блоки для Top Boot
Region = 3 ; Block size = 65536 ; Block count = 31
Region = 2 ; Block size = 32768 ; Block count = 1
Region = 1 ; Block size = 8192 ; Block count = 2
Region = 0 ; Block size = 16384 ; Block count = 1
AMD Locked Sector Addr(16 bit device):

is-T/S84 на Conexant CX24302. Скорость чтения ~20kb/s, записи 36kb/s.

Logger inited
<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ ARM9
Модуль ЦПУ успешно создан
Конфигурация ТАР - 1 4/0 0/4
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x10946027
Читаем IMP code
IMP code не поддерживается
ARM part number = 0x0946
Core with MPU and TCM 
Family ARM9
Инициализируем модуль ARM9 ....
DBGCTRL = 0xD
Процессор остановлен в ARM.
ID reg val = 0x41059461
Модуль ЦПУ инициализирован
30000020 = 0
30000024 = B959B4E1
30000028 = 1
3000002C = 0
30000030 = 0
30000034 = 0
30000038 = 0
30070004 = 86F89037
30070008 = 64
3007000C = 0
30070010 = 80020064
30070014 = 80020064
30070018 = 80020064
3007001C = 80020064
30070020 = 0
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >AMD16 ARM9 DCC< требует тип(ы) процессоров :
MIPS PrAcc
ARM9

Зависимости удовлетворены
Базовый адресс = 0x20000000
Режим доступа 16 бит / разрядность 16 бит
Первые 16 байт флеши со смещения 0x0:
F19C E59F 5442 4643 0747 0001 F200 00FF 
Определяем флешь ...
Manufacture ID = 0x0001 Device ID = 0x2249
CFI = Q, R, Y
Boot type = 0
CFI флешь найдена
VENDOR ID = 0x2
AMD совместимая
Decoding CFI table
Primary algorithm - at offset 0x40
Alternate algorithm - at offset 0x0
VCC - min 2.7 volt, max 3.6 volt
Таймаут записи байта/слова 16 мк-сек (тип.)
Таймаут записи байта/слова 512 мк-сек (макс.)
Таймаут стирания блока 1024 мсек (тип.)
Таймаут стирания блока 16384 мсек (макс.)
Интерфейс флеши - x8/x16 бит
PRI ID = PRI
версия CFI - 1.0
Address Sensitive Unlock - требуется
Erase suspend - да, для чтения и записи
Sector protect - да, группой по 1 сектора
Temporary sector unprotect - поддерживается
Sector protect/unprotect algo - 29LV800A
Simultaneous operation - не поддерживается
Burst mode - не поддерживается
Page mode - не поддерживается

Spansion Security ID S29ALxxxM(16 bit device):
F2BE 0C61 5992 5647 4F8C 6EDE 4CC6 6D50 
6F62 C003 C31E F9A1 89B6 6494 90F5 DB23 
9FA2 4F9C 6700 BACC 673F A31D 093A D897 
DE3C 017F 6FD8 D671 BD1C 1019 61A1 046F 
ADA7 A16B E589 39E1 C2EB 5D5A E9D7 32B2 
0521 C991 6670 4AF4 6641 83EC 7684 E6E2 
33AC D67A 3B38 853B 0652 3EC4 A1F3 1909 
BD36 9B0C 43AE 2B54 85B7 6FFD CE75 047A 

Flash Size = 2097152
Region count = 4
Region = 0 ; Block size = 16384 ; Block count = 1
Region = 1 ; Block size = 8192 ; Block count = 2
Region = 2 ; Block size = 32768 ; Block count = 1
Region = 3 ; Block size = 65536 ; Block count = 31
AMD Locked Sector Addr(16 bit device):


Globo 4100C на ALi M3329C. Скорость чтения 4kb/s, записи ~2,3kb/s.

<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ MIPS PrAcc
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/5
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x00000000
Читаем IMP code
IMPCODE = 0xC05288
EJTAG version 1 - 2.0
EJTAG function : R4k ASID_8 NoDMA MIPS32 

Переводим процессор в Debug ... OK
EJTAG Cntrl = 0x248108
Инициализируем модуль PrAcc ....
1st step Result = OK
2nd step Result = OK
3nd step Result = OK
Модуль ЦПУ инициализирован
ALi процессор определен
Включаем доступ к флешь ... OK
RegData = 0xF0005
Версия процессора ALI = 3327
Инициализируем SDRAM ....
OK
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >Ali SPI< требует тип(ы) процессоров :
MIPS PrAcc

Зависимости удовлетворены
Базовый адресс = 0xBFC00000
Режим доступа 8 бит / разрядность 8 бит
Первые 16 байт флеши со смещения 0x0:
E3 00 00 10 00 00 00 00 00 01 00 00 4E 43 52 43 
Определяем флешь ...
SPI ID = 140201
Manufacture ID = 0x0001 Device ID = 0x0014
Флешь определена
Spansion SPI Flash : 
Размер 2097152 байт