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

 
 
> Знакокам PCI: DMA запись в память ПК
L_Konstantin
сообщение Nov 1 2006, 11:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



При попытке писать в память (команда CBE = X"F") 64-битных данных происходит следующее:
1. происходит запись 1280 байт (80 транзакций по 64 бита), после чего транзакция прерывается по DisconnectOnNextADB - все корректно.
2. при продолжении как будто происходит все номрально, но при этом после 4 транзакции передачи данных выставляется STOP (DisconnectOnNextADB), но при этом на 8 такте снимаются TRDY и DEVSEL.

Как это может быть, если в стандарте записано что прерывание транзакции возможно лишь на границу в 128 байт (16 тактов по 64 бита).

Я в полном ступоре: либо я сильно чего-то не понимаю, либо налицо несоответствие поведения стандарту PCI.

(попытался прикрепить картинку с логгера как происходит отсоединение target-а)
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BSV
сообщение Nov 1 2006, 12:53
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Регистр Сacheline Size реализован? Какое он имеет значение?
В стандарте написано, что Master обязан выдать данные целиком исключая случай, когда транзакция прерывается Target'ом. (i.e., the master intends to write all bytes within the addressed cacheline in a single PCI transaction unless interrupted by the target.) На картинке похоже, что STOP#, IRDY#, TRDY#, DEVSEL# снимаются на такт позже, чем этого требует спецификация, хотя, возможно, это глюк логгера.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
L_Konstantin
сообщение Nov 2 2006, 06:37
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(BSV @ Nov 1 2006, 18:53) *
Регистр Сacheline Size реализован? Какое он имеет значение?
В стандарте написано, что Master обязан выдать данные целиком исключая случай, когда транзакция прерывается Target'ом. (i.e., the master intends to write all bytes within the addressed cacheline in a single PCI transaction unless interrupted by the target.) На картинке похоже, что STOP#, IRDY#, TRDY#, DEVSEL# снимаются на такт позже, чем этого требует спецификация, хотя, возможно, это глюк логгера.


1. Регист Сacheline Size реализован. Как того требует спецификация после reset он встает в ноль, затем система его записывает в значение X"8".

2. я работаю в режиме мастера, то есть обращаюсь к таргету. Соответственно сигналами STOP#, IRDY# и DEVSEL# рулит он. Я же вижу что по прошествие 4 тактов он выставляет запрос на прерывание, но при этом после 8 такта снимает все свои сигналы. А я при этом, согласно стандарту PCI-X, планирую прервать транзацию на 16 такте передачи данных.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:30
Рейтинг@Mail.ru


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