本帖最后由 lzzno1 于 2016-5-23 23:01 编辑
最近一个项目需要ARM+FPGA架构,所以买了周立功的m6708核心板,i.mx6处理器,简单双核,linux3.0.15系统。自己画的板子,板子上有一块FPGA。用arm核心板上的25个GPIO,作为并行总线与FPGA通信,14为地址总线。8为数据总线,读写使能,还有一个备用管脚。
当时参照了以前的而一个LPC2478+FPGA的板子,那个板卡用的就是GPIO做并行总线,但没有操作系统,直接操作到管脚上就行。现在的麻烦是,不是很了解linux操作系统,这个把GPIO作为和FPGA通信的并行总线来用的驱动总也调不好。我用的是sysfs提供的GPIO操作就是sys/class/gpio,就是先导出到用户空间export(),再设置direction,然后读写value。这个并行总线的操作用这种方式是不是不合适呢?下图是程序中,对两个gpio的写操作,我向GPIO175之后写了置0之后下一行代码就是将GPIO05也置0,可示波器触发方式截图可以看到,两个信号置零操作的时间差在2us左右。用FPGA的signaltap得到的也是这样。这样一想,如果我按照这种方式要操作到八位的数据总线上,如将2进制数00010010写到数据总线上,那么有可能D0=0后延迟了14us代表数据位D7的GPIO才能置0,并行数据总线的信号位间同步会出问题。这样情况下除非把通信速率降的很慢,否则行不通的。求教论坛的大大们有没有什么建议。
|