先明确:/dev/mmcblk0p1是SD卡的FAT区,/dev/mmcblk0p2是SD卡的EXT4,

             /dev/mmcblk1是未进行分区的EMMC;一会下面会讲到要讲把EMMC分为 /dev/mmcblk1p1和 /dev/mmcblk1p2。

编译petalinux:执行petalinux-config。

(1)选择Subsystem AUTO Hardware Setting 

       -> Advanced bootable images storage settings

       ->boot image settings;

     选择primary flash,这里是将BOOT.bin设置为从qspi flash启动

     ZYNQ petalinux将启动文件固化到FLASH

(2)选择Subsystem AUTO Hardware Setting 

       -> Advanced bootable images storage settings

       ->kernel image settings;

         选择primary sd,进入后我们看到这里实际就是设置image.ub的存放区域。

ZYNQ petalinux将启动文件固化到FLASH

(3)选择Image Packaging Configuration,设置启动启动文件系统所在位置;

在设置启动方式的时候,如下两张图这样设置读取根文件系统的位置/dev/mmcblk1p2。

ZYNQ petalinux将启动文件固化到FLASH

ZYNQ petalinux将启动文件固化到FLASH

(4)设置你的驱动然后编译,依次执行:petalinux-config -c kernel;petalinux-config -c rootfs;

        petalinux-build;petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force;

 

做之前先分区(把EMMC分区),先做一个SD卡启动的文件,等petalinux在zynq上面启动起来以后就进行如下分区:

即是mmcblk1分为mmcblk1p1和mmcblk1p2

具体步骤如下:fdisk /dev/mmcblk1

1,使用n命令,添加一个新的分区

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

选择p,添加主分区

 

,2,选择分区号,选择1,

Partition number (1-4): 1                    // 选择分区号

First cylinder (1-238592, default 1): Using default value 1               // 选择分区的第一个柱面,选择1

Last cylinder or +size or +sizeM or +sizeK (1-238592, default 238592): Using default value 238592  // 选择最后一个柱面

注意:1-238592,first要选第一个数,last要选择的比238592小,其中1024就是表示1M

3,使用t命令,设置分区格式

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): l

4,使用w命令,保存配置,必须保存配置

Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table

5,(1)是用p命令,显示分区信息(2)用d命令表示删除分区

Command (m for help): p

Disk /dev/mmcblk0: 7818 MB, 7818182656 bytes

4 heads, 16 sectors/track, 238592 cylinders

Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System

/dev/mmcblk0p1               1      238592     7634936  83 Linux

6,使用对应文件系统工具对分析进行格式化(只能在debian里面才能识别命令)

mkfs.fat /dev/mmcblk1p1 设置为fat32格式

mkfs.ext4 /dev/mmcblk1p2设置为ext4格式

7,把系统同步到ext4里面,

先把sd卡里面系统挂载进来 :mount /dev/mmcblk0p2 /mnt

再把刚刚弄好的系统挂进来: mount /dev/mmcblk1p2 /tmp      ,    然后cd /mnt

然后进入把SD卡里面的系统同步到emmc里面:rsync -av ./* /tmp ,直到结束为止。

8,然后将BOOT.BIN和image.ub烧录到QSPI-FLASH中,首先擦除QSPI-FLASH:

(1)flash_erashall /dev/mtd0  

用于存放BOOT.bin  : flashcp BOOT.bin  /dev/mtd0
(2)flash_erashall /dev/mtd2  

用于存放image.ub:flashcp image.ub /dev/mtd2

(3)不是固化到flash的步骤之一:

         此处若是将image.ub写入emmc的FAT分区中(不存放到flash中),先使用mount挂载eMMC的FAT分区,

        然后将image.ub使用cp指令拷贝进 /mnt/mmcFat即可,也就是把uImage 拷贝到 /dev/mmcblk1p1;

         进入uImage所在目录,然后执行 cp  uImage  /tmp;也就是把uImage存放到了 /dev/mmcblk1p1里面。

(4)最后断电拔出SD卡,将拨码开关设置为flash启动,就能看到petalinux启动起来;

 

相关文章:

  • 2021-10-03
  • 2022-02-14
  • 2021-05-08
  • 2021-09-04
  • 2021-09-03
  • 2022-12-23
  • 2021-07-04
  • 2021-12-02
猜你喜欢
  • 2021-12-23
  • 2021-10-24
  • 2021-05-25
  • 2021-06-27
  • 2021-08-24
  • 2021-08-11
  • 2021-08-11
相关资源
相似解决方案