我使用arm3354与FPGA通信,使用GPMC,8位数据位,3位地址位,异步通信,驱动实现mmap函数,用mmap映射的地址去操作,现在已实现 正确的读写FPGA,但是每次读的时候,监视总线,总会看到它读了四次,而我的应用程序只是读了一次。
以下是寄存器配置
这是检测到的总线变化,读了四次。
请哪位朋友给我看看,给点意见和建议谢谢!
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.
我使用arm3354与FPGA通信,使用GPMC,8位数据位,3位地址位,异步通信,驱动实现mmap函数,用mmap映射的地址去操作,现在已实现 正确的读写FPGA,但是每次读的时候,监视总线,总会看到它读了四次,而我的应用程序只是读了一次。
以下是寄存器配置
这是检测到的总线变化,读了四次。
请哪位朋友给我看看,给点意见和建议谢谢!
写的时候 都是正常的,就是读 ,我应用程序读了一次,而波形显示却是读了四次!很奇怪!
最上边的就是片选信号,我设置的片选和读使能信号是一模一样的。
请各位大侠 帮帮忙啊 我现在 就读一个也会读32个地址,现在正在试验读64个会出现什么现象。
片选感觉怪怪的,好像有问题的样子。你看一下TRM的7.1.5.1.4 GPMC Configuration for Asynchronous Read Access节的内容,确认一下当前的配置信息是否正确。
我感觉如果你要是每次读一个int型的变量,那么实际上是32位,FPGA是8位的肯定要度4次啊。
你每次读出来的数据是正确数据吗?
数据读到的都是正确的,我读的不是int型,而是char型,后来我又给换成了16位数据线,读short型,它也是多读了,32个地址,到了最高地址就又回到地址0。
感觉还是和GPMC的工作方式的配置有关,是不是配成burst读模式了,有看过我们TRM上的时序图么?
有看啊 ,可能遗漏了重要环节!请您详细说一下是burst模式在哪一章节?谢谢 最好能大体讲一下,谢谢。
我是直接实现的mmap函数,在应用层调用mmap,映射了GPMC总线的地址,从而在应用层和FPGA通信的。主要是改的地方omap2下的那个配置寄存器.c文件。再就是自己的驱动了。
我又看了一下我的寄存器配置,没看到burst模式阿,您是说得在config1中配置的吧?
请您帮我看一下吧是哪个寄存器的问题吧,我的寄存器配置就是图片中所示。
burst模式的设置,是在GPMC_CONFIG1_n中进行的设置,看了你的图片中的配置,GPMC_CONFIG1 0x00000010,如果是这个配置生效的话,这个里面并没有打开对burst的支持。
我的没有。 在这个文件中可以模仿像其他的那些简单的像led的初始化那样就好。