如题,dm8168与FPGA通信,gpmc的第11根地址线不受控制,一直为0,如访问0x02000800,从chipscope抓出来看访问到的是0x02000000,这个情况在linux和vxWorks下都有存在。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如题,dm8168与FPGA通信,gpmc的第11根地址线不受控制,一直为0,如访问0x02000800,从chipscope抓出来看访问到的是0x02000000,这个情况在linux和vxWorks下都有存在。
Xu Yesheng,
请先检查一下pinmux是否配置正确。然后看看会否是硬件上的问题,例如连接错误,虚焊等。
检查过复用确实是复用在地址线模式,硬件上的连接应该也没问题,请问是否在操作系统初始化时有对gpmc的空间大小限制?
你好,
请问在Linux访问GMPC地址,你能否确认访问的物理地址(不是MMU映射后的虚拟地址)是0x02000800?
对于Vxworks,请问是否有使能MMU?
关于是否有虚焊的问题,你可以先配置这个引脚为GPIO,然后编写程序使其输出高低电平。看你能否测量到这个引脚可以作为GPIO输出电平变高,变低。
在Linux访问的是物理地址,从chipscope抓出来的地址线可以验证。
在VxWorks下使能了MMU。
我在Linux下尝试过将该地址线复用为GPIO,测试可以控制其电平。
Xu Yesheng,
Linux应用层使用的都是虚拟地址,请问你GPMC的地址的发送是通过应用层么?如果是,请确保Linux下虚拟地址转换到物理地址后,最终驱动使用的物理地址是正确的。
首先将FPGA作为字符设备文件,然后访问的地址是MMAP后的基地址加上偏移量进行访问的,能确保访问的地址确实是0x800,访问0x7FE没有问题。
我也是只能访问0x7fe, 0x800不可访问,但是裸机是可以的,linux下不可以的,不知什么原因?