修改ZCU104的VADJ

引子

ZCU104开发板的FMC LPC接口的电平与开发板VADJ电压相同,默认情况下该电压为1.2V,该电压不能满足我在实际使用中的需求(1.8V),因此在使用FMC时需要对VADJ进行设置才可以正常使用。这里主要针对JTAG模式和PYNQ模式时的VADJ电压永久设置方法进行介绍。
PS:本博客可以看作对该博客的补充。

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工程

  • 配置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_%.bbappendfsbl-firmware_%.bbappend文件内容均为:

SRC_URI:append = " \
        file://fsbl.patch \
        "
  
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
  
#Add debug for FSBL(optional)
XSCTH_BUILD_DEBUG = "1"
  
#Enable appropriate FSBL debug or compiler flags
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也可以在这里下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值