简介
借助米联客的虚拟机和scripts文件、Zybo官方dts文件和Xilinx官方u-boot及kernel源码,成功构建了基于linaro-precise-ubuntu-desktop-20120723-305的Linux系统。写入SD卡后能正常运行,上电后插入网线可以正常ping通外部网站。
开发环境
软件环境:Vivado 2017.4 Linux版本
系统环境:Ubuntu 16.04 amd64
准备材料
ARM端的linux内核源码:https://github.com/Xilinx/linux-xlnx,选择2017.4版本。
ARM端的uboot源代码:https://github.com/Xilinx/u-boot-xlnx,选择2017.4版本。
ARM端的Linaro文件系统:https://releases.linaro.org/archive/12.07/ubuntu/precise-images/ubuntu-desktop/linaro-precise-ubuntu-desktop-20120723-305.tar.gz
在linux-xlnx/arch/arm/boot/dts目录内新建zynq-7010.dts文件,文件内容:
dts-v1/;
/include/ "zynq-7000.dtsi"
/ {
model = "HLF";
compatible = "ALINX,zynq", "xlnx,zynq-7000";
aliases {
ethernet0 = &gem0;
serial0 = &uart1;
spi0 = &qspi;
mmc0 = &sdhci0;
};
memory@0 {
device_type = "memory";
reg = <0x0 0x20000000>;
};
chosen {
bootargs = "";
stdout-path = "serial0:115200n8";
};
usb_phy0: phy0 {
compatible = "usb-nop-xceiv";
#phy-cells = <0>;
reset-gpios = <&gpio0 46 1>;
};
};
&clkc {
ps-clk-frequency = <50000000>;
};
&gem0 {
status = "okay";
phy-mode = "rgmii-id";
phy-handle = <ðernet_phy>;
ethernet_phy: ethernet-phy@0 {
reg = <0>;
};
};
&qspi {
u-boot,dm-pre-reloc;
status = "okay";
};
uEnv.txt 文件,文件内写入boot的配置信息:
uenvcmd=run linaro_sdboot
linaro_sdboot=echo Copying Linux from SD to RAM... && \
fatload mmc 0 0x3000000 ${kernel_image} && \
fatload mmc 0 0x2A00000 ${devicetree_image} && \
if fatload mmc 0 0x2000000 ${ramdisk_image}; \
then bootm 0x3000000 0x2000000 0x2A00000; \
else bootm 0x3000000 - 0x2A00000; fi
bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait
相关shell命令
在编译u-boot和kernel时用到了如下命令,可以拷贝直接使用。
cd /mnt/workspace/osrc/scripts
source settings64.sh
echo $ZN_TOOLCHAIN_PREFIX
echo $CROSS_COMPILE #arm-linux-gnueabihf
echo $ARCH #arm
cd ~/Downloads/
unzip u-boot-xlnx-xilinx-v2017.4.zip
cd u-boot-xlnx-xilinx-v2017.4/
make clean
make zynq_zybo_defconfig
make menuconfig #select Exit
make -j4
cp u-boot ~/Documents/prj_vivado/czybosys/u-boot.elf
cd ../linux-xlnx-xilinx-v2017.4/
make clean
make xilinx_zynq_defconfig
make menuconfig #select Exit
make -j4
make uImage LOADADDR=0x00008000
cp arch/arm/boot/uImage ~/Desktop/
./scripts/dtc/dtc -I dts -O dtb -o ./arch/arm/boot/devicetree.dtb ./arch/arm/boot/dts/zynq-zybo.dts
cp ./arch/arm/boot/devicetree.dtb ~/Desktop/
生成BOOT.bin
在vivado SDK中生成BOOT.bin时,采用如下配置:
czybosys/czybosys.sdk/fsbl/Debug/fsbl.elf
czybosys/czybosys.sdk/system_wrapper_hw_platform_0/system_wrapper.bit
u-boot.elf
其他
SD烧写参考百度资料