生成BOOT.BIN文件命令:
petalinux-package --boot --format BIN --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot --force
john@john-virtual-machine:~/peta_proj/myc-7015/images/linux$ petalinux-package --boot --format BIN --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot --force
Ramdisk
什么是ramdisk?
ramdisk是一个基于内存的文件系统,特点是访问不需要驱动。
ramdisk在Linux内核中的作用是什么?
中介作用,即内核通过执行ramdisk的init文件来设置真正的根文件系统,并执行根文件系统的init文件
在Linux内核中使用ramdisk,可以减少内核的代码量。
解释:
如果没有ramdisk,要启动存储系统的init进程,内核要能直接运行存储系统的init文件。因为Linux系统访问存储设备,需要有驱动才能进行,所以要将存储系统的驱动代码放进内核。现在有各式各样的存储设备,如果将这些存储设备的驱动代码放进内核,则会导致内核的代码量太大。
引入基于内存的文件系统ramdisk,由于访问内存不需要驱动,则就不用将各种设备的驱动代码放入内核代码中,即减少的代码量是各种设备的驱动代码。
作者:橡树人
链接:https://www.jianshu.com/p/c33a29f7f9cd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
rootfstype=jffs2
rootfstype=squashfs
(如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.一般如果根文件系统是ext2的话,有没有这个选项是无所谓的)
在image/linux目录下生成了u-boot.elf,zynq_fsbl, system.bin 以及image.ub。这些文件中实际上跟sd卡启动的petalinux设置唯一差别的文件就是u-boot.elf,而这个文件的差别也仅仅在于autobooting的脚本(是指示从qspi flash的指定地址0X52000获取image.ub而不是从sd卡的指定文件名)
启动文件
ZYNQ-7000系列芯片运行Linux操作系统需要BOOT.BIN文件、image.ub文件和rootfs。
BOOT.BIN文件由fsbl.elf、bitstream和u-boot.elf(裸机elf程序)文件组成。fsbl.elf是由xilinx设计的,由OCM加载执行,有两个主要功能。第一是用于加载bitstream到PL,第二是根据BOOT.BIN文件组成,执行u-boot或是裸机elf程序。bitstream文件是FPGA的配置文件。裸机elf程序用于在不启动操作系统的情况下运行一些软件。u-boot.elf是一种bootloader程序,可以根据不同的硬件情况,在不同的场景下引导操作系统镜像的执行。
image.ub文件是由操作系统的镜像文件uImage和设备树文件dtb组成。uImage由压缩过的操作系统镜像zImage和一段由u-boot在引导时会读取的头image_header_t(64B)组成,这个头用于储存u-boot在引导系统时所要获取的一些信息。zImage由未压缩的内核镜像vmlinux和解压代码组成。