您好!
由于目前网络phy还没调好,所以想通过u盘更新内核及设备树,发现一个问题,用u盘将/boot/dtb/kernel_tegra234-p3737-0000+p3701-0004-nv.dtb 替换发现不起做用。但用flash.sh整个更新才能更新,请问这是什么问题。编译步骤如下。
我这里有两个脚本,一个是处理文件系统的,另一个是编译内核的。
处理文件系统的脚本如下:
#!/bin/sh
cd Linux_for_Tegra/rootfs/
echo “clear rootfs, and rebuild rootfs !”
sudo rm -rf *
echo “unpacking the ubuntu rootfs, Please wait !”
sudo tar xvpf ../../package_org_jp6.2.2/Tegra_Linux_Sample-Root-Filesystem_R36.5.0_aarch64.tbz2
sudo cp -rf ../../package_org_jp6.2.2/aic8800D80 lib/firmware/aic8800D80
cd ..
echo “Install deb package, Please wait !”
sudo ./tools/l4t_flash_prerequisites.sh
sync
sudo ./apply_binaries.sh
cd ..
cd Linux_for_Tegra/tools
echo “Setting user and passwd, Please wait !”
sudo ./l4t_create_default_user.sh -u copsu -p copsu -a -n copsu
sync
编译脚本如下:
export CROSS_COMPILE=/opt/gcc_11.3/bin/aarch64-buildroot-linux-gnu-
export SDK_DIR=${PWD}/Linux_for_Tegra
export SOURCE_DIR=$SDK_DIR/source
export KERNEL_HEADERS=$SOURCE_DIR/kernel/kernel-jammy-src
export INSTALL_MOD_PATH=$SDK_DIR/rootfs/
echo “=============build kernel and its in-tree modules !===============”
cd $SOURCE_DIR
make -C kernel
echo “=============rootfs dir is $INSTALL_MOD_PATH================”
echo “============install kernel and its in-tree modules to rootfs=============”
sudo -E make install -C kernel
cp $SOURCE_DIR/kernel/kernel-jammy-src/arch/arm64/boot/Image $SDK_DIR/kernel/Image
echo “============build kernel Out-of-Tree Modules !============”
cd $SOURCE_DIR
rm -rf kernel/kernel-jammy-src/drivers/net/wireless/aic8800_fdrv/.o
rm -rf kernel/kernel-jammy-src/drivers/net/wireless/aic8800_fdrv/.ko
rm -rf kernel/kernel-jammy-src/drivers/net/wireless/aic8800_fdrv/.cmd
rm -rf kernel/kernel-jammy-src/drivers/net/wireless/aic8800_fdrv/.mod
rm -rf kernel/kernel-jammy-src/drivers/net/wireless/aic8800_fdrv/*.mod.c
make modules
echo “===========install kernel Out-of-Tree Modules !============”
sudo -E make modules_install
echo “===========update initramfs !============”
cd $SDK_DIR
sudo ./tools/l4t_update_initrd.sh
echo “===========Building the DTBs !============”
cd $SOURCE_DIR
make dtbs
echo “install DTBs !”
cp $SOURCE_DIR/kernel-devicetree/generic-dts/dtbs/* $SDK_DIR/kernel/dtb/
cp $SOURCE_DIR/kernel-devicetree/generic-dts/dtbs/tegra234-p3737-0000+p3701-0004-nv.dtb $SDK_DIR/bootloader/kernel_tegra234-p3737-0000+p3701-0004-nv.dtb
sync
所以我这边拷贝到u盘的dtb为tegra234-p3737-0000+p3701-0004-nv.dtb去替换设备里边的内核。替换后发现没有发生改变,比如我之前想替换phy的mdio地址。我甚至尝试过将/boot/dtb/kernel_tegra234-p3737-0000+p3701-0004-nv.dtb进行逆向,但一样不会发生改变,请问这是什么原因?