前面说的我的硬件上有一颗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.

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

  1. root@ifc_petalinux:~# fdisk /dev/mmcblk0
  2.  
  3. The number of cylinders for this disk is set to .
  4. There is nothing wrong with that, but this is larger than ,
  5. and could in certain setups cause problems with:
  6. ) software that runs at boot time (e.g., old versions of LILO)
  7. ) booting and partitioning software from other OSs
  8. (e.g., DOS FDISK, OS/ FDISK)
  9.  
  10. Command (m for help): p
  11.  
  12. Disk /dev/mmcblk0: MB, bytes
  13. heads, sectors/track, cylinders
  14. Units = cylinders of * = bytes
  15.  
  16. Device Boot Start End Blocks Id System
  17.  
  18. Command (m for help): n
  19. Command action
  20. e extended
  21. p primary partition (-)
  22. p
  23. Partition number (-):
  24. First cylinder (-, default ): Using default value
  25. Last cylinder or +size or +sizeM or +sizeK (-, default ): +128M
  26.  
  27. Command (m for help): t
  28. Partition number (-):
  29. Hex code (type L to list codes): L
  30.  
  31. Empty 1b Hidden Win95 FAT32 9f BSD/OS
  32. FAT12 1c Hidden W95 FAT32 (LBA) a0 Thinkpad hibernation
  33. FAT16 <32M 1e Hidden W95 FAT16 (LBA) a5 FreeBSD
  34. Extended 3c Part.Magic recovery a6 OpenBSD
  35. FAT16 PPC PReP Boot a8 Darwin UFS
  36. HPFS/NTFS SFS a9 NetBSD
  37. a OS/ Boot Manager GNU HURD or SysV ab Darwin boot
  38. b Win95 FAT32 Old Minix b7 BSDI fs
  39. c Win95 FAT32 (LBA) Minix / old Linux b8 BSDI swap
  40. e Win95 FAT16 (LBA) Linux swap be Solaris boot
  41. f Win95 Ext'd (LBA) 83 Linux eb BeOS fs
  42. Hidden FAT12 OS/ hidden C: drive ee EFI GPT
  43. Compaq diagnostics Linux extended ef EFI (FAT-//)
  44. Hidden FAT16 <32M NTFS volume set f0 Linux/PA-RISC boot
  45. Hidden FAT16 NTFS volume set f2 DOS secondary
  46. Hidden HPFS/NTFS 8e Linux LVM fd Linux raid autodetect
  47. Hex code (type L to list codes): b
  48. Changed system type of partition to b (Win95 FAT32)
  49.  
  50. Command (m for help): w
  51. The partition table has been altered.
  52. Calling ioctl() to re-read partition table
  53. mmcblk0: p1
  54. root@ifc_petalinux:~#
  55.  
  56. mkdosfs -F /dev/mmcblk0p1

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

执行命令:

  1. petalinux-config

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

  1. #Subsystem AUTO Hardware Settings --->
  2. # Advanced bootable images storage Settings --->
  3. # boot image settings --->
  4. # image storage media ---> primary flash
  5. # kernel image settings --->
  6. # image storage media ---> primary sd
  7. # SD/SDIO Settings ----> ps_sd1

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

重新编译:

  1. 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口。

  1. mkdir /mnt/usb
  2. mkdir /mnt/emmc
  3. #挂载usb和emmc
  4. mount /dev/sda1 /mnt/usb
  5. mount /dev/mmcblk0p1 /mnt/emmc
  6. #复制image.ub到emmc第一个分区mmcblk0p1
  7. cp /mnt/usb/image.ub /mnt/emmc
  8. #复制BOOT_EMMC.bin到QSPI FLASH第一个分区mtd0
  9. flashcp /mnt/usb/BOOT_EMMC.bin /dev/mtd0
  10. #接触挂载
  11. umount /mnt/usb
  12. umount /mnt/emmc

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

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

重新启动板子:

  1. 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. 给大家推荐一个好的android模拟器genymotion,非常流畅,跟真机差不多

    http://www.genymotion.cn/这里是下载地址, 下载的时候会要求输入邮箱并注册,这个邮箱尽量用网易这类的邮箱,我试过qq邮箱无法收到验证邮件, 程序下载安装完成后,打开客户端选择设 ...

  2. WEB安全第四篇--与数据库的亲密接触:SQL注入攻击

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  3. java如何重命名文件?

    /** * 修改文件名 * @param oldFilePath 原文件路径 * @param newFileName 新文件名称 * @param overriding 判断标志(如果存在相同名的文 ...

  4. mysql数据库LOAD DATA INFILE Syntax

    1.LOAD DATA INFILE用来把一个文本文件里的内容高速写入到MySQL表里,它和SELECT ... INTO FILE的操作是对应的,一个导入.一个导出.使用LOAD DATA INFI ...

  5. 微信小程序 --- 完成小程序支付功能

    最近开发小程序,一直在看小程序的支付.经过一天的努力,小程序支付功能最终实现了. 下面感谢 csdn 博主:千堆雪惹尘埃 发布的 " 小程序与php 实现微信支付 " 原文地址: ...

  6. mycelipse中关于编码的配置

    (1)修改工作空间的编码方式: Window->Preferences->General->Workspace->Text file Encoding在Others里选择需要的 ...

  7. oracle日常函数汇总(转载)

    第一篇 著名函数之单值函数 注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式 数值类型函数 数值型函数输入数字型参数并返回数值型的值.多数该类函数的返回值支持38 ...

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

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

  9. 170807、intellij idea maven集成lombok实例

    简介: lombok 通过简单注解方式简化java代码.(如消除实体对象的get/setter方法.日志对象声明等...) 安装步骤: 1.选择支持注解处理:Settings-->Build-- ...

  10. drop user 报错ora-00604

    问题描述: SQL> show user USER is "SYS" SQL> drop user efmis_zhongyang cascade; drop user ...