PCIE2.0 3.0 4.0 硬件测试解决方案
PCIE memap空间读写异常问题:
pcie可以正常读写配置空间,但无法正常读写memap 空间
定位问题:
一个address是36bit的,但软件定义为一个32bit的变量,从而导致软件读写pcie memap空间失败(读错了位置)。
解决方法:fixed the software bug。☺
这个问题定位主要需要一些关于PICE的一些地址的知识,要理解他们之间的关系。
PCIE空间的BAR
CPU访问PCIE设备的高速外设(IO)的地址
应用层访问PCIE memap的地址
来张图吧,
上图中,有几个关键的Address,Virtual Address这个大家比较好理解,但凡有一点在linux下开发经验的程序员都知道linux下的应用程序只能访问Virtual Address,那如果我们需要访问一些指定的Physical Address怎么办,这在driver开发当中十分常见。linux提供了mamap系统调用,用于Virtual Address和Physical Address的转换。另外,PICE设备在读写时使用PCIE的BAR地址,BAR地址是PCIE控制器以memap 方式读写PCIE EP设备时使用的地址,是PCIE协议使用的地址。