刚接触复旦微FMQL平台的开发者,往往会被Vivado、Procise、IAR这三款工具的组合拳打得晕头转向。每款工具单独使用已经足够复杂,更不用说让它们协同工作。本文将带你理清从硬件设计到系统启动的完整链条,特别关注各环节产出的关键文件及其传递关系。
FMQL开发需要三款核心工具协同工作:
建议按以下顺序安装:
注意:所有工具安装路径不要包含中文或特殊字符,IAR不能安装在远程目录,否则会导致编译失败
创建Vivado工程时,有几个关键点需要特别注意:
tcl复制# 示例:通过TCL命令创建工程(可选)
create_project fmql_demo /path/to/project -part xc7z020clg400-1
set_property board_part_repo_paths {/path/to/board_files} [current_project]
set_property board_part myir.com:mys-7z020:part0:1.0 [current_project]
在Block Design中添加ZYNQ PS IP核后,必须正确配置以下参数:
| 配置项 | 注意事项 | 典型值 |
|---|---|---|
| DDR控制器 | 根据板载DDR型号选择 | MT41K256M16TW-107 |
| 时钟配置 | 匹配外部晶振频率 | 33.333MHz |
| UART配置 | 用于调试输出 | UART1, 115200波特率 |
| SD卡接口 | 如需从SD卡启动 | SD 0.0 |
约束文件(.xdc)的编写建议:
xdc复制# 示例:以太网PHY接口约束
set_property PACKAGE_PIN H17 [get_ports {eth_rxd[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {eth_rxd[0]}]
生成比特流前必须完成的检查:
FMQL开发需要从Vivado工程中提取四个核心文件:
.bit文件
路径:<project>/<project>.runs/impl_2/*.bit
作用:包含PL端的配置信息
.hdf文件
生成方式:File → Export → Export Hardware(勾选Include bitstream)
作用:硬件描述文件,包含PS配置信息
.bd文件
路径:<project>/<project>.srcs/sources_1/bd/design_1/*.bd
作用:Block Design设计文件
.xci文件
路径:<project>/<project>.srcs/sources_1/bd/design_1/ip/design_1_processing_system7_0_1/*.xci
作用:ZYNQ PS IP核配置文件
在Procise中设置IAR路径:
生成FSBL的流程:
常见问题:如果IAR编译失败,检查工程路径是否包含空格或特殊字符
FMQL设备树开发有其特殊性,关键文件结构如下:
code复制DeviceTree/
├── system-top.dts
├── system.dtsi
├── pl.dtsi
├── pcw.dtsi
└── system-user.dtsi # 用户自定义节点应放在此文件
编译设备树的命令示例:
bash复制# 有PL部分的设计
./build.sh --hw /path/to/DeviceTree/ --hdf design_1_wrapper.hdf dtb
# 无PL部分的设计
./build.sh --hw /path/to/DeviceTree/ --nofpga dtb
设备树修改技巧:
dts复制// 示例:在system-user.dtsi中添加EMMC节点
&sdhci0 {
status = "okay";
bus-width = <8>;
non-removable;
};
BOOT.bin是启动系统的核心文件,需要按严格顺序组合:
在Procise中创建Boot Image的步骤:
成功生成BOOT.bin和devicetree.dtb后,将它们与rootfs一起放入SD卡:
code复制SD卡目录结构:
├── BOOT.bin
├── devicetree.dtb
├── uImage
└── rootfs.cpio.gz
常见启动问题排查:
调试建议:
在实际项目中,最耗时的往往是硬件配置与软件工具的版本匹配。建议建立标准的开发环境镜像,避免因工具链问题导致的不必要调试。