1. 矿板EBAZ4205硬件改造指南
这块售价仅30多元的矿板EBAZ4205,搭载Xilinx Zynq-7010芯片,性价比极高。但原设计主要用于挖矿,需要经过三项关键硬件改造才能实现SD卡启动功能。
首先是供电改造。板载的J4接口需要短接D24电阻来实现5V供电,我用镊子轻轻刮开阻焊层,用焊锡直接短接两个焊盘。实测时发现一个坑:如果短接不彻底,上电后PS端的1.0V电压会不稳定,导致后续步骤全部失败。
其次是启动模式切换。原板通过R2578电阻配置为NAND启动,我们需要将其移到R2577位置。这里有个实用技巧:先用热风枪300℃吹10秒软化焊锡,再用镊子夹取电阻。我最初用烙铁操作时,不小心把旁边的电容也带下来了,后来发现用热风枪更稳妥。
最后是SD卡座焊接。板子上预留了SD卡接口焊盘,但需要自购卡座。推荐使用TF卡座(型号:PJ-202A),占位更小。焊接时注意1脚方向要对准板子上的三角标记,我反接过一次导致读卡异常。建议先用万用表测量各引脚通断,确保没有虚焊。
注意:所有硬件操作前务必断电,焊接时温度控制在350℃以内,避免损坏周边元件。
2. Vivado工程配置详解
在Vivado 2017.4中新建工程时,器件选择xc7z010clg400-1。创建Block Design后,需要重点配置以下几个部分:
Zynq Processing System的核心配置:
- DDR3选择MT41K128M16 JT-125
- 时钟配置为33.333MHz(与板载晶振一致)
- 启用MIO和EMIO,其中SD0接口通过EMIO引出
网络接口的配置比较特殊。由于板载PHY芯片是RTL8211E,我们需要:
- 将Gem0设置为MII模式
- MDIO接口频率设为2.5MHz
- 启用RX/TX延迟补偿
约束文件的关键点在于引脚分配。根据原理图,网口相关引脚对应关系如下:
set_property PACKAGE_PIN U14 [get_ports ENET0_MII_RX_CLK] set_property IOSTANDARD LVCMOS33 [get_ports {ENET0_MII_RXD[0]}] set_property PACKAGE_PIN Y16 [get_ports {ENET0_MII_RXD[0]}]生成bitstream时常见两个问题:一是时序不满足,需要降低时钟频率;二是功耗估算超标,建议关闭未使用的外设时钟。我遇到过生成失败的情况,后来发现是DDR配置参数有误,修改tRFC值为110ns后解决。
3. U-Boot移植与定制
使用u-boot-xlnx-xilinx-v2018.3版本源码,主要修改集中在设备树文件。内存配置需要调整为:
memory@0 { device_type = "memory"; reg = <0x0 0x10000000>; };网络驱动配置要特别注意PHY地址。通过测量发现板载PHY的地址是0,因此设备树中要相应修改:
ethernet_phy: ethernet-phy@0 { reg = <0>; device_type = "ethernet-phy"; };编译命令如下:
make zynq_ebaz4205_defconfig make CROSS_COMPILE=arm-linux-gnueabihf-生成的u-boot.elf需要与FSBL和bitstream打包成BOOT.bin。我测试时发现网卡不工作,后来在u-boot环境变量中添加了以下配置才解决:
setenv ethaddr 00:0a:35:00:00:01 setenv ipaddr 192.168.1.100 setenv serverip 192.168.1.1014. 系统启动与调试
将以下文件按序放入SD卡FAT分区:
- BOOT.bin(包含FSBL+bitstream+u-boot)
- devicetree.dtb
- uEnv.txt
- uramdisk.image.gz
- zImage
uEnv.txt的典型配置:
bootcmd=setenv bootargs "root=/dev/ram0 rw init=/linuxrc console=ttyPS0,115200" && load mmc 0 ${ramdisk_load_address} uramdisk.image.gz && load mmc 0 ${devicetree_load_address} devicetree.dtb && load mmc 0 ${kernel_load_address} zImage && bootz ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}上电后常见问题排查:
- 无输出:检查串口线序(板子是TX-RX交叉接法)
- 卡在Starting kernel:通常是设备树内存地址错误
- 网卡不工作:检查PHY复位信号和MDIO通信
我使用的文件系统来自米尔科技,首次登录需要配置网络:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 route add default gw 192.168.1.1所有工程文件已开源在GitHub仓库,包含测试通过的预编译固件。在实际项目中,这套配置已经稳定运行超过6个月,适合作为低成本嵌入式开发平台。遇到任何问题都可以查看仓库中的FAQ文档,或者提交issue讨论。