QNX ETH VLAN ping 不通

网络的兄弟一早报了个问题,说QNX侧的4个vLAN网段ping不通了,把问题缩小到了俩个版本之间,请求协查。他比较怀疑的地方是这部分物理内存映射后被其他进程给改掉了。

#define EMAC_DWC_ETHER_QOS_ADDR  0x00020000
#define EMAC_DWC_ETHER_QOS_SIZE  0x10000
  
/* Map EMAC device's physical memory into virtual address space*/
  emac_dwc_ether_qos_base_addr =
    mmap_device_memory(0,
                       EMAC_DWC_ETHER_QOS_SIZE,
                       PROT_READ|PROT_WRITE|PROT_NOCACHE,
                       0,
                       EMAC_DWC_ETHER_QOS_ADDR);

上面的代码完成emac_dwc_ether_qos_base_addr的物理内存映射到虚拟内存地址后,
然后会通过:
data=in32(emac_dwc_ether_qos_base_addr+0x50);  
reset=(data>>0)&0x1;
以太网正常工作时:得到的reset值应该为0;
现在以太网不能正常ping时,得到的reset值始终为1.
从高通提供的emac驱动代码逻辑上看,reset为0的时候,高通提供的emac驱动才能正常工作。

开始追踪。

1. pidin mapinfo 去dump所有的内存映射信息,发现0x20000这个物理地址就只被iopkt这个进程映射了。再用in32 vaddr len方式去dump,发现里面的内存都是0xaaaaaaaa(不知道是什么patternÿ

你可能感兴趣的:(汽车行业,QNX)