本帖最后由 Charles 于 2019-6-6 15:02 编辑
我们需要知道C5 SoC FPGALinux系统镜像有三个分区,每个分区所需的文件,如下: 分区 | | | u-boot.scr、zImage、soc_fpga.dtb、soc_fpga.rbf | | | | preloader-mkpimage.bin、u-boot.img |
1. 将系统所需文件(preloader、u-boot、Linux内核、dtb、rbf及rootfs)准备完整; 2. 打开Ubuntu虚拟机,并打开终端,通过指令mkdir xxx创建一个文件夹(最好是英文的),将系统所需文件放入该文件夹,具体如下: 3. preloader、u-boot、Linux内核、dtb、rbf及rootfs文件都已经有了,还需要一个文件就是u-boot.scr文件,这里介绍scr文件产生方法: a) 首先,u-boot.scr是个引导脚本,由u-boot.script产生的,u-boot.script文件打开之后内容如下,文件中的soc_system.rbf及soc_system.dtb名称根据自己生成的名字进行修改,其余的不需要修改: echo -- Programming FPGA -- fatload mmc 0:1 $fpgadata soc_system.rbf; fpga load 0 $fpgadata $filesize; run bridge_enable_handoff;
echo -- Setting Env Variables -- setenv fdtimage soc_system.dtb; setenv mmcroot /dev/mmcblk0p2; setenv mmcload 'mmc rescan;${mmcloadcmd} mmc 0 {mmcloadpart} ${loadaddr}${bootimage};${mmcloadcmd} mmc 0 {mmcloadpart} ${fdtaddr} ${fdtimage};'; setenv mmcboot 'setenv bootargs console=ttyS0,115200 root=${mmcroot}rw rootwait; bootz ${loadaddr} - ${fdtaddr}';
run mmcload; run mmcboot; b) 将上步中u-boot.script文件放在电脑的一个英文目录下,打开SoC EDS Command Shell,并切换到u-boot.script所在目录,如下: c) 输入指令mkimage -A arm -O linux -Tscript -C none -a 0 -e 0 -n "u-boot.script" -d u-boot.scriptu-boot.scr,双引号中的内容根据script文件名称进行修改,这里为u-boot.script;回车,生成u-boot.scr文件,如下: d) 在Ubuntu 虚拟机环境下输入kimage -A arm -O linux -T script -C none -a 0 -e 0 -n"u-boot.script" -d u-boot.script u-boot.scr也可以生成u-boot.scr文件,如下: 4. 将u-boot.scr也放入用于生成系统镜像的Ubuntu虚拟机文件夹里,打开终端并在root用户权限下,输入指令: ./make_sdimage.py \ -f \ -Ppreloader-mkpimage.bin,u-boot.img,num=3,format=raw,size=10M,type=A2 \ -Prootfs/*,num=2,format=ext3,size=1500M \ -PzImage,u-boot.scr,soc_system.rbf,soc_system.dtb,num=1,format=fat32,size=500M \ -s 2G \ -nsdimage.img 备注:这里-P代表一个分区,其中num代表分区编号,format代表分区的格式,size代表分区大小,-n代表生成镜像的名称(这里命名为sdimage.img),-s代表整个系统镜像大小。 2. 镜像制作完成后,可以发现当前目录多了一个sdimage.img文件,该文件就是用于刻录SD卡的系统镜像,如下: 3. 至此SD卡系统镜像制作完成。
|