-03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】
前面说的我的硬件上有一颗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学习】的更多相关文章
- 【Xilinx-Petalinux学习】-03-PetaLinux通过eMMC方式启动
前面说的我的硬件上有一颗eMMC的芯片,型号是MTFC4GACAJCN-4M IT,有4GB的容量. BOOT.bin的文件较小,只有不到3MB,但是image.ub的文件根据不同的需求,将来可能会越 ...
- 以服务方式启动tomcat无法访问NFS共享盘
用startup.bat方式启动tomcat,程序的可以访问NFS共享盘的文件.但用 1).以服务的方式启动tomcat 2).或者用windows的任务计划去执行startup.bat的方式启动to ...
- Jmeter命令行方式启动
在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...
- ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本
一.修改主机名 ssh登陆 vi /etc/hostname vi /etc/hosts hostname ulocal (执行这个命令,无须重启服务器) 保证127.0.0.1 的hostname与 ...
- 以守护进程方式启动firefly
原地址:http://www.9miao.com/question-15-53966.html 最近看源码,查了半天,没找到已守护进程方式启动firefly的方法,自己改了改写了一个,废话不多说直接上 ...
- Openfire3.8.2在eclipse中Debug方式启动最简单的方式
一.前言 最近打算研究一下Openfire,于是打算最好能够以Debug方式启动Openfire的Server,到网上一搜,还果真早到官网的一篇文章来: http://community.ignite ...
- MySQL安装(以程序的方式启动)zip版
电脑环境 win10 64位 企业版 1.解压zip文件到某路径下. 2.复制目录下的my-default.ini 改名字(my.ini) 3.打开my.ini [mysqld]下面加上charact ...
- 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦
原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...
- AM335x(TQ335x)学习笔记——使用dtb方式启动内核
老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核. 我使用的内核是linux-3.17.2版本,下面开始编译内核. (1) 解压内核 [php] view p ...
随机推荐
- TCP协议的基本规则和在Java中的使用
TCP协议是面向连接的,相对于UDP协议来说效率较低,但是比较安全,数据不容易丢失.TCP协议类似打电话的过程,在一端拨号时必须等待对方回应,确定两端建立了连接通道才能传送信息. 在Java中TCP被 ...
- Object.prototype.toString()
Object.prototype.toString()方法返回一个代表该对象的字符串. var o = new Object(); o.toString(); //"[object Obje ...
- LoadRunner 11 安装
下载地址:http://www.ddooo.com/softdown/61971.htm#dltab LoadRunner是一款专业级别的应用负载测试工具,它可以模拟上千万用户对企业应用进行真实的负载 ...
- mysql的TIMESTAMPDIFF
SELECT (TIMESTAMPDIFF(MINUTE, STR_to_date('2018-8-30 12:15:52', '%Y-%m-%d %H:%i:%s') , STR_to_date(' ...
- mac java环境变量配置
在终端输入java -version命令,如果没安装系统会自动弹出个东西让你安装,下载完之后打开,再点java -version,如果有显示就说明安装成功了. 在终端输入 ç 可以得到JAVA_HO ...
- windows MySQL5.7.9免安装版配置方法
1. 解压MySQL压缩包 将下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\mysql-5.7.9-win32" ...
- MyBatis DAO层传递参数到mapping.xml 几种方式
Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结) 第一种:传递单个参数 Dao层Code片段: /** * 根据articleId查询XXXX详情. * * @par ...
- chinese-typesetting:更好的中文文案排版
欢迎指正.GitHub 地址:https://github.com/jxlwqq/chinese-typesetting 更好的中文文案排版 统一中文文案.排版的相关用法,降低团队成员之间的沟通成本, ...
- Python使用logging来记录日志
#encoding:utf-8 import logging.config from logging.handlers import RotatingFileHandler import Config ...
- HDU_3486_Interviewe
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...