1. 项目概述与准备工作
Zynq AX7021 FPGA开发板是一款基于Xilinx Zynq-7000系列SoC的嵌入式开发平台,它集成了双核ARM Cortex-A9处理器和FPGA可编程逻辑单元。这种架构非常适合需要高性能处理与硬件加速相结合的应用场景,比如边缘计算、工业控制和网络设备开发。
在开始配置前,我们需要准备以下硬件和软件环境:
-
硬件准备
- Zynq AX7021开发板(含电源适配器)
- 容量≥32GB的micro SD卡(建议选择Class10以上速度等级)
- USB转串口调试工具(如CH340、CP2102等)
- 装有Ubuntu系统的PC(18.04或20.04 LTS版本为佳)
-
软件准备
- 预构建的系统镜像文件(BOOT.BIN、boot.scr、image.ub、rootfs.tar.gz)
- 初始化脚本init_os.sh
- 分区工具gparted
提示:建议使用全新的SD卡进行操作,避免原有分区和数据对配置过程造成干扰。如果必须使用旧卡,请先备份重要数据。
2. 系统镜像获取与验证
从清华大学云盘下载的系统镜像包包含四个关键文件:
- BOOT.BIN:Zynq启动所需的First Stage Bootloader(FSBL)、比特流文件和U-Boot组合镜像
- boot.scr:U-Boot启动脚本,包含内核加载参数
- image.ub:包含Linux内核和设备树的FIT镜像
- rootfs.tar.gz:根文件系统压缩包
下载完成后,建议先验证文件的完整性:
bash复制# 检查文件大小(示例值,实际以下载为准)
ls -lh BOOT.BIN boot.scr image.ub rootfs.tar.gz
# 计算MD5校验和(应与发布方提供的校验值一致)
md5sum BOOT.BIN boot.scr image.ub rootfs.tar.gz
3. SD卡分区与格式化
3.1 安装分区工具
在Ubuntu系统中安装gparted图形化分区工具:
bash复制sudo apt update
sudo apt install -y gparted
3.2 分区方案设计
Zynq启动需要特定的分区布局:
-
BOOT分区(FAT32格式,≥200MB)
- 存放启动文件(BOOT.BIN、boot.scr、image.ub)
- 必须设置为可启动标志
- 建议分配500MB空间以留有余量
-
ROOTFS分区(ext4格式,占用剩余空间)
- 存放根文件系统
- 需要保留足够的空间供系统运行和日志存储
3.3 实际操作步骤
-
插入SD卡,确认设备节点(通常为/dev/sdX,X为b/c/d等)
bash复制
lsblk -
启动gparted进行操作:
bash复制sudo gparted -
在gparted界面中:
- 选择正确的SD卡设备(注意不要选错硬盘!)
- 删除所有现有分区
- 创建新分区表(msdos类型)
- 添加第一个分区(FAT32,500MB,设置boot标志)
- 添加第二个分区(ext4,占用剩余空间)
- 应用所有操作
警告:分区操作具有数据破坏性,请务必确认操作对象是SD卡而非系统硬盘。建议在执行前再次通过
lsblk确认设备标识。
4. 文件系统部署
4.1 挂载分区
创建挂载点并挂载分区:
bash复制sudo mkdir -p /media/alinx/{BOOT,ROOTFS}
sudo mount /dev/sdX1 /media/alinx/BOOT
sudo mount /dev/sdX2 /media/alinx/ROOTFS
将alinx替换为你的实际用户名,sdX中的X替换为SD卡对应的字母。
4.2 复制启动文件
bash复制sudo cp BOOT.BIN boot.scr image.ub /media/alinx/BOOT/
4.3 解压根文件系统
bash复制sudo tar -zxvf rootfs.tar.gz -C /media/alinx/ROOTFS
4.4 部署初始化脚本
bash复制sudo cp init_os.sh /media/alinx/ROOTFS/home/root/
sudo chmod +x /media/alinx/ROOTFS/home/root/init_os.sh
4.5 权限与同步设置
bash复制sudo chown -R root:root /media/alinx/ROOTFS
sudo chmod 755 /media/alinx/ROOTFS
sync
注意:
sync命令确保所有缓存数据写入存储设备,在拔出SD卡前必须执行此步骤。
5. 开发板启动与初始化
5.1 硬件连接
- 将配置好的SD卡插入开发板
- 连接串口调试工具到开发板的UART接口
- 上电启动
5.2 串口终端配置
推荐使用minicom或screen作为串口终端工具:
bash复制sudo apt install minicom
sudo minicom -s
配置参数:
- 串口设备:/dev/ttyUSB0(根据实际设备调整)
- 波特率:115200
- 数据位:8
- 停止位:1
- 无奇偶校验
- 无流控
5.3 系统登录
启动完成后,在串口终端会出现登录提示:
code复制Zynq AX7021 login:
使用默认凭证登录:
- 用户名:root
- 密码:root
5.4 执行初始化脚本
bash复制cd /home/root
sh init_os.sh
初始化脚本通常会完成以下工作:
- 设置主机名和网络配置
- 创建必要的用户和组
- 配置系统服务
- 安装基础软件包
6. 常见问题排查
6.1 启动失败:卡在U-Boot阶段
可能原因及解决方案:
-
BOOT.BIN文件损坏
- 重新下载并验证MD5
- 检查SD卡是否接触不良
-
分区标志未设置
- 确认BOOT分区已设置boot标志
- 在gparted中右键分区 → 管理标志 → 勾选boot
-
文件位置错误
- 确认BOOT.BIN等文件在FAT32分区的根目录
- 文件名必须全大写
6.2 根文件系统加载失败
典型表现:
- 内核panic
- 无法找到根设备
解决方法:
- 检查boot.scr中的root参数:
bash复制# 在U-Boot命令行查看启动参数 printenv bootargs - 确认rootfs分区格式为ext4
- 验证rootfs.tar.gz是否完整解压
6.3 串口无输出
排查步骤:
- 确认串口线连接正确(TX↔RX交叉)
- 检查波特率设置(必须为115200)
- 尝试更换USB端口或转接器
- 测量开发板供电电压(应为5V±5%)
7. 高级配置技巧
7.1 自定义内核参数
通过修改boot.scr可以调整内核启动参数:
-
解包boot.scr:
bash复制
mkimage -l boot.scr -
修改脚本后重新打包:
bash复制mkimage -A arm -O linux -T script -C none -n "Bootscript" -d boot.script boot.scr
7.2 扩展根文件系统
如果发现root分区空间不足:
bash复制# 在开发板上执行
resize2fs /dev/mmcblk0p2
7.3 备份系统镜像
制作完整的SD卡镜像备份:
bash复制sudo dd if=/dev/sdX of=zynq_backup.img bs=4M status=progress
恢复镜像:
bash复制sudo dd if=zynq_backup.img of=/dev/sdX bs=4M status=progress
8. 性能优化建议
-
SD卡选择:
- 使用工业级SD卡提高可靠性
- 选择A1/A2性能等级的卡提升IO性能
-
文件系统优化:
bash复制
tune2fs -o journal_data_writeback /dev/mmcblk0p2 -
SWAP配置:
bash复制# 创建512MB交换文件 dd if=/dev/zero of=/swapfile bs=1M count=512 mkswap /swapfile swapon /swapfile -
服务优化:
- 禁用不必要的系统服务
- 使用busybox替代部分GNU工具减小体积
经过这些步骤,你的Zynq AX7021开发板应该已经成功启动并运行定制Linux系统。在实际项目中,你可能还需要根据具体需求配置网络、安装额外软件包或开发FPGA逻辑。
