доступ к памяти pcie в linux

я пытаюсь сделать свою собственную карту pcie. Я использую плату xilinx spartan 6 sp605 с интегрированным блоком spartan 6 для pci express. моя целевая система — Ubuntu 16.04. Мой компьютер видит карту pcie, когда я делаю lspci, но у меня проблемы с чтением памяти с карты pcie. я использую этот инструмент, который я нашел для чтения памяти с устройства без необходимости делать драйвер,

https://github.com/billfarrow/pcimem/blob/master/README

Я использую пример кода, который поставляется с интегрированным блоком Spartan 6 для записи в память с карты pcie, используя следующий код

  wire [31:0] data_reg;
wire [10:0] add_reg;
assign add_reg = 11'b00000000000;
assign data_reg  = 32'b00001111111111111111111111111111;

PIO_EP_MEM_ACCESS EP_MEM (
.
.
.
// Memory Write Port
.wr_addr_o(add_reg),                 // O [10:0]//wr_addr
.wr_be_o(wr_be),                     // O [7:0]
.wr_data_o(data_reg),                 // O [31:0]//wr_data
.wr_en_o(wr_en),                     // O
.wr_busy_i(wr_busy)                  // I
);

затем я использую ./pcimem pciesystemfile / resource0 0 w

чтобы проверить, что 00001111111111111111111111111111 записан в память, но его там нет, я вместо этого читаю 11111111111111111111111111111111

любая помощь с тем, что я могу делать неправильно, будет принята с благодарностью

заранее спасибо!

0

Решение

Хорошо! Я понял это после некоторого возни.

так что это не правильное место для чтения и записи данных в память pci

// Memory Write Port
.wr_addr_o(add_reg),                 // O [10:0]//wr_addr
.wr_be_o(wr_be),                     // O [7:0]
.wr_data_o(data_reg),                 // O [31:0]//wr_data
.wr_en_o(wr_en),                     // O
.wr_busy_i(wr_busy)                  // I
);

очевидно, на этом этапе в коде данные разбиваются на байты, где каждый байт в общем слове переворачивается; данные, которые я читал в исходном вопросе, который я разместил, должны были быть неправильно истолкованы мной.

Спасибо за помощь!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]