TL437x-IDK基于AM437x的FPGA与ARM通信测试

该博客详细介绍了如何在TL437x-IDK开发板上进行FPGA与ARM之间的I2C和GPMC通信测试。通过执行一系列命令,包括初始化FPGA加载、读写I2C设备和GPMC内存,验证了通信的正确性和效率。
摘要由CSDN通过智能技术生成
  1. FPGA与ARM基于I2C通信测试

 

表 1

开发板型号

是否支持本实验

TL437x-EVM

不支持

TL437x-EasyEVM

不支持

TL437x-IDK

不支持

TL437xF-EVM

支持

 

本测试程序将FPGA模拟成I2C设备,设备地址为0x2A,ARM使用I2C0总线对此I2C设备进行读写。

进入开发板文件系统的”/opt”目录,执行如下命令初始化FPGA程序加载功能的管脚。

Target# ./set_flash_fpga_pin.sh

执行如下命令启动FPGA程序加载功能,由ARM通过SPI总线加载.bit文件到FPGA中运行。打印信息中,如果FPGA_DONE的值为1,则表示.bit文件加载成功。

Target# ./flash_fpga.sh i2c_test.bit

 

此.bit文件主要实现FPGA和ARM的I2C通信功能,.bit文件、.mcs文件和源码位于FPGA光盘”Demo\app\IIC\”目录下。

执行如下命令查看挂载到I2C0总线的I2C设备地址,此处查询到的地址为0x2A。

Target# i2cdetect -r -y 0

 

执行如下命令对I2C设备0x00地址写0x55:

Target# i2cset -f -y 0 0x2a 0x00 0x55

执行如下命令读取I2C设备0x00地址的值:

Target# i2cget -f -y 0 0x2a 0x00

 

 

 

执行如下命令对I2C设备0x01地址写0xe0,开发板底板FPGA端LED5、LED6、LED7会被点亮。

Target# i2cset -f -y 0 0x2a 0x01 0xe0

执行如下命令对I2C设备0x01地址写0x00,开发板底板FPGA端LED5、LED6、LED7会被熄灭。

Target# i2cset -f -y 0 0x2a 0x01 0x00

 

 

 

FPGA端按键状态会保存在I2C设备0x02地址中。执行如下命令读取I2C设备0x02地址的值:

Target# i2cget -f -y 0 0x2a 0x02

 

 

 

分别长按开发板FPGA端按键KEY6、KEY7,并读取I2C设备0x02地址的值,分别为0xC0、0xA0。

 

 

 

  1. FPGA与ARM基于GPMC通信测试

 

表 2

开发板型号

是否支持本实验

TL437x-EVM

不支持

TL437x-EasyEVM

不支持

TL437x-IDK

不支持

TL437xF-EVM

支持

 

本测试程序将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

 

此.bit文件主要实现FPGA和ARM的GPMC通信功能,.bit文件、.mcs文件和源码位于FPGA光盘”Demo\app\GPMC\”目录下。

将ARM光盘"Demo\app\devmem2\bin"目录的内存读写工具可执行镜像文件devmem2拷贝到开发板文件系统任意路径。devmem2使用mmap将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作。

在devmem2文件所在路径,执行如下命令进行读写。

Target# ./devmem2 0x1000000 10000000 m 0x12

 

 

 

以上命令的作用是:向物理地址0x01000000中,写入长度为10000000字节数据0x12,然后将其读取出来,从而获得读写速度以及错误率。读写时,使用"memset/memcpy"函数。

FPGA连接到ARM的GPMC总线CS1的起始地址为0x1000000,GPMC数据线位宽为16bit,数据线地址线复用,已设置最大访问范围是16MB。

"error rate=0.0%"表示读取回来的数据与写入的数据一致,即GPMC通信正常。

  1. 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时,输出写到指定内存和从中读取出来的值。

  1. data表示将要写进内存的内容,为32位无符号整型数。但是在写时会根据每次读写的宽度进行截取。当type参数为b或者m时,将data截取前8位。当type参数为h时,将data截取前16位。当type参数为w时,不截取。

(4)对同一个物理地址,根据不同的参数,读取的结果会有差异。经过测试,使用m选项进行读写时,可以获得较高的读写速率。另外,读写数据的长度length越大,测得的读写速度越准确。

 

更多帮助

销售邮箱:sales@tronlong.com

技术邮箱:support@tronlong.com

创龙总机:020-8998-6280

技术热线:020-3893-9734

创龙官网:www.tronlong.com

技术论坛:www.51ele.net

线上商城:https://tronlong.taobao.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值