-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 ...
随机推荐
- django restframework 教程之Serialization(序列化)
介绍 本教程将会通过创建一个简单的粘贴代码项目,突出显示WebAPI,过程中,会介绍组成REST框架的各种组件,让你全面了解如何配合使用. 环境设置 建议使用virtualenv建立新的虚拟环境,确保 ...
- Android英文文档翻译系列(2)——HandlerThread
public class HandlerThread extends Thread Class Overview Handy class for starting a new threa ...
- UVa 673 Parentheses Balance (stack)
题目描述 : 判断字符串是不是符合正确的表达式形式. 要点 : 考虑字符串为空的时候,用getline输入,每一次判断后如果为No则要清空栈.对称思想. 注意输入格式. 代码: #include &l ...
- Android自动读取短信验证码
Android自动读取短信验证码 extends:http://www.cnblogs.com/jiayaguang/p/4366384.html,http://blog.csdn.net/yung ...
- mysql表大小写问题
查看大小写区分 mysql> show variables like "%case%"; linux在mysql安装完后默认:区分表名的大小写,不区分列名的大小写 改变表名的 ...
- javaWeb中的文件上传下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- ORA-01153: an incompatible media recovery is active
ORA-01153: an incompatible media recovery is active Cause: Attempted to start an incompatible media ...
- 160225、解决纯js文件国际化的问题
1.js中国际化 function test(){ alert("<s:text name='jsp.loading'/>"); } 2.最近在做strut ...
- Redis的简单了解以及主从复制
1.Redis的简单了解 Redis是一种高性能的分布式NoSql数据库,持久存储,高并发,数据类型丰富,通过现场申请内存空间,同时可以配置虚拟内存.五种数据类型:string(字符串,这种格式和me ...
- OA之框架的搭建
1.使用框架可以有效的解决耦合性过高的问题,减少代码修改的程度,同时方便添加新的功能.首先创建出基本的几个类库.这个框架就是使用基本的逻辑分层三层架构,然后进一步再使用接口对每个逻辑中的类库调用进行解 ...