|
|
 |
Ответов
|
Nov 22 2017, 11:05
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 30-01-15
Пользователь №: 84 837

|
Здравствуйте, взялся за реализацию обмена по pcie. Плата с Kintex7. Пк Win7, смотрю память программой RW-Everything, ну и собственная есть для чтения из БАРов и памяти. Подключил пример с ядром 7 Series FPGAs Integrated Block for PCI Express v1.7. Чтение и запись, работа с БАРами получилась, теперь стоит задача, чтобы железо писало по заданному адресу. В корке по запросу чтения из БАРа реализована запись сл. образом: Код s_axis_tx_tdata <= ( rd_data & req_rid & req_tag & '0' & lower_addr & completer_id & "000" & '0' & byte_count & '0' & PIO_CPLD_FMT_TYPE & --"1001010" '0' & req_tc & "0000" & req_td & req_ep & req_attr & "00" & req_len ) after TCQ; Начал городить запись в память по заданному адресу, решил попробовать написать в ту же область (в моем случае под БАР выделяется память с адреса 0xF610000), изменил пакет сл образом. Код s_axis_tx_tdata <= ( rd_data & X"F6100000" & req_rid & req_tag & req_lb & --здесь значение "1111" --не совсем понял назначение этих двух переменных, но в примерах дма такие значения. req_fb & -- здесь значение "1111" "01000000" & --запись в память '0' & req_tc & "0000" & req_td & req_ep & req_attr & "00" & req_len ) after TCQ; После попытки чтения, комп подвисает немного, но данных нет, пробовал по другому адресу, тоже ничего. Подскажите, пожалуйста, может служебные переменные "вырванные" из запроса на чтение БАР(шины m_axis_rx_tdata) не подходят в данном случае. Хотелось бы пример команды с чистой записью из железки в ПК по заданному адресу, возможно однократная.
Сообщение отредактировал exigo - Nov 23 2017, 05:16
|
|
|
|
|
Nov 22 2017, 11:15
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(exigo @ Nov 22 2017, 14:05)  Хотелось бы пример команды с чистой записью из железки в ПК по заданному адресу, возможно однократная. Сам ПК успешно считал из BAR через эту программу (rw everything), т.е. проходят запросы CplD? Итак, попытка записать в ПК из железки - откуда берется адрес? И как он попадает в железку, хардкод что ли? Цитата(exigo @ Nov 22 2017, 14:05)  решил попробовать написать в ту же область т.е. данные будут прилетать без запроса? Кто их там ждет? А кто сказал что адрес для устройства и адрес для ядра ОС один и тот же? Не знаю, возможно ли это, я так никогда не делал, может потому компьютер удивляется.
--------------------
|
|
|
|
|
Nov 23 2017, 03:12
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 30-01-15
Пользователь №: 84 837

|
Цитата(AVR @ Nov 22 2017, 18:15)  Сам ПК успешно считал из BAR через эту программу (rw everything), т.е. проходят запросы CplD? Итак, попытка записать в ПК из железки - откуда берется адрес? И как он попадает в железку, хардкод что ли?
т.е. данные будут прилетать без запроса? Кто их там ждет? А кто сказал что адрес для устройства и адрес для ядра ОС один и тот же? Не знаю, возможно ли это, я так никогда не делал, может потому компьютер удивляется. Да, исходный пример с ядром по записи-чтению в БАР, работает. Запросы проходят, вот я подумал изменить этот кусок, чтобы он писал не в БАР, а мной заданный адрес (для начала прям в коде железно адрес, пробовал разные, а потом через БАР буду задавать выделенную область). Поэтому вот хочу разобраться просто в команде записи по заданному адресу. //update Я похоже адрес неправильно ввожу, т.к. там в конце два бита зарезервированы, а адрес 30 разрядный
Сообщение отредактировал exigo - Nov 23 2017, 05:16
|
|
|
|
|
Nov 23 2017, 07:36
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(exigo @ Nov 23 2017, 06:12)  Я похоже адрес неправильно ввожу, т.к. там в конце два бита зарезервированы, а адрес 30 разрядный Для Windows не подскажу, но по аналогии в Linux можно (в качестве самого базового способа) вызвать dma_alloc_coherent и выделить некоторый буфер, например 4096 байт. И получив два адреса, один отдается устройство в которое оно может писать в произвольный момент времени, а ядро ОС может читать что записало устройство по второму адресу. Отсюда и вопрос - как Вы выделяете память, приведите пример. И какие меры приняты, чтобы оба адреса оставались постоянными, чтоб их можно было чуть ли не зашить в прошивку. Если пользуетесь сторонней программой, то похоже это тот самый момент, когда надо уже начинать писать свой драйвер. Цитата(exigo @ Nov 23 2017, 06:12)  Я похоже адрес неправильно ввожу, т.к. там в конце два бита зарезервированы, а адрес 30 разрядный Да, там есть такое дело, адрес должен быть с шагом 4 байта, если не ошибаюсь, и действительно 2 младших бита нулевые.
--------------------
|
|
|
|
|
Nov 24 2017, 10:41
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 30-01-15
Пользователь №: 84 837

|
Цитата(AVR @ Nov 23 2017, 14:36)  Для Windows не подскажу, но по аналогии в Linux можно (в качестве самого базового способа) вызвать dma_alloc_coherent и выделить некоторый буфер, например 4096 байт. И получив два адреса, один отдается устройство в которое оно может писать в произвольный момент времени, а ядро ОС может читать что записало устройство по второму адресу. Отсюда и вопрос - как Вы выделяете память, приведите пример. И какие меры приняты, чтобы оба адреса оставались постоянными, чтоб их можно было чуть ли не зашить в прошивку.
Если пользуетесь сторонней программой, то похоже это тот самый момент, когда надо уже начинать писать свой драйвер.
Да, там есть такое дело, адрес должен быть с шагом 4 байта, если не ошибаюсь, и действительно 2 младших бита нулевые. С выделением памяти есть своя программа, предполагал, пока не передаю выделенный адрес в плис, просто протестировать запись с произвольную ячейку, но видимо так нельзя? (заведомо брал побольше адрес, чтобы он неиспользовался и там нулевые значения были).
Сообщение отредактировал exigo - Nov 24 2017, 10:47
|
|
|
|
|
Nov 24 2017, 11:10
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(exigo @ Nov 24 2017, 13:41)  С выделением памяти есть своя программа, предполагал, пока не передаю выделенный адрес в плис, просто протестировать запись с произвольную ячейку, но видимо так нельзя? (заведомо брал побольше адрес, чтобы он неиспользовался и там нулевые значения были). Вот не знаю, мне кажется (кажется!) так нельзя. У меня есть собственные догадки, почему так, не буду их афишировать, дабы не прогневать специалистов  Лучше полагаться на API операционной системы, и всё будет работать. Это не микроконтроллер, совсем произвольно так с адресами нельзя поступать, всё (адреса шин) должно штатным образом отображаться одно в другое. Цитата(exigo @ Nov 24 2017, 13:41)  А по поводу адреса в ПЛИС, при 32 битной адресации address[31:2], [1,0] - reserv. Получается адрес максимум 30 разрядный? 3FFFFFFF максимальный адрес, или адрес считывается вместе с младшими нулями? и нормально можно адресовать FFFFFFFF. А как же 64-битная адресация у PCI-E? Тут http://xillybus.com/tutorials/pci-express-...utorial-guide-1 пишут, что такое редко когда надо. В принципе, ясно, что ширина адреса это не катастрофа, всегда можно обойти окошечками.
--------------------
|
|
|
|
Сообщений в этой теме
exigo kintex7+pci-e Jan 19 2017, 08:39 RobFPGA Приветствую!
Для начала нужно убедится что пр... Jan 19 2017, 09:10 AVR Цитата(exigo @ Jan 19 2017, 11:39) Но на ... Jan 19 2017, 10:00 exigo Мне думалось, что пример должен сразу отрабатывать... Jan 19 2017, 10:24 Lixlex Цитата(exigo @ Jan 19 2017, 13:24) Мне ду... Jan 19 2017, 11:37  exigo Цитата(Lixlex @ Jan 19 2017, 18:37) Нет, ... Jan 20 2017, 02:50   toshas Цитата(exigo @ Jan 20 2017, 05:50) Но рез... Jan 20 2017, 04:37    exigo Цитата(toshas @ Jan 20 2017, 11:37) В фай... Jan 20 2017, 06:49     Flood Цитата(exigo @ Jan 20 2017, 09:49) значит... Jan 20 2017, 09:27      exigo Цитата(Flood @ Jan 20 2017, 16:27) Ядро г... Jan 20 2017, 09:40       Flood Цитата(exigo @ Jan 20 2017, 12:40) При ко... Jan 20 2017, 09:50 AVR Цитата(exigo @ Jan 19 2017, 13:24) Мне ду... Jan 19 2017, 12:18 Inanity Дело не только в ref clk. Устройство должно быть г... Jan 19 2017, 10:59 RobFPGA Приветствую!
Цитата(Inanity @ Jan 19 201... Jan 19 2017, 11:49 exigo Что-то пересмотрел несколько примеров ucf для разн... Jan 24 2017, 04:35 Flood Выложите схемы обеих плат, без них нет никакого см... Jan 24 2017, 20:12 exigo Цитата(Flood @ Jan 25 2017, 03:12) Выложи... Jan 25 2017, 03:32 exigo Что-то так и не пойму, если подключаем к sys_reset... Jan 27 2017, 09:15 Flood Цитата(exigo @ Jan 27 2017, 12:15) Что-то... Jan 29 2017, 19:04 exigo Судя по этому, правильно X0Y7
Заметил, что должна ... Jan 30 2017, 05:03 Flood Если есть ощущение, что пинаут правильный (что не ... Jan 30 2017, 16:06 exigo На плате таковую осциллографом увидел, копаю дальш... Feb 3 2017, 02:53 exigo Устройство увиделось в системе.
И тактовую и транс... Feb 7 2017, 05:15 AVR Еще одна деталь, насчет "нормально адресовать... Nov 25 2017, 12:03 exigo Проверенными методами выделяю память, и передаю на... Jan 9 2018, 09:32 exigo Скажите, пожалуйста, кто знает, похоже на правду и... Jan 15 2018, 04:31 AVR Цитата(exigo @ Jan 15 2018, 07:31) Скажит... Jan 15 2018, 07:12 exigo Да и светодиоды использую для проверки и chipscope... Jan 15 2018, 08:26 AVR Цитата(exigo @ Jan 15 2018, 11:26) Да и с... Jan 15 2018, 12:47 exigo Снова приветствую, запись завелась, теперь новый з... Mar 6 2018, 10:12 AVR Цитата(exigo @ Mar 6 2018, 13:12) Снова п... Mar 6 2018, 12:00 exigo Дада, вчера не успел на работе)
Поставил вивадо и ... Mar 7 2018, 03:54 AVR Цитата(exigo @ Mar 7 2018, 06:54) добавил... Mar 7 2018, 09:39 exigo Вернул на минимальную паузу в один такт между TLP,... Mar 14 2018, 09:00 XVR Цитата(exigo @ Mar 14 2018, 12:00) И еще,... Mar 14 2018, 10:15 toshas Цитата(exigo @ Mar 14 2018, 12:00) Вернул... Mar 14 2018, 15:47 exigo Всем привет, благополучно юзал pcie. Но тут мне об... Aug 24 2018, 09:04 AVR Цитата(exigo @ Aug 24 2018, 12:04) Всем п... Aug 24 2018, 11:11 exigo В последних версиях еще отслеживаю кредиты (tx_buf... Aug 27 2018, 03:38 exigo В чипскоп завел проект, tx_buf заканчиваются и вст... Sep 7 2018, 08:51 RobFPGA Приветствую!
Цитата(exigo @ Sep 7 2018, 1... Sep 7 2018, 09:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|