www.ejtag.ru

Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)


Расширенный поиск
Текущее время: 08 дек 2016, 01:20

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Тонкости использования ПО EJTAG
СообщениеДобавлено: 16 окт 2011, 23:12 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Небольшой ФАК по добавлению моделей ресиверов в список программы. Будем добавлять ресивер Skyon DSR-1350.

Изначальный список выглядит так
Изображение

Открываем файл ejtaps.ini
Смотрим описание в начале файла, там расписаны возможные значения параметров секции (каждая секция - одно устройство в списке выбора программы)
Цитата:
;[SECTION NAME]
; TAP = Before TAPs, Before TAP IR length, After TAPs, After TAP IR length, IR length
; Base = Base address in HEX
; CPU = Type of CPU = NEC=0, DMA=1, PRACC=2, ARM7=3, ARM9=4, ST20=5, ST20 DCU3 = 6, PPC=7
; SubCPU = Type of subCPU = None=0, Ali=1, Cx24138-148=2, Cx24176=3, Cx34303=4
; FlashMode = 0 - 16/8, 1 - 16/16, 2 - 16/32
; FlashType = 0-AMD16, 1-AMD8, 2-SST16, 3-SST8, 4-INTEL, 5-SPIALI, 6-SPIBRCM, 7-PIC32MX,
; 8 - AMD16 for ST20, 9 - SST16 for ST20, 10 - INTEL16 for ST20, 11 - AMD16 DCC(ARM9) 12 - SST16 DCC(ARM9)
;
; CpuID = 4 byte
; RunScript = true/fasle
; ScriptName = file name of script


Берем за основу модуль Conexant 24138, т.к Skyon 1350 собран на этом процессоре.

[Conexant 24138] <- Название, которое отображается в программе
TAP = 1,4,0,0,4 <- Конфигурация ТАР цепочки
Base = 20000000 <- Базовый адрес флеш
CPU = 4 <- Тип процессора
SubCPU = 2 <- Подтип процессора
FLSMode = 2 <- Режим работы флеш
FLSType = 0 <- Тип флеш
CpuID = 20920027 <- ИД процессора
RunScript = 0 <- Запускать или нет скрипт
ScriptName = <- Название файла скрипта

Создаем на его основе наш модуль (дописываем в конце файла)

[Skyon 1350]
TAP = 1,4,0,0,4
Base = 20000000
CPU = 4
SubCPU = 2
FLSMode = 1
FLSType = 12
CpuID = 20920027
RunScript = 1
ScriptName = Skyon1350.ejs

Сохраняем файл, запускаем программу и видим наш добавленный Skyon
Изображение

При выбирании пункта Skyon 1350 программа выставит тип процессора, флеш, базовый адрес по тем параметрам, которые мы дописали в файл
Изображение



За это сообщение автора sergiuss поблагодарили: 2 alex26 (24 фев 2014, 11:35), hunter (16 мар 2012, 19:24)
  Рейтинг: 6.67%
Вернуться к началу
 Профиль Фотоальбом  
 
СообщениеДобавлено: 16 окт 2011, 23:13 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Модули флеш в программе делятся на две группы:
1. Универсальные - они подходят для всех типов ядер, поддерживаемых программой.
2. Специализированные - модули для конкретной архитектуры/типа процессора.

К первой группе относятся модули CFI AMD16/AMD8/SST16/SST8/INTEL16.
Все остальные модули специализированные (в названии указывается для каких процессоров они используются.

Универсальные модули.

Универсальные модули имеют стандарные алгоритмы записи/чтения флеш и не отличаются высокой скоростью.
AMD16 AMD8 могут работать в "быстром" режиме записи - "Fast Flash Mode" (25% прирост скорости записи) или режиме записи с пропуском пустых байт - "SMART-PROG"
SST16/SST8/INTEL16 - для ускорения процесса записи используется только режим "SMART-PROG".

Специализированные модули.

SPI (ALI) - как видно из названия это модуль для работы с SPI флешками на процессорах Ali M332x.
"SMART-PROG" - отдельно не используется.
"Fast Flash Mode" - запись блоками по 256 байт (иначе по 1 байту).
"Fast Flash Mode" + "SMART-PROG" - запись по 256 байт используя загрузчик в озу.

SPI (Broadcom) - для работы с SPI на процессорах Broadcom 633x
"SMART-PROG" - не используется.
"Fast Flash Mode" - запись блоками по 58 байт (иначе по 1 байту).

AMD16 ST20/ST40 SST16 ST20/ST40 INTEL16 ST20/ST40 - для работы с параллельными флешами на процессорах STI ST20 DCU2/3 и STI ST40
"SMART-PROG" - не используется (ST40 Fast + SMART = буферная запись).
"Fast Flash Mode" - запись блоками по 64 байт (иначе по 2 байта).

AMD16 dcc/PrAcc, SST16 dcc/PrAcc Intel16Dcc - модули для работы с параллельными флеш на процессорах ARM и MIPS. Работают через установку загрузчика в озу, поэтому обязательна инициализация озу (используя скрипт, некоторые типы инициализируются программой самостоятельно - конексант 2430х и Ali).
"SMART-PROG" - отдельно не используется.
"Fast Flash Mode" - запись блоками по 2048 байт (для ARM и MIPS).
"Fast Flash Mode" + "SMART-PROG" - запись по 2048 байт используя загрузчик в озу и быстрый обмен. Используется только в процессорах MIPS.
Без галок - запись по 2 байта без участия загрузчика.

AMD8 PrAcc / SST8 PrAcc - аналогичны предыдущим модулям, только для 8-ми битных флешек. Эти модули в основном предназначены для процессоров Ali.

PIC32MX - модуль для прошивки процессоров MICROCHIP серии PIC32
Без галок - запись по 4 байта без участия загрузчика.
"SMART-PROG" - запись по 4 байта без участия загрузчика, с пропуском пустых байт.
"Fast Flash Mode" - запись блоками по 512 байт (одна строка флешь памяти).

P.S Подведём итоги выше написанного.
1. Сначала конектимся и пробуем работать с флешь в быстром режиме, а именно "Fast Flash Mode + SMART-PROG". Обычно все конфиги содержат нужные скрипты для инициализации озу и в 90% этот режим работает.
2. Если же возникают проблемы, то переходим на стандартный режим - "Fast Flash Mode". При этом обычно так же используется загрузчик в озу, но взаимодействие идёт в более медленном режиме, не использую всякие "фенечки" для ускорения.
3. Если и это не помогает и при работе с флешью все равно идут ошибки, то пробуем прошиваться в медленном режиме - без галок Fast и SMART. В этом режиме доступ ко флеши идёт напрямую через команды жтага. На CFI модулях вместо этого режима лучше переходить на универсальные CFI модули флешь.
4. Ещё один вариант это использование универсальных CFI модулей. Некоторые типы процессоров поддерживают только их (например PowerPC, Cortex). Скорость тут небольшая (запись идёт без участия загрузчиков), но и обычно не требуется ничего дополнительного для работы с флешью.


Вернуться к началу
 Профиль Фотоальбом  
 
 Заголовок сообщения: D-LINK DWL-3200AP Atheros AR2313 JTAG
СообщениеДобавлено: 16 окт 2011, 23:16 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Попался D-LINK DWL-3200AP со слетом загрузчика.
Проц - Atheros AR2313
Флешь - S29GL032

Распиновка разъема EJTAG
Изображение

Родного дампа найти не удалось, поэтому сначала я превратил точку в 2100АР, а после обновил прошивку на родную.

Дамп для 2100АР берем тут, распаковываем дамп в отдельную папку. Открываем его в винхексе и конвертируем для CPLD_EJTAG - Edit -> Modify Data -> 32-bit byte swap, не забываем сохранить.

Почитав форум, а конкретно
Цитата:
Порт JTAG очень медленный, например для заливки родного загрузчика размером 327 килобайт у меня ушло 9 часов, представьте сколько будет по времени литься образ флэшки в 4 мегобайта, я заново заливал образ по причине того что у меня накрылся раздел ''/fl'' и при подключении через COM-порт была строчка ''tffsDevCreate failed.''. На прошивку образа флэш у меня ушло 2,5-3 суток. У других процесс проходил намного быстрее (181 минута и 44 часа соответственно), причину пока не выяснил.

сделал скрипт инициализации SDRAM для Atheros (приложен ниже).

Делаем конфиг для Atheros (по методе в первом сообщении)
Код:
[AR231x]
TAP = 0,0,0,0,5
Base = 1FC00000
RamBase = 80000000
CPU = 2
SubCPU = 0
FLSMode = 0
FLSType = 13
CPUID = 00000001
RunScript = 1
ScriptName = AR231x.ejs


Запускаем CPLD EJTAG, выбираем AR231x, отмечаем галочку "Fast Flash Mode" и конектимся

Код:
<------------------>
Задаем цепочку TAP и создаем модуль ЦПУ
Используем модуль ЦПУ MIPS PrAcc
Модуль ЦПУ успешно создан
Конфигурация ТАР - 0 0/0 0/5
Сбрасываем TAP
Читаем ID процессора
CpuID = 0x00000001
Читаем IMP code
IMPCODE = 0x40404000
EJTAG version  2.6
EJTAG function :  R4k  ASID_8 NoDMA  MIPS32
 
Переводим процессор в Debug ... OK
Инициализируем модуль PrAcc ....
Модуль ЦПУ инициализирован
Используем файл скрипта AR231x.ejs
Скрипт выполнен
Создаем модуль флешь
Проверяем зависимости от процессора
Модуль >AMD8 Fast PrAcc< требует тип(ы) процессоров :
MIPS PrAcc
 
Зависимости удовлетворены
Базовый адресс = 0x1FC00000
Режим доступа 8 бит / разрядность 8 бит
Первые 16 байт флеши со смещения 0x0:
 4F 01 00 10 00 00 00 00 90 01 00 10 00 00 00 00
Определяем флешь ...
Manufacture ID = 0x0001 Device ID = 0x007E
CFI  = Q, R, Y
Boot type = 2
CFI флешь найдена
VENDOR ID = 0x2
Flash size = 4194304
Block count = 2
Region = 0 ; Block size = 8192 ; Block count = 8
Region = 1 ; Block size = 65536 ; Block count = 63


Если определилось как надо, то прошиваем дамп

Код:
Записываем файл C:\CPLD_EJTAG\fullflash.bin
Размер = 4194304 байт
Будем стирать 71 блок(ов)...
Стираем блок 71 с адресом = 0x3F0000
Успешно стерто 71 блок(ов)
Запись начата
19:06:23
Используем быструю запись
Размер пакета 2048 байт
Запись завершена
19:31:21


25 минут и на руках восстановленая точка доступа :)

Скрипт распаковать в папку Script, заменив старый.


У вас нет необходимых прав для просмотра вложений в этом сообщении.


Вернуться к началу
 Профиль Фотоальбом  
 
 Заголовок сообщения: Определение цепочки ТАР
СообщениеДобавлено: 10 ноя 2011, 20:53 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
С версии 0.1.0.2063 для CPLD (0.1.0.2036 для USB-F и 0.1.0.2048 для USB-S) добавлена небольшая, но полезная функция - анализ цепочки ТАР.

Как этим пользоваться.
Запускаем софт Ejtag TT, подключаем жтаг и устройство.
Ничего не выбирая в типе ЦПУ и ядра, просто нажимаем конект.
Изображение

Переходим в закладку "Установки" и нажимаем "Scan TAP's"
Изображение

На скрине в логе видно определение 2-х устройств в цепочке ТАР.
Если все определено верно, то конфигурация ТАР выставляется по этим значениям, остается только принять эти значения (кнопкой применить) или проигнорировать.

Определение работает только с устройствами строго поддерживающими стандарт IEEE ( это большинство, но бывают и исключения, например процессоры Ali M33xx)


Вернуться к началу
 Профиль Фотоальбом  
 
 Заголовок сообщения: Re: Тонкости использования ПО EJTAG
СообщениеДобавлено: 13 ноя 2011, 11:15 
В сети
Администратор
Аватара пользователя

Зарегистрирован: 15 окт 2011, 14:15
Сообщения: 4145
Фото: 64
Откуда: Красноярск
Страна: Russia (ru)
Благодарил (а): 180 раз.
Поблагодарили: 3861 раз.
Пункты репутации: 290
СвойСвойСвой
Использование закладки Console

Введение.

После нажатия кнопки "Конект" и инициализации CPU (даже если флешь не определилась) становится возможно использование простейших функций отладки в закладке "Console".
Список доступных команд (полный список выводится в лог по команде "help", не все команды еще реализованы)

Код:
regrd #regnum - чтение регистра процессора
regwr #regnum #hex_value - запись регистра процессора
run #hex_address - запуск процессора с указанного адреса
state - текущее состояние процессора (остановлен\работает)
halt - остановить процессор
ldram #hex_address - загрузить бинарный файл в память по адресу
getram #hex_address #hex_size - прочитать область памяти в файл
memrd #hex_address #mode - чтение ячейки памяти, mode = 0 - byte, 1 - word, 2 - dword
memwr #hex_address #hex_val #mode - запись ячейки памяти, mode = 0 - byte, 1 - word, 2 - dword

Аргументы команд - числовые значения. Префикс #hex означает что число в НЕХ значениях.

Например:
memrd 80004000 2
чтение адреса 0х80004000 размерностью DWORD (BYTE = 1байт, WORD = 2байта, DWORD = 4байта)
memwr 80004000 12345678 2
запись числа 0х12345678 в адрес 0х80004000 размерностью DWORD

Команды regrd, regwr работают пока только на ARM7\9; run, state, halt - на ARM7\9 и MIPS PrAcc. Остальные (чтение\запись ячейки\области памяти) работают на всех типах CPU.

Пример использования (ARM7)

Конектимся к процессору
Изображение

Переходим в закладку Console

При первом использовании консоли, Windows выдаст предупреждение (нажать кнопку "Разблокировать")
Изображение

Вводим команду help в поле ввода команд и нажимаем Enter (выводится список команд)
Изображение

Читаем ячейку, записываем и снова читаем - убеждаемся что это озу
Изображение

В окне команд отображается список введенных ранее команд. Щелкнув дважды по команде она копируется в поле ввода команд



За это сообщение автора sergiuss поблагодарили: 2 DIMAG (13 ноя 2011, 23:52), Yaro (29 ноя 2013, 14:41)
  Рейтинг: 6.67%
Вернуться к началу
 Профиль Фотоальбом  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 7 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group (блог о phpBB)
Русская поддержка phpBB
phpBB Shop