前面说的我的硬件上有一颗eMMC的芯片,型号是MTFC4GACAJCN-4M IT,有4GB的容量。

BOOT.bin的文件较小,只有不到3MB,但是image.ub的文件根据不同的需求,将来可能会越来越大,将它们都放在16MB的QSPI Flash上有点危险,而且下载起来也不太方便。

所以准备将u-boot和kernel的存储位置分开,将包含u-boot的BOOT.bin烧录在QSPI Flash当中,将image.ub文件直接放在eMMC中进行启动。

step1:eMMC存储空间分区

参考文档网址:http://zedboard.org/sites/default/files/design/PicoZed_Petalinux_2015_2_eMMC_boot_v3.0_0.zip

前面我配置的方式是BOOT.bin和image.ub都在QSPI Flash当中,这样我才能正常启动Linux,来给eMMC提前进行分区。

因为我的板子上没有SD卡,所以禁用了PS的SD0外设,最终我的eMMC芯片挂载到了mmcblk0上。(假如既有SD卡<SD0>又有eMMC<SD1>,一般情况下SD卡会是mmcblk0,eMMC会是mmcblk1)

启动板子,输入用户名密码后,进行分区。按照手册上的说明,分一个128MB的分区出来,并格式化成FAT32.

下面是我的分区和格式化过程:

root@ifc_petalinux:~# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to .
There is nothing wrong with that, but this is larger than ,
and could in certain setups cause problems with:
) software that runs at boot time (e.g., old versions of LILO)
) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/ FDISK) Command (m for help): p Disk /dev/mmcblk0: MB, bytes
heads, sectors/track, cylinders
Units = cylinders of * = bytes Device Boot Start End Blocks Id System Command (m for help): n
Command action
e extended
p primary partition (-)
p
Partition number (-):
First cylinder (-, default ): Using default value
Last cylinder or +size or +sizeM or +sizeK (-, default ): +128M Command (m for help): t
Partition number (-):
Hex code (type L to list codes): L Empty 1b Hidden Win95 FAT32 9f BSD/OS
FAT12 1c Hidden W95 FAT32 (LBA) a0 Thinkpad hibernation
FAT16 <32M 1e Hidden W95 FAT16 (LBA) a5 FreeBSD
Extended 3c Part.Magic recovery a6 OpenBSD
FAT16 PPC PReP Boot a8 Darwin UFS
HPFS/NTFS SFS a9 NetBSD
a OS/ Boot Manager GNU HURD or SysV ab Darwin boot
b Win95 FAT32 Old Minix b7 BSDI fs
c Win95 FAT32 (LBA) Minix / old Linux b8 BSDI swap
e Win95 FAT16 (LBA) Linux swap be Solaris boot
f Win95 Ext'd (LBA) 83 Linux eb BeOS fs
Hidden FAT12 OS/ hidden C: drive ee EFI GPT
Compaq diagnostics Linux extended ef EFI (FAT-//)
Hidden FAT16 <32M NTFS volume set f0 Linux/PA-RISC boot
Hidden FAT16 NTFS volume set f2 DOS secondary
Hidden HPFS/NTFS 8e Linux LVM fd Linux raid autodetect
Hex code (type L to list codes): b
Changed system type of partition to b (Win95 FAT32) Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
mmcblk0: p1
root@ifc_petalinux:~# mkdosfs -F /dev/mmcblk0p1

step2:配置u-boot从eMMC引导启动PetaLinux

执行命令:

petalinux-config

配置启动方式,将kernel启动配置为eMMC启动:

#Subsystem AUTO Hardware Settings --->
# Advanced bootable images storage Settings --->
# boot image settings --->
# image storage media ---> primary flash
# kernel image settings --->
# image storage media ---> primary sd
# SD/SDIO Settings ----> ps_sd1

其中的SD/SDIO Settings一定要配置为eMMC对应的SD1。

重新编译:

petalinux-build

编译完成后,重新使用Windows的Xilinx SDK将:zynq_fsbl.elf--->IFC_TOP_wrapper.bit--->u-boot.elf三个文件打包成BOOT.bin文件,改名为BOOT_EMMC.bin。

将BOOT.bin和image.ub文件复制到U盘上,然后把U盘插到板子的USB口。

mkdir /mnt/usb
mkdir /mnt/emmc
#挂载usb和emmc
mount /dev/sda1 /mnt/usb
mount /dev/mmcblk0p1 /mnt/emmc
#复制image.ub到emmc第一个分区mmcblk0p1
cp /mnt/usb/image.ub /mnt/emmc
#复制BOOT_EMMC.bin到QSPI FLASH第一个分区mtd0
flashcp /mnt/usb/BOOT_EMMC.bin /dev/mtd0
#接触挂载
umount /mnt/usb
umount /mnt/emmc

假如出现:FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

说明上次U盘没有正确移除,可能会造成image.ub的复制错误。需要在windows中修复一下U盘,再重新进行上面的操作。

重新启动板子:

shutdown now -r

这一次板子就能够从QSPI运行FSBL,加载bit,运行u-boot,

然后u-boot从eMMC芯片引导加载Linux操作系统。

eMMC最终被我分为了3个区,

第一个分区用来存放image.ub或者将来的设备树等文件,128MB

第二个分区用来存放用户数据,2048MB

第三个分区用来存放库文件,如opencv的库,剩余的1个多GB

待改进:

eMMC默认是有两个16MB的boot分区的,而且还支持加密什么的,是否可以把u-boot和image.ub放到里面去。

并且两个boot分区可在系统升级时进行切换。好复杂,将来有时间再研究吧。

yuan :https://blog.csdn.net/vacajk/article/category/6645367

-03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】的更多相关文章

  1. 【Xilinx-Petalinux学习】-03-PetaLinux通过eMMC方式启动

    前面说的我的硬件上有一颗eMMC的芯片,型号是MTFC4GACAJCN-4M IT,有4GB的容量. BOOT.bin的文件较小,只有不到3MB,但是image.ub的文件根据不同的需求,将来可能会越 ...

  2. 以服务方式启动tomcat无法访问NFS共享盘

    用startup.bat方式启动tomcat,程序的可以访问NFS共享盘的文件.但用 1).以服务的方式启动tomcat 2).或者用windows的任务计划去执行startup.bat的方式启动to ...

  3. Jmeter命令行方式启动

    在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...

  4. ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本

    一.修改主机名 ssh登陆 vi /etc/hostname vi /etc/hosts hostname ulocal (执行这个命令,无须重启服务器) 保证127.0.0.1 的hostname与 ...

  5. 以守护进程方式启动firefly

    原地址:http://www.9miao.com/question-15-53966.html 最近看源码,查了半天,没找到已守护进程方式启动firefly的方法,自己改了改写了一个,废话不多说直接上 ...

  6. Openfire3.8.2在eclipse中Debug方式启动最简单的方式

    一.前言 最近打算研究一下Openfire,于是打算最好能够以Debug方式启动Openfire的Server,到网上一搜,还果真早到官网的一篇文章来: http://community.ignite ...

  7. MySQL安装(以程序的方式启动)zip版

    电脑环境 win10 64位 企业版 1.解压zip文件到某路径下. 2.复制目录下的my-default.ini 改名字(my.ini) 3.打开my.ini [mysqld]下面加上charact ...

  8. 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦

    原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...

  9. AM335x(TQ335x)学习笔记——使用dtb方式启动内核

    老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核. 我使用的内核是linux-3.17.2版本,下面开始编译内核. (1) 解压内核 [php] view p ...

随机推荐

  1. TCP协议的基本规则和在Java中的使用

    TCP协议是面向连接的,相对于UDP协议来说效率较低,但是比较安全,数据不容易丢失.TCP协议类似打电话的过程,在一端拨号时必须等待对方回应,确定两端建立了连接通道才能传送信息. 在Java中TCP被 ...

  2. Object.prototype.toString()

    Object.prototype.toString()方法返回一个代表该对象的字符串. var o = new Object(); o.toString(); //"[object Obje ...

  3. LoadRunner 11 安装

    下载地址:http://www.ddooo.com/softdown/61971.htm#dltab LoadRunner是一款专业级别的应用负载测试工具,它可以模拟上千万用户对企业应用进行真实的负载 ...

  4. mysql的TIMESTAMPDIFF

    SELECT (TIMESTAMPDIFF(MINUTE, STR_to_date('2018-8-30 12:15:52', '%Y-%m-%d %H:%i:%s') , STR_to_date(' ...

  5. mac java环境变量配置

    在终端输入java -version命令,如果没安装系统会自动弹出个东西让你安装,下载完之后打开,再点java -version,如果有显示就说明安装成功了. 在终端输入  ç 可以得到JAVA_HO ...

  6. windows MySQL5.7.9免安装版配置方法

    1. 解压MySQL压缩包    将下载的MySQL压缩包解压到自定义目录下,我的解压目录是:    "D:\Program Files\mysql-5.7.9-win32"    ...

  7. MyBatis DAO层传递参数到mapping.xml 几种方式

    Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结) 第一种:传递单个参数 Dao层Code片段: /** * 根据articleId查询XXXX详情. * * @par ...

  8. chinese-typesetting:更好的中文文案排版

    欢迎指正.GitHub 地址:https://github.com/jxlwqq/chinese-typesetting 更好的中文文案排版 统一中文文案.排版的相关用法,降低团队成员之间的沟通成本, ...

  9. Python使用logging来记录日志

    #encoding:utf-8 import logging.config from logging.handlers import RotatingFileHandler import Config ...

  10. HDU_3486_Interviewe

    Interviewe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...