zynqmp 怎么将linux系统下载到emmc
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zynqmp 怎么将linux系统下载到emmc相关的知识,希望对你有一定的参考价值。
参考技术A 1,vivado硬件配置,要选择EMMC代表的SD1;2,编译petalinux:执行petalinux-config。
(1)选择Subsystem AUTO Hardware Setting
-> Advanced bootable images storage settings
->boot image settings;
选择primary flash,这里是将BOOT.bin设置为从qspi flash启动
(2)选择Subsystem AUTO Hardware Setting
-> Advanced bootable images storage settings
->kernel image settings;
选择primary sd,进入后我们看到这里实际就是设置image.ub的存放区域。
(3)选择Image Packaging Configuration,设置启动启动文件系统所在位置;
在设置启动方式的时候,如下两张图这样设置读取根文件系统的位置/dev/mmcblk1p2。
(4)设置你的驱动然后编译,依次执行:petalinux-config -c kernel;petalinux-config -c rootfs;
petalinux-build;petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force;
3,做之前先分区(把EMMC分区),先做一个SD卡启动的petalinux文件,
petalinux系统在zynq上面启动起来以后就进行如下分区:即是mmcblk1分为mmcblk1p1和mmcblk1p2
具体步骤如下:
(1) 把EMMC进行分区,执行命令: fdisk /dev/mmcblk1
(2)使用n命令,添加一个新的分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
选择p,添加主分区
,(3)选择分区号,选择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
(4)使用t命令,设置分区格式
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (Win95 FAT32)
(5)使用w命令,保存配置,必须保存配置
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
(6)使用对应文件系统工具对分析进行格式化(只能在debian里面才能识别命令)
mkfs.fat /dev/mmcblk1p1 设置为fat32格式
mkfs.ext4 /dev/mmcblk1p2设置为ext4格式
注意:执行完w命令然后才算分区成功,执行完mkfs命令才算格设置内存属性成功。
以上分区完成后,可以使用p命令,显示分区信息;也可以使用用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
(7)执行这句:mkdosfs -F 32 /dev/mmcblk0p1
当然,可以重复上述步骤,多分几个区,用来存放不同的状态:
FLASH要要用来存放BOOT.bin
第一个分区用来存放image.ub或者设备树(比如uImage和devicetree.dtb)等文件;--可以设置为128MB
第二个分区用来存放用户数据(比如可执行程序);可以设置为2048MB
第三个分区用来存放程序执行需要的库文件(opencv的库,qtcreator库,相机库,视频编码解码库等);剩余的1个多GB
4,把系统同步到ext4里面
先把sd卡里面系统挂载进来 :mount /dev/mmcblk0p2 /mnt
再把刚刚弄好的系统挂进来: mount /dev/mmcblk1p2 /tmp , 然后cd /mnt
然后进入把SD卡里面的系统同步到emmc里面:rsync -av ./* /tmp ,时间有点久,直到结束为止。
(要是不用SD卡也可以挂载U盘,解压,然后进行系统同步到EMMC所挂载的地方/tmp)
5,然后将BOOT.BIN和image.ub烧录到QSPI-FLASH中
首先擦除QSPI-FLASH:flash_eraseall /dev/mtd0
存放BOOT.bin到flash : flashcp BOOT.bin /dev/mtd0
此处若是将image.ub写入emmc的FAT分区中(不存放到flash中),先使用mount挂载eMMC的FAT分区,
然后将image.ub使用cp指令拷贝进 /mnt/mmcFat即可,也就是把uImage 拷贝到 /dev/mmcblk1p1;
进入uImage所在目录,然后执行 cp uImage /tmp;也就是把uImage存放到了 /dev/mmcblk1p1里面。
6,最后断电拔出SD卡,将拨码开关设置为flash启动,就能看到petalinux启动起来;
7,报错及其解决办法
————————————————
版权声明:本文为CSDN博主「寒听雪落」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangjie36/article/details/104740448/
Linux-使用uboot命令将Linux镜像和设备树文件下载到EMMC中
一、fatwrite命令
1.fatwrite命令用于将DRAM中的数据写入EMMC设备中,命令格式如下:
fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
interface:接口,比如mmc;
dev:设备号;
part:分区;
addr:是要写入的数据在DRAM中的起始地址;
filename:是要写入的数据文件名字;
bytes:表示要写入多少字节的数据。
二、通过fatwrite命令在uboot中更新EMMC中的Linux镜像文件和设备树
1.首先要确认uboot是否有fatwrite命令,默认uboot没有使能fatwrite命令,需要修改板子的配置头文件,比如mx6ull_fire_emmc.h(文件路径:uboot根目录:/include/configs/mx6ull_fire_emmc.h),板子不同对应的头文件也不同,请根据个人实际情况设置。找到开发板对应的配置头文件后在配置文件中添加如下一行宏定义来使能fatwrite命令:
#define CONFIG_FAT_WRITE /* 使能fatwrite命令 */
添加的位置如下图所示:
2.使用tftp命令将zImage下载到DRAM的0x80800000地址处,将mx6ull_fire_emmc.dtb下载到DRAM的0x8300000地址处,命令如下:
1 tftp 80800000 zImage 2 tftp 83000000 imx6ull-fire-emmc.dtb
下载过程如下图所示:
zImage的大小为5614872(0x55AD18)个字节;im6ull-fire-emmc.dtb的大小为35969(0x8C81)个字节。
3.接下来使用fatwrite命令将其写到EMMC设备分区1中,命令如下:
1 fatwrite mmc 1:1 80800000 zImage 0x55AD18 2 fatwrite mmc 1:1 83000000 imx6ull-fire-emmc.dtb 0x8C81
完成后使用如下命令查看EMMC分区1里面的文件:
1 fatls mmc 1:1
结果如下图所示:
待添加。。。。。。
end
以上是关于zynqmp 怎么将linux系统下载到emmc的主要内容,如果未能解决你的问题,请参考以下文章