реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> COMPLETION на запрос MRd, как формировать ответ ?
Костян
сообщение Aug 9 2011, 13:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Дано, запрос чтения памяти со стороны PC
MRd:
CODE
000000001 0060000F
F60001000


Подробнее по полям:
Length = 1 DW
Requester ID = 0x60
Last DW BE = 0x0
first DW BE = 0xF
Address = 0xF6001000


Как коректно сформировать ответ CpLD c 1 DW?

Не понятны поля :
Lenght (такой же , как и у Mrd ?)
Byte Count (настолько я понял из пояснений на это поля, в данном случае 0 ? )
Lower Address (первые биты адресса 0xF6001000 ?)
Completer ID (любой ? )

Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 10 2011, 04:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(Костян @ Aug 9 2011, 16:15) *
Как коректно сформировать ответ CpLD c 1 DW?

Не понятны поля :
Lenght (такой же , как и у Mrd ?)
Byte Count (настолько я понял из пояснений на это поля, в данном случае 0 ? )
Lower Address (первые биты адресса 0xF6001000 ?)
Completer ID (любой ? )


Lenght = 1
Byte Count = 4
Lower Address - в соответствии с BE - для адреса 0xF6001000 - должен быть 0.

completer_id - это идентификатор устройства в системе PCI Express, собирается из полей cfg_bus_number, cfg_device_number, cfg_function_number.

Код
  completer_id     <= (cfg_bus_number_c &
                       cfg_device_number_c &
                       cfg_function_number_c );
Go to the top of the page
 
+Quote Post
Костян
сообщение Aug 10 2011, 06:51
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (dsmv @ Aug 10 2011, 03:07) *
Byte Count = 4

спасибо. тогда я не совсем понимаю значение Byte Count. Он же показывает оставшееся число байт, почему оно 4 ?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 10 2011, 09:08
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(Костян @ Aug 10 2011, 09:51) *
спасибо. тогда я не совсем понимаю значение Byte Count. Он же показывает оставшееся число байт, почему оно 4 ?


Вопрос коварный. Но всё-таки для ответа с DW=1 должно быть 4.
См. Table 2-21: PCI EXPRESS BASE SPECIFICATION, REV. 1.1

Если на запрос чтения размером N возвращается несколько ответов, то byte_count формируется так:
1. N
2. N - <число байт в ответе 1>
3. N - <число байт в ответе 1 и ответе 2 >
и т.д.
Go to the top of the page
 
+Quote Post
Костян
сообщение Aug 10 2011, 09:18
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (dsmv @ Aug 10 2011, 08:08) *
Вопрос коварный. Но всё-таки для ответа с DW=1 должно быть 4.
См. Table 2-21: PCI EXPRESS BASE SPECIFICATION, REV. 1.1

Если на запрос чтения размером N возвращается несколько ответов, то byte_count формируется так:
1. N
2. N - <число байт в ответе 1>
3. N - <число байт в ответе 1 и ответе 2 >
и т.д.

а вот где собака зарыта. спасибо. понятно. т.е считаем кол-во оставщихся байт еще до отправки cpld
Go to the top of the page
 
+Quote Post
Костян
сообщение Aug 11 2011, 08:17
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Интересный эффект. Читает ровно 5 раз верно, на шестой дает 0xFFFFFFFF. И это до тех пор, пока не перезагрузить ОС.
В chipscope заметно, что все запросы WRd идентичны. Соответственно все ответы CplD тоже

Читаем при помощи windriver:

CODE
    DWORD size = 1;

    DWORD *data = (PDWORD) malloc(size*sizeof(ULONGLONG));


    if (WDC_ReadAddrBlock(deviceHandle, addrSpace, 0, size*sizeof(DWORD), data, WDC_MODE_32, WDC_ADDR_RW_DEFAULT)) {
        printf("ERROR: WDC_ReadAddrBlock\n");
        goto Exit;

    }


Критично ли время ответа CplD на запрос MRd, в каких пределах оно должно находится ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 11 2011, 12:21
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(Костян @ Aug 11 2011, 11:17) *
Критично ли время ответа CplD на запрос MRd, в каких пределах оно должно находится ?


Странно. Вроде всё правильно. Время не критично, оно может быть намного больше.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 13:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016