linux上的pcie内存访问

时间:2017-04-28 01:18:34

标签: c++ verilog fpga

我试图制作自己的pcie卡。我使用xilinx斯巴达6 sp605板与spartan 6集成块用于pci express。我的目标系统是ubuntu 16.04。当我做lspci时,我的电脑正在看到pcie卡,但我无法从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

对我可能做错的任何帮助都将不胜感激

先谢谢!

1 个答案:

答案 0 :(得分:0)

OK!经过一番摆弄后,我想出了这个。

所以这不是读取和写入pci内存数据的正确位置

//Delete token for loggin out
func logOut() {

let userDefaults = UserDefaults.standard
userDefaults.removeObject(forKey: "expires_in")
userDefaults.removeObject(forKey: "access_token")

 // Segue user to login page

}

显然在代码的这个阶段,数据被分成字节,整个单词中的每个字节都被反转,我发布的原始问题中读取的数据一定是我误读的。

感谢您的帮助!