Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree

1.kernel

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第1张图片

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第2张图片

实际操作时候,下面两条命令就够了。

make ARCH=arm xilinx_zynq_defconfig

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000

 

 

2.文件系统

下载arm_ramdisk.image.gz

 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842473/Build+and+Modify+a+Rootfs

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第3张图片

 实际操作命令:

gunzip ramdisk.image.gz

mkdir file_tmp

sudo mount arm_ramdisk.image -o loop ./file_tmp/

sudo umount ./file_tmp

gzip ramdisk.image

sudo apt-get install u-boot-tools
sudo mkimage -A arm -T ramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz

 

3.devicetree

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第4张图片

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第5张图片

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree_第6张图片

设备树编译出错

https://blog.csdn.net/qq_28398969/article/details/85235534

a.错误信息
$ ./scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb ./arch/arm/boot/dts/zynq-zc706.dts
Error: ./arch/arm/boot/dts/zynq-zc706.dts:7.1-9 syntax error
FATAL ERROR: Unable to parse input tree
b.原因
根据提示,是zynq-zed.dts这个文件的15行出错。
将该行修改为 /include/ “zynq-7000.dtsi”
c.重新执行命令
./scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb ./arch/arm/boot/dts/zynq-zc706.dts
可以在顶层目录看到生成的 devicetree.dtb 设备树文件
d.另一个解决方法:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
在./arch/arm/boot/dts/目录下会生成zynq-zed.dtb文件,
两个设备树文件内容是一样的,只是文件名不同。

实际操作执行以下命令:

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs (一路Y)

在路径/home/zhangyi/work/linux-xlnx-master/arch/arm/boot/dts下生成zynq-zc706.dtb

改名为devicetree.dtb

将BOOT.bin devicetree.dtb uImage uramdisk.image.gz 拷贝到sd卡 然后上电

Hooray!

Zynq>

 

  • 5.当然还是要体验一把helloworld了
    在电脑linux环境中,创建一个hello.c:
#include 
int main()
{
    printf("hello hlf\n");
    return 0; }


在hello.c路径下,生成可执行文件:

cd /home/hlf/mnt/zynq_pro #hello.c所在目录
source /opt/Xilinx/SDK/2017.1/settings64.sh #定位
arm-xilinx-linux-gnueabi-gcc hello.c -o hello -static #生成执行文件

zynq> mkdir -p /mnt/mmc
zynq> mount /dev/mmcblk0p1 /mnt/mmc
zynq> cd ./mnt/mmc/
zynq> ./zynq_hello
hello hlf


hello hlf

转载于:https://www.cnblogs.com/idyllcheung/p/10538209.html

你可能感兴趣的:(Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree)