日期:2014-05-16  浏览次数:20679 次

SC36410下的fpga驱动
各位前辈好!有个问题向大家请教,我现在S3C6410下开发与FPGA的接口驱动,还是个新手。
6410的xmoaddr[0:19]部分端口是与gpio端口复用的,在驱动的时候怎么对gpio控制器进行设置?
万分期待大家的回复!谢谢

------解决方案--------------------
不用配置gpio的,需要设置对应的memory的寄存器,其 address range from 0x1000_0000 to 0x17FF_FFFF stands for Xm0CSn[0],然后直接使用映射物理地址就行了。就把FPGA当成一个外部存储器就行了。
------解决方案--------------------
额,这个就没有办法了啊,上面说的0x1000_0000 to 0x17FF_FFFF的前提建立在地址线最少27根上的。
------解决方案--------------------
20根地址线只能访问1M地址空间,想要访问128M,可以利用7位GPIO进行地址扩展!
------解决方案--------------------
探讨

现在是6410将CSn[0:5]接到了FPGA上,另外FPGA挂载了2片SDRAM,这是不可以通过CSn的组合访问大于1M的空间?

------解决方案--------------------
楼上正解。我正好在omap上用GPMC外接一个fpga,也是这么干的,如果地址线不够用的话,可以用gpio来扩展。
------解决方案--------------------
探讨
请问如何用gpio实现地址线的扩展呢

------解决方案--------------------
用GPIO扩展的地址空间,需要在修改设备内存访问函数,自己重新封装。处理器不能同时访问GPIO不同的地址空间,需要软件自己搞定。
dma地址长度,可以用dma_set_mask搞定。
------解决方案--------------------
dma不需要专门的引脚,其一般传输为物理地址到物理地址,这个物理地址的范围很广,包括IO地址和内存地址。