首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux上的pcie内存访问

linux上的pcie内存访问
EN

Stack Overflow用户
提问于 2017-04-28 09:18:34
回答 1查看 729关注 1票数 0

我正在试着做我自己的PCIe卡。我正在使用xilinx spartan6PCI express集成模块的xilinx spartan6 sp605板。我的目标系统是ubuntu 16.04。当我执行lspci时,我的计算机可以检测到PCIe卡,但我无法从PCIe卡读取内存。我正在使用我发现的这个工具来读取设备的内存,而不需要制作驱动程序。

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

我正在使用spartan6集成块附带的示例代码,使用以下代码从PCIe卡写入内存

代码语言:javascript
复制
  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

为了验证000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

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

在进阶时谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-05-24 09:53:26

好的!我花了些心思才弄明白这一点。

因此,这不是向pci存储器读取和写入数据的正确位置

代码语言:javascript
复制
// 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43670408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档