[an error occurred while processing this directive]
Для al1 и сочуствующих, то есть не имеющих денег приобрести USBJTAG(+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 03 марта 2003 г. 19:03


Al1 предложил:
"Давайте общими усилиями попытаемся сделать USB JTAG, чтоб он был всем доступен,
как например XDS510(т.е. плата, схема, программа или прошивка)!"

Интересно где можно найти "плата, схема, программа или прошивка" для XDS510 ? :-)))

Вот кусочек FAQ от Spectrum Digital:
"Q3.
Where can I get the schematics for Spectrum Digital products ?
A3:
The schematics for the EVMs, DSK, eZdsps, and accessories are in the manuals which
can be downloaded off the website from the "Technical Library". The schematics for the
emulators are not in the manuals. This is considered proprietary information.

Q5:
Can I get the Gerber data for the EVM, DSK, eZdsps, emulators ?
A5:
Spectrum Digital does not provide Gerber data for any of its products"

К чему собственно хочу начать новую ветку?

Пока нет возможности занятся собственно программированием DSP,
решил изучить сам процесс обмена между cc_app.exe и собственно DSP.

Взял старый добрый W32DASM версии 8.7 от URSoft...
Первое, что выяснил "узловая" точка через которую идет обмен - xdsfast3.dll

Например если указать, что подключен DSK c 5402 на борту,
То есть один "конец" пути выглядит следующим образом.

xdsfast3.dll <-> dsk5402pp <-> ppc54x.dll <-> dlportio.dll

В dlportio.dll есть две функции которые используются в ppc54x.dll
DlPortReadPortUchar
DlPortWritePortUchar

Назначение их понятно: читать/писать в/из порта.

В ppc54x.dll более интересные експортируемые функции, всего их 31.

Но интерес прадставляют только следующие:

+++++++++++++++++++ IMPORT MODULE DETAILS +++++++++++++++
Import Module 001: ppc54x.dll
Addr:00002186 hint(000A) Name: ppc54x_open
Addr:00002124 hint(000F) Name: ppc54x_read_tbc_reg
Addr:000021AA hint(0015) Name: ppc54x_tbc_reset
Addr:00002194 hint(0016) Name: ppc54x_tbc_unreset
Addr:00002176 hint(0012) Name: ppc54x_state
Addr:00002162 hint(0000) Name: ppc54x_board_info
Addr:0000214A hint(000C) Name: ppc54x_read_cpld_reg
Addr:0000213A hint(0002) Name: ppc54x_close
Addr:000021BE hint(0014) Name: ppc54x_tbc_ready
Addr:0000210C hint(001E) Name: ppc54x_write_tbc_reg

Если вы взглянете на этот список, то наверное у вас появится подозрение,
что ppc54x.dll получает от dsk5402pp конкретные команды по обращению к SN74ACT8990(TBC).
А также возвращает данные или коды ошибок.

Если возникают сомнения, что делает та или иная функция, то можно взять W32DASM
и посмотреть или ppc54xdll.h который идет к web версии CCS.

Вот например:

typedef struct _Register
{
USHORT Regoff; // Register to read/write
USHORT DataVal; // Data to read/write
} Register, *PRegister;

Понятно как происходит передача параметров для READ/WRITE TBC регистр.

Или вот:
//DSK board state
typedef enum {
PPC54X_OPEN,
PPC54X_CLOSED,
PPC54X_RESET,
PPC54X_UNRESET,
PPC54X_DSK_NOT_CONNECTED
} PPC54X_STATE, *PPPC54X_STATE;

Понятно что возвращается по запросу ppc54x_state.

ppc54x_read_cpld_reg я еще не разбирал, но думаю считываются сигналы INT и READY от TBC.
Можете заглянуть в тот же хеадер (ppc54xdll.h)

//CPLD registers
CPLD_CTRL_REG = 0x00,
CPLD_STAT1_REG = 0x01,
CPLD_STAT2_REG = 0x02,
CPLD_REV_REG = 0x03,
CPLD_SEM0_REG = 0x04,
CPLD_SEM1_REG = 0x05

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Таким образом можно написать собственную DLL которая будет доставлять
команды и данные к TBC и считывать ответы с него.
Не важно где он находится на ISA, PCI или USB.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
В том же хеадере можно найти такую конструкцию

// DSP board type definition
typedef enum {
UNKNOWN_BOARD = 0,
PPC_5410_BOARD = 5410,
PPC_5402_BOARD = 5402,
} PPC54X_BOARD_TYPE, *PPPC54X_BOARD_TYPE;

которая объясняет следующие строчки в функции ppc_open

mov ebp, dword ptr [esp+10]
push esi
cmp ebp, 0000151A ; :-))) это число 5402 в десятичной форме
push edi
je 100010AD
cmp ebp, 00001522 ; :-))) это число 5410 в десятичной форме

:-(
К сожалению переписанная DLL будет работать только с TMS320VC5402.

Рассмотрим dsk5402pp по ближе:
Эта DLL совсем простая :-)

У нее только 3 экспортируемые функции:

+++++++++++++++++++ EXPORTED FUNCTIONS ++++++++++++++++++
Number of Exported Functions = 0003 (decimal)
Addr:100016B0 Ord: 1 (0001h) Name: POD_call
Addr:10001920 Ord: 2 (0002h) Name: POD_close
Addr:10001740 Ord: 3 (0003h) Name: POD_open

и одна импортируемая:

Import Module 002: xdsfast3.dll
Addr:000021DE hint(0000) Name: SMG_GetConfigVariable

Не считая уже рассмотренных выше, и принадлежащих самому богатому Kernel32 и прочих.

Вчера дописал DLL шпионящую за PPC54x.

Разобрался (поверхностно) с функцией POD_open.
вот какие функции и с какими параметрами вызываются:

ppc54x_open
ppc54x_state
ppc54x_boardInfo
ppc54x_read_cpld_reg
write_tbc_reg: 0A, data=7001
write_tbc_reg: 05, data=0C0C
write_tbc_reg: 04, data=1081
write_tbc_reg: 02, data=0001
write_tbc_reg: 03, data=0000

Если откроете документацию на SN74ACT8990, то увидите, что записи в
TBC соответствуют типовой процедуре инициализации TBC.

Есть драйвер от USB ICE JTAG(ice.dll).

Вот его импорт/експорт функции:
Import Module 001: xdsfast3.dll
Addr:000072F4 hint(0000) Name: SMG_GetConfigVariable

+++++++++++++++++++ EXPORTED FUNCTIONS ++++++++++++++++++
Number of Exported Functions = 0003 (decimal)

Addr:100039F0 Ord: 1 (0001h) Name: POD_call
Addr:10003DAA Ord: 2 (0002h) Name: POD_close
Addr:10003B23 Ord: 3 (0003h) Name: POD_open

Найдите 10 отличий. :-)))

От Black Hawk mdpjtag3.dll выглядит аналогично.

Таким образом подходим к решению номер 2.
Нужен драйвер(DLL) который будет принимать запросы от xdsfast3.dll
POD_call, POD_close, POD_open, анализировать их и преобразовывать их в
обращение к TBC.
Что делает POD_open понятно из написанного выше.
Что делает POD_close мне не известно, да и наверно не нужно никому :-)

Осталось разобратся с POD_call.
Всего функций 30h.

Функция 08 = ppc54x_read_tbc_reg
09 = ppc54x_write_tbc_reg
10 = ppc54x_tbc_ready

На первом этапе наверное правильнее будет написать собственный DLL для
имеющегося живьем ISA или PCI JTAG емулятора.
А затем выбросить TBC и реализовать на FPGA.

Я присоединяюсь и al1 и задам вопросы, где будем собираться?
FTP у CAP есть, а как его найти?

Это все, что я хотел сказать в своем коротком сообщении.

Просьба не пинать ногами за очепятки и ашипки.
С DSP я знаком больше теоретически, а debugger взял в руки месяц назад :-)



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru