zynq linux开发环境,[原创]基于Zynq Linux环境搭建(四)

此篇编译根文件系统

下载busybox和dropbear,

[#73#13:04:52 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS]$wget --no-check-certificate https://git.busybox.net/busybox/snapshot/busybox-1_23_1.tar.gz

--2017-08-14 13:04:56-- https://git.busybox.net/busybox/snapshot/busybox-1_23_1.tar.gz

Resolving git.busybox.net (git.busybox.net)... 140.211.167.122

Connecting to git.busybox.net (git.busybox.net)|140.211.167.122|:443... connected.

WARNING: no certificate subject alternative name matches

requested host name `git.busybox.net'.

HTTP request sent, awaiting response... 200 OK

Length: unspecified [application/x-gzip]

Saving to: `busybox-1_23_1.tar.gz'

[ <=> ] 2,800,283 230K/s in 13s

2017-08-14 13:05:14 (211 KB/s) - `busybox-1_23_1.tar.gz' saved [2800283]

[#74#13:05:14 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS]$wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.53.1.tar.gz

--2017-08-14 13:06:25-- http://matt.ucc.asn.au/dropbear/releases/dropbear-0.53.1.tar.gz

Resolving matt.ucc.asn.au (matt.ucc.asn.au)... 130.95.13.18, 2405:3c00:5200:100::18

Connecting to matt.ucc.asn.au (matt.ucc.asn.au)|130.95.13.18|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 1772583 (1.7M) [application/x-gzip]

Saving to: `dropbear-0.53.1.tar.gz'

100%[===================================================================>] 1,772,583 156K/s in 12s

2017-08-14 13:06:39 (143 KB/s) - `dropbear-0.53.1.tar.gz' saved [1772583/1772583]

在busybox目录下,默认配置并初始化

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig

可视化配置

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig

dab5d722db5ea912a561c6204a5e1eac80e.jpg

4ad4b62bd8327a377159edd9147ffdaa5c5.jpg

安装根文件系统到指定目录

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

a148139694d92b75f291b4fa31c8ac2abd8.jpg

在dropbear目录下配置dropbear

/home/fpgadeveloper/Zybo_Demo/XilinxFS/dropbear-0.53.1

./configure --prefix=/home/fpgadeveloper/Zybo_Demo/XilinxFS/RootFS --host=arm-xilinx-linux-gnueabi --disable-zlib CC=arm-xilinx-linux-gnueabi-gcc LDFLAGS="-Wl,--gc-sections" CFLAGS="-ffunction-sections -fdata-sections -Os"

编译dropbear

make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 strip

安装dropbear并创建符号链接

sudo make install

31d60c8f312a7155493521a02d7c44c651f.jpg

建立软连接,进入/home/fpgadeveloper/Zybo_Demo/XilinxFS/RootFS/usr/bin

[#23#23:28:47 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/bin]$ln -s ../../sbin/dropbear ./scp

将交叉编译库拷贝到下述目录

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/lib/* lib -r

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/sbin/* sbin -r

sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r

[#123#23:37:50 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$mkdir lib

[#124#23:38:30 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/lib/* lib -r

[#125#23:38:33 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/sbin/* sbin -r

[#126#23:38:35 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r

在usr目录下创建lib目录

[#125#23:38:33 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$cd usr/

[#126#23:42:37 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$ls

bin sbin

[#127#23:42:39 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$mkdir lib

[#128#23:42:43 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr]$ls

bin lib sbin

sudo cp ~/ SDK2015 /lin/arm-xilinx-linux-gnueabi/libc/usr/lib/* usr/lib/ -r

进入到usr/lib路径下,删除

sudo rm -rf locale

sudo rm -rf audit

sudo rm -rf bin

sudo rm -rf gconv

sudo rm *.a

sudo rm *.o

[#132#23:43:42 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$sudo cp ~/SDK2015/lin/arm-xilinx-linux-gnueabi/libc/usr/lib/* usr/lib/ -r

[#133#23:45:12 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS]$cd usr/lib/

[#134#23:46:52 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf locale

[#135#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf audit

[#136#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf bin

[#137#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm -rf gconv

[#138#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm *.a

[#139#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$sudo rm *.o

[#140#23:47:00 FPGADeveloper@ubuntu ~/Zybo_Demo/XilinxFS/RootFS/usr/lib]$

在文件根目录下运行

mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www

其中文件都用Xilinx提供的ramdisk里面的文件,并拷贝到相关文件夹中

创建"etc/fstab"文件,内容如下

touch etc/fstab

touch etc/fstab

echo "LABEL=/ / tmpfs defaults 0 0 " >> etc/fstab

echo "none /dev/pts devpts gid=5,mode=620 0 0 " >> etc/fstab

echo "none /proc proc defaults 0 0 " >> etc/fstab

echo "none /sys sysfs defaults 0 0 " >> etc/fstab

echo "none /tmp tmpfs defaults 0 0 " >> etc/fstab

创建"etc/inittab"文件,内容如下

touch etc/inittab

echo "::sysinit:/etc/init.d/rcS " >> etc/inittab

echo "# /bin/ash " >> etc/inittab

echo "# " >> etc/inittab

echo "# Start an askfirst shell on the serial ports" >> etc/inittab

echo "ttyPS0::respawn:-/bin/ash " >> etc/inittab

echo "# What to do when restarting the init process" >> etc/inittab

echo "::restart:/sbin/init " >> etc/inittab

echo "# What to do before rebooting " >> etc/inittab

echo "::shutdown:/bin/umount -a -r " >> etc/inittab

创建"etc/passwd"文件,内容如下

touch etc/passwd

echo "root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh" >> etc/passwd

创建文件"etc/init.d/rcS" ,内容如下

#!/bin/sh

echo "Starting rcS..."

echo "++ Mounting filesystem"

mount -t proc none /proc

mount -t sysfs none /sys

mount -t tmpfs none /tmp

echo "++ Setting up mdev"

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

mkdir -p /dev/pts

mkdir -p /dev/i2c

mount -t devpts devpts /dev/pts

echo "++ Starting telnet daemon"

telnetd -l /bin/sh

echo "++ Starting http daemon"

httpd -h /var/www

echo "++ Starting ftp daemon"

tcpsvd 0:21 ftpd ftpd -w /&

echo "++ Starting dropbear (ssh) daemon"

dropbear

echo "rcS Complete"

修改权限

sudo chmod 755 etc/init.d/rcS

sudo chown root:root etc/init.d/rcS

制作文件系统

dd if=/dev/zero of=ramdisknew.image bs=1024 count=32768mke2fs-F ramdisknew.image -L "ramdisk" -b 1024 -m 0tune2fs ramdisknew.image-i 0chmod a+rwx ramdisknew.image

sudo mount-o loop ramdisknew.image tmp_mnt_new/sudo cp-R /home/fpgadeveloper/Zybo_Demo/XilinxFS/RootFS/*tmp_mnt_new/

cd tmp_mnt_new

cd bin/

sudo cp -rf /home/fpgadeveloper/Zybo_Demo/UART_Tools/lrzsz-0.12.20/src/lrz .

sudo cp -rf /home/fpgadeveloper/Zybo_Demo/UART_Tools/lrzsz-0.12.20/src/lsz .

cd ..

cd ..

sudo umount tmp_mnt_new

gzip ramdisknew.image

mkimage -A arm -T ramdisk -C gzip -d ramdisknew.image.gz uramdisk.image.gz

拷贝uboot dtb *uramdisk.image.gz uImage等文件,在SDK环境下合并

可通过qspi flash 或者SD卡启动进行系统加载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq是一款基于ARM Cortex-A9架构的SoC芯片,它集成了FPGA和处理器,可以实现高性能的数字信号处理和控制。在Zynq上运行Linux操作系统可以充分发挥其处理器的性能和FPGA的可编程性能力,实现复杂的应用。 以下是在Zynq搭建Linux操作系统的步骤: 1. 准备工作 在开始之前,需要准备好以下工具和材料: - 一台装有Ubuntu操作系统的PC机 - Vivado开发环境 - Xilinx SDK(包含ARM交叉编译器) - Bootgen工具 - SD卡 2. 建Vivado工程 在Vivado中建一个新的工程,选择Zynq Processing System作为IP核,并配置好FPGA和处理器的参数。 3. 生成硬件描述文件 在Vivado中生成硬件描述文件(bitstream)。 4. 建FSBL工程 在Xilinx SDK中建一个新的FSBL(First Stage Boot Loader)工程,用于加载Linux内核和根文件系统。 5. 编译FSBL 编译FSBL工程,生成boot.bin文件。 6. Linux内核工程 在Xilinx SDK中建一个新的Linux内核工程,配置好内核参数,并使用ARM交叉编译器编译内核。 7. 生成设备树文件 生成设备树文件(device tree)用于描述硬件系统的配置信息。 8. 建根文件系统 建一个根文件系统,包含Linux操作系统所需要的文件和工具。 9. 打包根文件系统 使用Bootgen工具将根文件系统打包成一个文件(image.ub)。 10. 在SD卡中建分区 将SD卡插入PC机,使用fdisk工具在SD卡中建两个分区,一个用于存放boot.bin和设备树文件,另一个用于存放根文件系统。 11. 将文件复制到SD卡中 将生成的boot.bin,设备树文件和image.ub复制到SD卡的第一个分区中,将根文件系统复制到第二个分区中。 12. 启动系统 将SD卡插入Zynq开发板中,连接串口和网线,开机启动系统。 以上是在Zynq搭建Linux操作系统的基本步骤,具体实现过程可能会受到硬件和软件版本的影响。需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值