多语言展示
当前在线:481今日阅读:176今日分享:34

创龙AM437x开发板的FPGA与ARM基于GPMC通信测试

分享一下FPGA与ARM基于GPMC的通信测试,测试的开发板为创龙TL437xF-EVM(基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA处理器),如图所示:
方法/步骤
1

以下介绍:本测试程序将FPGA模拟成GPMC内存设备,对Linux系统而言,等效于外接内存。使用GMPC总线进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以像对内存一样进行读写操作。进入开发板文件系统的”/opt”目录,执行如下命令初始化FPGA程序加载功能的管脚。Target# ./set_flash_fpga_pin.sh执行如下命令启动FPGA程序加载功能,由ARM通过SPI总线加载.bit文件到FPGA中运行。打印信息中,如果FPGA_DONE的值为1,则表示.bit文件加载成功。Target# ./flash_fpga.sh gpmc.bit

2

此.bit文件主要实现FPGA和ARM的GPMC通信功能,.bit文件、.mcs文件和源码位于FPGA光盘”Demo\app\GPMC\”目录下。将ARM光盘'Demo\app\devmem2\bin'目录的内存读写工具可执行镜像文件devmem2拷贝到开发板文件系统任意路径。devmem2使用mmap将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作。在devmem2文件所在路径,执行如下命令进行读写。Target# ./devmem20x100 m0x12

3

以上命令的作用是:向物理地址0x中,写入长度为10000000字节数据0x12,然后将其读取出来,从而获得读写速度以及错误率。读写时,使用'memset/memcpy'函数。FPGA连接到ARM的GPMC总线CS1的起始地址为0x1000000,GPMC数据线位宽为16bit,数据线地址线复用,已设置最大访问范围是16MB。   'errorrate=0.0%'表示读取回来的数据与写入的数据一致,即GPMC通信正常。 devmem2工具使用说明(1) devmem2工具测试内存读写速率以及错误率,命令格式为:devmem2 phy_addr length type data,含义是向地址phy_addr中写入length字节的data,然后将其读取出来,从而获得读写的速度以及错误率。(2) 每次读写的宽度根据type来确定,phy_addr表示物理地址,length表示读写的长度(以字节为单位),type可选b、h、w、m 或 d。b:每次读写8位。h:每次读写16位。w:每次读写32位。m:每次读写8位。调用memset进行写,调用memcpy进行读。d:每次读写32位。当type参数为b、h、w、m时,输出读写数据的大小、读写速度以及错误率。当type 参数为d时,输出写到指定内存和从中读取出来的值。(3) data表示将要写进内存的内容,为32位无符号整型数。但是在写时会根据每次读写的宽度进行截取。 当type参数为b或者m时,将data截取前8位。当type参数为h时,将data截取前16位。当type参数为w时,不截取。(4)对同一个物理地址,根据不同的参数,读取的结果会有差异。经过测试,使用m选项进行读写时,可以获得较高的读写速率。另外,读写数据的长度length越大,测得的读写速度越准确。

4

结束,可以记录也和同行多多交流啊~

推荐信息