前言
环境介绍:
1.版本
pluto-fs-v0.38
一、u-boot环境
1.1 zynq_pluto_defconfig路径:
u-boot-xlnx/configs/zynq_pluto_defconfig
1.2 设备数dts
u-boot-xlnx/arch/arm/dts/zynq-pluto-sdr.dts
1.3 bootcmd 命令修改
u-boot-xlnx/include/configs/zynq_zc70x.h
u-boot-xlnx/include/configs/zynq-common.h
1.4 uboot编译命令
make -C u-boot-xlnx ARCH=arm zynq_pluto_defconfig
make -C u-boot-xlnx ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UBOOTVERSION="PlutoSDR v0.38-dirty"
cp u-boot-xlnx/u-boot build/u-boot.elf
1.5 boot启动命令
默认boot env存放与spi flash
fatload mmc 0 8000 zImage
fatload mmc 0 103cdda8 devicetree.dtb
bootz 8000 - 103cdda8
fatload mmc 0 00000000 zImage
fatload mmc 0 05000000 devicetree.dtb
bootz 00000000 - 05000000
setenv bootcmd ‘mmcinfo && fatload mmc 0 8000 zImage && fatload mmc 0 103cdda8 devicetree.dtb;bootz 8000 - 103cdda8’
setenv bootargs ‘console=ttyPS0,115200 root=/dev/mmcblk1p2 rootwait rw rootfstype=ext4’
cp build_sdimg/* /media/walle/FAT/
tar -xvf /home/walle/ad9361/plutosdr-fw-0.38/buildroot/output/images/rootfs.tar -C /media/walle/EXT/
sudo eject /media/walle/FAT/
losetup /dev/loop7 /opt/vfat.img -o 512
二、kernel
2.1 kernel编译命令
make -C linux ARCH=arm zynq_pluto_defconfig
make -C linux ARCH=arm menuconfig
make -C linux ARCH=arm savedefconfig
make -C linux -j 8 ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zImage UIMAGE_LOADADDR=0x8000
#设备树
make -C linux -j 8 ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq-pluto-sdr.dtb
cp linux/arch/arm/boot/dts/zynq-pluto-sdr.dtb build/zynq-pluto-sdr.dtb
cp linux/arch/arm/boot/zImage build/zImage
2.2 修改配置为9364,收音机功能
linux/arch/arm/boot/dts/zynq-pluto-sdr.dtsi
// compatible = "adi,ad9363a";
compatible = "adi,ad9364";
系统起来后,/etc/init.d/S23udc文件根据/sys/bus/iio/devices/*下面的pro的设备名称生成/etc/libiio.ini文件,里面保存了设备的相关信息
进入系统后修改,输入如下命令
fw_setenv attr_name compatible
fw_setenv attr_val "ad9364"
pluto_reboot reset
三、rootfs
make -C buildroot ARCH=arm zynq_pluto_defconfig
make -C buildroot ARCH=arm menuconfig
make -C buildroot ARCH=arm savedefconfig
make
make -C buildroot TOOLCHAIN_EXTERNAL_INSTALL_DIR= ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- BUSYBOX_CONFIG_FILE=/home/michael/devel/pluto/plutosdr-fw/buildroot/board/pluto/busybox-1.25.0.config all
四、根目录Makefile解读
4.1 system_top.xsa生成
build/system_top.xsa: | build
ifeq (1, ${HAVE_VIVADO})
bash -c "source $(VIVADO_SETTINGS) && make -C hdl/projects/$(TARGET) && cp hdl/projects/$(TARGET)/$(TARGET).sdk/system_top.xsa $@"
unzip -l $@ | grep -q ps7_init || cp hdl/projects/$(TARGET)/$(TARGET).srcs/sources_1/bd/system/ip/system_sys_ps7_0/ps7_init* build/
else ifneq ($(XSA_FILE),)
cp $(XSA_FILE) $@
else ifneq ($(XSA_URL),)
wget -T 3 -t 1 -N --directory-prefix build $(XSA_URL)
endif
其中$@ 是 Makefile 中的一个自动变量,表示当前规则的目标文件。在你提供的代码中,$@ 对应的是 build/system_top.xsa。
make -C的-C 是 make 的一个选项,表示更改工作目录后再执行 make 命令。
4.2 添加本地xsa文件
XSA_FILE ?= /home/walle/ad9361/hdl-hdl_2022_r2/projects/pluto/pluto.vitis/system_top/hw/system_top.xsa
?=: 这是 Makefile 中的条件赋值运算符。它的作用是 仅在 XSA_FILE 变量尚未定义时,给它赋一个默认值。如果 XSA_FILE 已经在其他地方定义了(如在命令行或环境变量中),那么 ?= 赋值将会被忽略。也就是说,它允许你指定一个默认路径,但仍然支持外部覆盖。
五、设置窗口代理
export http_proxy="http://127.0.0.1:7890/"
export https_proxy="https://127.0.0.1:7890/"
export all_proxy="socks5://127.0.0.1:7890/"
curl -vv https://www.github.com
git config --global http.proxy socks5 127.0.0.1:7890
git config --global https.proxy socks5 127.0.0.1:7890
git config --global http.proxy 127.0.0.1:7890
git config --global https.proxy 127.0.0.1:7890
六、设置单板环境变量
setenv bootcmd 'mmcinfo && fatload mmc 0 8000 zImage && fatload mmc 0 103cdda8 devicetree.dtb;bootz 8000 - 103cdda8'
setenv sdboot 'mmcinfo && fatload mmc 0 0x2080000 uImage && fatload mmc 0 0x2000000 devicetree.dtb && fatload mmc 0 0x4000000 uramdisk.image.gz;bootm 0x2080000 0x4000000 0x2000000'
setenv bootargs 'console=ttyPS0,115200 maxcpus=1 rootfstype=ramfs root=/dev/ram0 rw quiet loglevel=7 clk_ignore_unused'
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rootwait rw rootfstype=ext4 debug=7'
七、弹出U盘命令
sudo eject /media/walle/FAT/