PS端程序开发学习

开发流程

首先定义硬件:

调用zynq ip核,Re-customize IP,配置关键参数信息:

  1. Peripheral I/O Pins:根据硬件原理图,使能并配置外设的 MIO 引脚,解决引脚复用冲突。
  2. PS-PL Configuration:设置 PS 与 PL 间的 AXI 总线,若无需 PL 参与,可关闭相关使能简化配置。
  3. Clock Configuration:配置 CPU、DDR、外设及 PL 的时钟频率。
  4. DDR Configuration:选择与硬件匹配的 DDR 型号及参数。

生成比特流文件后,导出xsa文件。

之后进入vitis,使用xsa文件,按步骤处理并导出相关的文件(下图的fsbl.elf、pmufw.elf、system_wrapper.bit),文件将会用于SD卡开发环境制作。

将相关文件存入虚拟机对应位置,进入虚拟机终端,输入指令,制作开发环境,并将开发环境烧录到SD卡中:

source scripts/mzuxcfg.sh  # 配置环境变量
make_uboot.sh              # 制作uboot程序作为引导程序
make_kernel.sh             # 制作Linux系统内核
create_image.sh            # 制作镜像
make_parted.sh             # 格式化SD卡
deploy_image.sh            # 完成SD卡系统的拷贝

此后,将编写好的C++程序以及对应的Makefile文件上传虚拟机Linux系统中,交叉编译获得ko编译驱动程序,再将编译驱动程序上传开发板的Linux系统并执行。

整体流程:

Vivado 中配置 PS 硬件(引脚、时钟、DDR 等)→ 导出硬件描述文件(HDF)→ SDK 中创建工程、编写代码→ 编译生成 .elf 并上传到 PS 运行。

后续计划

目前更多是熟悉了PS端开发流程,但是实际如何进行PS端开发,如何通过PS端开发完成预期目标还有一些疑问。另外,PS端的C程序,理解上还有一些问题,目前教程的C程序内容还没有完全明白。准备找个类似题目的实训,自己上手完整进行一整段流程。


本文章使用limfx的vscode插件快速发布