最近在某鱼入手一张蚂蚁T9+矿卡。目前挖矿时代已经从大众视野中慢慢淡出,而曾经为挖矿努力工作的矿卡已大量流出到某鱼,并且价格便宜,入手作为一个开发板已经很实惠了。
T9+矿卡在配置上基本上算是很丰富,可以满足入门学习者使用。硬件资源包括zynq xc7z010-clg400双核ARM A9处理器,主频可跑到666.6666MHz,外挂2片512MB共计1GB的DDR3内存,1片2GB的NAND Flash,1路B50612D千兆以太网PHY接口,预留一路TF卡接口,引出多路PL端I/O扩展。硬件资源总的来说已经很可观了,毕竟才50米入手。
T9+入手后,开机测试,默认应该是NAND Flash启动,如果不是,可以按照启动模式配置插针自行切换一下。
供电由控制板右下角6pin大白色端子输入,输入12V电源,上电后启动电流在180mA左右,使用USB转TTL串口调试器,波特率设置为115200,连接靠近TF卡旁边的3pin插针,可看到启动后打印的信息,linux内核版本比较低。
接下来使用T9+搭建自己的开发环境,启动模式切换到JTAG,开发环境我采用的是Vivado 2019.2。
新建工程
器件型号选择xc7z010clg400-1
创建block
添加zynq处理器
zynq处理器添加完之后,需要进行基础外设配置,双击zynq模块,首先配置DDR3,器件型号选择MT41K256M16,数据位宽选择32bit,其他保持默认不变。
接下来进行外设配置,首先选择nand flash,用于下载程序,其次选择eth0,用于网口通信,最后选择UART1用于打印调试信息。需要注意的是BANK0的电平设置为LVCMOS3.3V,BANK1的电平设置为LVCMOS2.5V,这是T9+控制板自身供电配置。
使能zynq的GPIO,所有IO均为MIO,不使用EMIO。
最后一步配置,zynq给PL端产生100M时钟。
上面的所有设置完成后,点击底下的OK,退出配置界面。点击上面的Run Block Automation开始自动连线。
接下来再添加一个GPIO控制模块,因为T9+控制卡PL端引出4个LED灯,添加GPIO控制模块控制这4个LED灯。
对GPIO模块进行配置,方向全部设置为输出,位宽设置为4bit。
最终连线效果图
然后点击保存,生成输出文件和HDL文件,按照顺序一个生成完再生成下一个。
在上述block中,添加了一个GPIO控制模块,所以需要在工程文件中添加xdc约束文件。
约束文件添加完成后,在vivado中生成bit流文件。
编译完成后导出硬件工程,在导出时需要勾选bit文件。
接下来启动vitis2019.2,开始嵌入式软件的开发。首先新建一个hello world程序,测试串口打印是否正常。
点击finish新建工程后,开始build Project开始编译工程。
编译接收后无任何问题错误,开始下载程序到控制板,打开串口调试助手,波特率设置为115200。对于矿卡T9+,需要焊接J10插针,2.0间距的标准14pin下载调试口。
通过串口调试助手看到hello world已经正常打印出来了,说明zynq处理器正常工作了,串口也正常工作了。接下来我们测试zynq内部ram。新建工程,选择vitis自带的Memory Tests。
串口调试信息打印的均是PASSED,说明内部RAM测试通过。继续测试DDR3,新建工程,选用vitis提供的zynq DRAM Tests。
通过串口调试助手打印信息,可以选择DDR3的测试模式,有内存大小测试,读写眼图测试等。这里我选择内存大小测试,测试大小为1023MB长度,也就是1G全部测试,在串口界面输入6,进行整个内存大小的测试。
对DDR3进行整个内存空间的测试,测试结果来看,没有问题。最后测试网口,T9+控制板上带的PHY芯片为B50612D,是一款支持1000M/100M/10M的芯片。新建工程,使用vitis自带的lwip echo server。
通过串口打印的信息,可以看到,网络已自动协商完毕,并且工作在千兆全双工模式,T9+控制卡的IP地址位:192.168.1.10,端口号为7。用笔记本ping一下T9+控制板,笔记本电脑的IP需要设置在同一个网段,我这里设置的是192.168.1.20。
可以ping通控制板,下面采用网络调试助手进行收发数据测试,lwip echo server例程里进行了回环测试,接收到什么数据转发什么数据。
数据收发测试也正常。这里需要说明的是vitis的lwip驱动库中是没有b50612d的驱动的,需要自己手动开发网口芯片驱动,这里我自己已经写好了该phy芯片的驱动,大家可在后台回复:T9+即可获取到本工程的所有代码,包含vivado以及vitis工程,附加T9+控制板的原理图。
今天先写到这里,算是自己初次使用T9+控制板的一个总结,也是把自己的学习开发经验分享给大家。