引子
ZCU104开发板的FMC LPC接口的电平与开发板VADJ电压相同,默认情况下该电压为1.2V,该电压不能满足我在实际使用中的需求(1.8V),因此在使用FMC时需要对VADJ进行设置才可以正常使用。这里主要针对JTAG模式和PYNQ模式时的VADJ电压永久设置方法进行介绍。 本博客可以看作对该博客的补充,写完才发现该博客也对修改VADJ的方法进行了介绍,读者如果感兴趣也可以再看看该博客。
JTAG
如果需要将ZCU104在JTAG模式下的VADJ修改为固定电压,请参考该pdf。
PYNQ
该提问中有提到在JTAG模式下已经将VADJ设置为1.8V,但是在使用PYNQ(SD卡启动模式)时VADJ的电压会变为1.2V,在实际使用PYNQ时我也遇到了相同的问题。为了解决该问题,一个最直接的思路就是在PYNQ的linux系统中对VADJ进行修改,但是根据该回答可以PYNQ无法做到这一点,但是其还提供了一种修改FSBL的思路,该博客提供了另外的两种思路,但是并没有具体说明应该怎么操作。
考虑到修改FSBL方法可以参考的资料较多,我使用了修改FSBL方法来改变VADJ。下面将对该方法进行介绍,如果不想看方法介绍,文末也提供了编译好的BOOT.BIN ,直接下载该文件替换即可。
1、环境准备
本次修改是基于PYNQ 3.0版本,因此Petalinux的版本为2022.1。 在进行Patch前需要先去这里下载Petalinux 2022.1和ZCU104对应的BSP文件,并使用下面的指令完成petalinux的安装:
mkdir -p <path_of_petalinux>
./petalinux-v2022.1-04191534-installer.run -d <path_of_petalinux> -p aarch64
2、对FSBL进行patch
首先参考How to patch the FSBL来生成Patch文件:
git clone https://github.com/Xilinx/embeddedsw.git
cd embeddedsw
git checkout xilinx_v2022.1
- 修改
embeddedsw/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c 文件:
UStatus = XFsbl_ReadMinMaxEepromVadj(I2c0InstancePtr, &LpcMin, &LpcMax);
修改为:
UStatus = XFsbl_ReadMinMaxEepromVadj(I2c0InstancePtr, &LpcMin, &LpcMax);
LpcMin = 1800U;
LpcMax = 1800U;
- 在
embeddedsw 目录执行下面的指令生成patch文件fsbl.patch :
git diff > fsbl.patch
3、创建新的petalinux工程
source <path_of_petalinux>/settings.sh
- 根据BSP文件创建petalinux工程,工程在后续重新编译时大概需要
60G 容量,因此需要保证硬盘空间足够:
mkdir -p <dir_of_petalinux_project>
cd <dir_of_petalinux_project>
petalinux-create -t project -s <dir_of_bsp>/xilinx-zcu104-v2022.1-04191534.bsp -n <project_name>
4、 将patch应用到新建的工程
2022.1中对petalinux project的FSBL进行的patch方法与旧版不同,参考How to Patch the FSBL in a PetaLinux Project:
cd <project_name>
mkdir -p ./project-spec/meta-user/recipes-bsp/fsbl/files
mkdir -p ./project-spec/meta-user/recipes-bsp/embeddedsw/files
cp <path_of_fsbl.patch> ./project-spec/meta-user/recipes-bsp/fsbl/files
cp <path_of_fsbl.patch> ./project-spec/meta-user/recipes-bsp/embeddedsw/files
vim ./project-spec/meta-user/recipes-bsp/fsbl/fsbl_%.bbappend
vim ./project-spec/meta-user/recipes-bsp/embeddedsw/fsbl-firmware_%.bbappend
上面新创建的fsbl_%.bbappend 和fsbl-firmware_%.bbappend 文件内容均为:
SRC_URI:append = " \
file://fsbl.patch \
"
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
XSCTH_BUILD_DEBUG = "1"
YAML_COMPILER_FLAGS:append = " -DXPS_BOARD_ZCU104"
5、重新生成BOOT.BIN
使用下面的指令重新生成BOOT.BIN ,该过程中需要下载大量和编译大量软件包,下载的数量量约为20GB 。
petalinux-build -x mrproper
petalinux-build -c kernel
petalinux-build -c bootloader
petalinux-package --boot --u-boot --force
编译完成后的BOOT.BIN 文件位于<project_name>/images/linux 文件夹中,将该文件替换掉SD卡PYNQ 分区中的同名文件即可,在替换前建议将SD卡中的BOOT.BIN 进行备份。使用该方法生成的BOOT.BIN 对于PYNQ v2.7和v3.0都能适用。 如果不想编译,该BOOT.BIN 也可以在这里下载。
|