|
OpenSource DMA for Virtex 5, проект на www.ds-dev.ru |
|
|
|
Jul 14 2011, 15:32
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Всем доброго времени суток. Я открыл исходный код для проекта контроллера PCI Express на ПЛИС Virtex 5; Проект доступен по адресу: http://www.ds-dev.ruПроект ещё не завершён. Сейчас мне пришлось опять его отложить. Но ознакомится с ним уже можно. Работает полная модель системы. В железе есть недостатки: 1. Не работает прерывание. 2. Есть сбои при частых обращениях к регистрам BAR1 3. Есть сбой при одновременной работе двух каналов DMA Это всё исправимо. Меня интересует критический разбор проекта.
|
|
|
|
|
 |
Ответов
|
Nov 20 2013, 10:50
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
И ещё ничего не понял про NEXT_BLOCK.
Как я понял, в памяти PCI, что отображена в оперативную создаю структуру 64*8 байтов - это и есть блок дескрипторов. Допустим у меня 8192 байт, выделяется три куска памяти по 4096, 1712, 2384. Я создаю блок дескрипторов: 1. - адрес блока 1, команда JUMP_NEXT_BLOCK, размер(4096), направление передачи 2. - адрес блока 2, команда JUMP_NEXT_BLOCK, размер(1712), направление передачи 3. - адрес блока 3, команда EOT, размер(2384), направление передачи
Поясните, чем отличается JUMP_NEXT_DS от JUMP_NEXT_BLOCK и что делать с NEXT_BLOCK, какой писать адрес и как считать CRC.
Спасибо заранее.
|
|
|
|
|
Nov 25 2013, 15:58
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
В памяти компьютера создаётся блок 64*8=512 байт - это блок дескрипторов. Каждый дескриптор - это четыре байта: описание здесь: http://src.ds-dev.ru/doc/core/block_pe_ext_fifo.htmБлок содержит 63 дескриптора и указатель на следующий блок. Что будет происходить после завершения обмена с текущим блоком определяют три бита в поле CMD. Может быть установлен один из них, либо все нули. Если все нули - то канал DMA остановиться. Если JUMP_NEST_DS=1, то произойдёт переход к следующему дескриптору в этом блоке. Если JUMP_NEXT_BLOCK=1, то произойдёт переход к следующему блоку (при этом следующий дескритор содержит адрес следующего блока). Это бит может быть установлен у любого дескриптора. Т.е. не обязательно заполнять все 63 элемента, оставшиеся можно заполнить нулями. Если JUMP_DS0=1, то произойдёт переход к нулевому дескриптору в текущем блоке. Это позволяет не читать блоки дескрипторов из памяти. Обратите внимание - обмен всегда ведётся блоками кратными 4 кбайтам. А при выделении памяти в USER MEMORY - так и просто по 4 килобайта. Если выделено три блока памяти (допустим по 4096 байт), то нужно создать один блок дескрипторов размером 512 байт. 1. адрес блока 1, команда *JUMP_NEST_DS*, размер(4096), направление передачи 2. адрес блока 2, команда *JUMP_NEST_DS*, размер(4096), направление передачи 3. адрес блока 3, команда *EOT*, размер(4096), направление передачи Остальные дескрипторы - нули. В конце надо записать сигнатуру и контрольную сумму. Прерывание будет получено после завершения обмена с блоком 3. P.S. Направление передачи всегда одно и то же для одного сеанса работы. По поводу расчёта CRC - постараюсь выделить кусок программы, но чуть позже. По поводу записи в PE_EXT_FIFO и чтении FF. Интересное наблюдение. Я таких экспериментов не ставил, но вроде бы такого быть не должно. А для записи используются 32-х разрядные команды ?
|
|
|
|
|
Dec 12 2013, 13:32
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Цитата(dsmv @ Nov 25 2013, 19:58)  По поводу записи в PE_EXT_FIFO и чтении FF. Интересное наблюдение. Я таких экспериментов не ставил, но вроде бы такого быть не должно. А для записи используются 32-х разрядные команды ? Спасибо большое за развернутый ответ, всё понятно. Для записи/чтения PE_EXT_FIFO использовал 32-битные команды.
|
|
|
|
|
Dec 21 2013, 05:26
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(StrangerX @ Dec 12 2013, 16:32)  Спасибо большое за развернутый ответ, всё понятно. Для записи/чтения PE_EXT_FIFO использовал 32-битные команды. Вот нашёл класс для подсчёта CRC: PE_ExtChainItem.zip
|
|
|
|
Сообщений в этой теме
dsmv OpenSource DMA for Virtex 5 Jul 14 2011, 15:32 SFx добавьте скрипт сборки хотя бы, и туда старт модел... Jul 14 2011, 18:17 dsmv Цитата(SFx @ Jul 14 2011, 21:17) добавьте... Jul 15 2011, 09:40 SFx спасибо, на недельке погляжу. Jul 15 2011, 09:43 dsmv Контроллер работает всё лучше и лучше.
Работает в... Aug 12 2011, 09:58  Bad0512 Цитата(dsmv @ Aug 12 2011, 16:58) Контрол... Aug 17 2011, 03:33   dsmv Цитата(Bad0512 @ Aug 17 2011, 06:33) Под ... Aug 17 2011, 07:37    dsmv Есть хорошие новости:
прошло успешное тестирование... Aug 17 2011, 14:05    Bad0512 Цитата(dsmv @ Aug 17 2011, 14:37) Реализо... Aug 17 2011, 15:38     dmitry-tomsk Цитата(Bad0512 @ Aug 17 2011, 18:09) Нико... Aug 17 2011, 15:52     dsmv Цитата(Bad0512 @ Aug 17 2011, 18:38) Нико... Aug 18 2011, 04:40      Bad0512 Цитата(dsmv @ Aug 18 2011, 11:40) Докумен... Aug 18 2011, 14:13       dsmv Цитата(Bad0512 @ Aug 18 2011, 17:13) Если... Aug 22 2011, 04:46        dsmv Добавлен проект ML605_LX240T_CORE для платы ML605.... Aug 24 2011, 12:39         dsmv Всем доброго времени суток.
Несколько слов по пов... Aug 30 2011, 10:41          mhspace Цитата(dsmv @ Aug 30 2011, 13:41) Файлы с... Aug 31 2011, 14:49          Kuzmi4 Цитата(dsmv @ Aug 30 2011, 13:41) ...
2. ... Aug 31 2011, 14:55           dsmv Вот фрагмент отчета для проекта ambpex5_v20_sx50t_... Sep 1 2011, 08:09     FLTI Цитата(Bad0512 @ Aug 17 2011, 19:38) Погл... Aug 19 2011, 11:03 Kuzmi4 Вот бы ещё описалово какое-никакое к сорцам (хотя ... Sep 1 2011, 16:35 dsmv Цитата(Kuzmi4 @ Sep 1 2011, 19:35) Вот бы... Sep 2 2011, 08:39 Kuzmi4 2 dsmv
То есть, если я правильно понял, на данный ... Sep 2 2011, 11:04 dsmv Цитата(Kuzmi4 @ Sep 2 2011, 14:04) 2 dsmv... Sep 2 2011, 12:35  dsmv Готов проект для SP605. На модели работает. Теперь... Sep 2 2011, 15:18 Kuzmi4 2 dsmv
Для тестов могу взять систему с AMD Athlon6... Sep 2 2011, 16:31 dsmv Это не горит. Вторник тоже подойдет.
Прошивка и д... Sep 2 2011, 19:34 Kuzmi4 2 dsmv
Просмотрел файлы. Возник вопрос касательно ... Sep 6 2011, 13:21 Kuzmi4 Результаты (система: AMD Athlon64 3000+, 1536 MB R... Sep 6 2011, 15:46 dsmv Цитата(Kuzmi4 @ Sep 6 2011, 18:46) резюми... Sep 6 2011, 16:18 Kuzmi4 2 dsmv
да , провтыкал я со спидгрейдом: Spartan®-6... Sep 6 2011, 16:28 dsmv Нет, частота локальной шины ядра 62.5 Мгц - 16 нс.... Sep 6 2011, 17:00  dsmv Есть новая информация. Проект SP605_LX45T_CORE усп... Sep 13 2011, 08:42 Jack_of_Shadows Добрый день! Пишет вам благодарный, но немного... Dec 28 2012, 14:12 dsmv Спасибо за интерес к моему проекту. Тест работает ... Jan 11 2013, 13:14 Kuzmi4 2 Jack_of_Shadows
Есть версия для вишбона, или вас... Jan 5 2013, 19:29 Jack_of_Shadows Kuzmi4, да-да, видел, на данном этапе мне это не о... Jan 6 2013, 10:07 Kuzmi4 2 Jack_of_Shadows
А куда проще ? Времянки на WB до... Jan 6 2013, 10:14 Jack_of_Shadows Kuzmi4,
я хотел сказать что вокруг PCIE_CORE64_M1 ... Jan 7 2013, 18:25 Jack_of_Shadows И еще, может я конечно начинаю не с той стороны, н... Jan 9 2013, 15:08 Jack_of_Shadows ЦитатаЕсть возможность проверить работу на компьют... Jan 14 2013, 08:10 Kuzmi4 2 Jack_of_Shadows
удалось побороть ошибку ? Систем... Jan 17 2013, 07:37 Jack_of_Shadows Kuzmi4
пока нет. Управляющие регистры доступны, яв... Jan 17 2013, 08:31 karak Цитата(Jack_of_Shadows @ Jan 17 2013, 12... Jan 17 2013, 09:33 karak Цитата(Jack_of_Shadows @ Jan 17 2013, 12... Jan 17 2013, 10:11 Jack_of_Shadows karak
Код Device information
m_TotalIRQ = 0
... Jan 17 2013, 09:40 Jack_of_Shadows Цитатау вас 64 битная linux система или 32?
64 бит... Jan 17 2013, 10:16 dsmv Цитата(Jack_of_Shadows @ Jan 17 2013, 13... Jan 17 2013, 10:50  karak Цитата(dsmv @ Jan 17 2013, 14:50) FIDO_ID... Jan 17 2013, 15:04 Jack_of_Shadows karak,
мне советовали по поводу проги к вам обраща... Jan 21 2013, 12:19 karak В функции ошибка, из за которой всегда данные ввод... Jan 28 2013, 10:52 Jack_of_Shadows Всё руки не доходили написать по поводу 64-битного... Mar 22 2013, 07:23 StrangerX Доброго времени суток.
Пытаюсь запустить ваше ядро... Nov 20 2013, 07:03 Antonx86 Добрый день!
Имеется желание запустить проект ... Feb 10 2014, 05:15 dsmv Добрый день.
Давайте сделаем. Я посмотрю на AC701... Feb 11 2014, 11:15  dsmv Собрал проект AC701_A200T_CORE. Пока есть проблемы... Feb 18 2014, 06:58 Antonx86 dsmv, добрый день,
в http://ds-dev.ru/issues/65 о... Mar 12 2014, 05:54 dsmv Настройки нормальные. Хотя у меня есть некоторые о... Mar 12 2014, 09:46  dsmv Проверил с ядром от ISE 14.7 - не работает.
Пробл... Mar 17 2014, 12:59 Antonx86 dsmv, добрый день,
измеряли ли Вы скорость обмена ... Jun 10 2014, 00:32 dsmv Цитата(Antonx86 @ Jun 10 2014, 03:32) dsm... Jun 20 2014, 13:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|