Psyduck_zhi 2021-11-20 12:03 采纳率: 0%
浏览 31
已结题

PCIe驱动发数据给fpga板卡,然后用Vivado抓数据,显示的结果有些数据丢失了!求解

在驱动程序file_ops中写了mmap,应用层通过mmap写内存。

char *p=NULL;
fd = open("/dev/mypcie",O_RDWR);

img

a.通过mmap映射到用户层,再使用memcpy/strcpy方式进行数据拷贝写入。
memcpy方式,仿真软件接收的数据每8个地址读取一次,只能读取8位中的前4位☞如图中的数据,vivado能抓到的是
adcb0000cdef0000
efgh0000ghij0000
ijkl0000klmn0000
mnop0000opqr0000

strcpy方式,仿真软件接收的数据每16个地址读取一次,只能读16位中的前4位☞如图所示的数据,Vivado收到:
abcd000000000000
efgh000000000000
ijkl000000000000
mnop000000000000
下图是srtcpy拷贝到内存空间的Vivado仿真图:

img

用memcpy 拷贝

char buf[] = "keji1234abcdAAAA2345BBBBefghCCCC3456DDDDijklEEEE4567"

Vivado抓出来的结果如图

img



请问这个抓包的结果与 突发传输模式和窄传输模式有关系么?

顺带咨询一下,PCIe驱动访问BAR空间,
1.通过mmap方式映射到用户空间直接拷贝的方式有没有问题。
2.通过驱动的ioremap映射后的虚拟地址访问BAR空间。具体如何应用到实例中 iowrite32每次只能写32位。

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-11-22 11:14
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 创建了问题 11月20日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数