BBB学习(四):SD卡安装系统镜像(2):系统镜像简析
来源:互联网 发布:珠宝营销服务软件 编辑:程序博客网 时间:2024/05/16 02:10
一、问题
如果做过嵌入式linux系统开发的童鞋可以知道,通常我们在开发嵌入式Linux时,如果要在SD卡上安装时要经过:
SD卡格式化------>SD卡分区------->编译MLO、U-boot、Linux内核、根文件系统等等----->复制到SD卡------->插入SD卡并从SD卡启动。
但在上一篇文章中我们可以知道,不需要这些流程,直接将官网系统.img文件用diskImager写进入SD卡就可以了,这是为什么呢?难道这样一个流程就把前面开发流程全部省略了吗?其实并不是。
二、什么是img文件
用直观的理解就是img文件是一个可以代表整个磁盘所有数据的文件,包括一些我们在文件系统下无法看到的磁盘头数据,类似于我们电脑的整个硬盘,如果从这个硬盘启动,我们可以进入操作系统,并看到不同分区下文件系统中的文件,当我们把电脑的整个硬盘拆下来当成移动硬盘时,我们也可以看到相关文件, 但是系统启动分区,引导分区中尽管我们可以看到这个分区,但无法看到这个分区的数据,因为在该分区中的信息是并不是按文件系统格式来的。而我们下载的BBB的img文件就是这样一个文件,其包含两个部分,一个是启动部分,一个是我们内核及文件系统等分区。
三、img文件分析
在电脑上我们可以下载Winhex来以16进制的形式看到img文件。
1、打开文件
步骤:----打开img文件--->在专业工具中选择将镜像文件转换为磁盘。可以看到以下内容:
2、未分区空间(4M)
在这个大小 为4M的未分区空间中,包含了系统启动时需要的三个重要内容,他们是MBR、MLO及U-boot。他们的位置可以通过这个工具看到。
MBR空间:
https://en.wikipedia.org/wiki/Master_boot_record#PTE
MBR空间是每一个系统盘启动时的主引导扇区,存在硬盘的前512个字节中,主要保存磁盘的分区等信息,从下面红框中的55 AA可以看出这是MBR空间的标志,0x1FF正好是512个字节。
启动代码MLO:
在该空间中,可以看到地址0x0020000处是有文件的,此处的文件是MLO,是AM335X启动时并不是直接启动u-boot的,中间还加了一个步骤是MLO,具体功能将在以后细谈。
U-boot代码:
在地址0x0060000处,存放的时U-boot,从旁边的字符串也可以看得出来uboot的版本。
3、分区1
在这个分区中可以明显看到这里有一个文件系统,包含有bin等linux的系统目录,也是我们在系统运行起来之后,通过Terminal看到的系统文件目录。
由这几个分区,我们可以大致推断出整个系统的启动简要流程:
系统上电时,可以通过磁盘前512个字节中的信息知道系统分区在哪,芯片直接会从0x002000处将MLO复制到内存中执行,然后在0x0060000处复制U-boot到内存中初始化相关硬件,并将加载分区中的内核,从而让系统启动起来。至于系统启动详细流程,我会在后面的内容中详细介绍。
四、总结
本节主要简单介绍了官网提供的.img镜像文件结构,同时推断出了BBB启动时的简要流程,由此我们可以得到:官网提供的.img镜像文件是将已经编译好的MLO、Uboot、内核、文件系统等做成一个磁盘文件,只需要将.img文件原封不动的复制到SD卡中即可成为一张系统盘,其大大简化了嵌入式移植的过程,省去了个人编译Uboot和内核的流程。当然这只是针对BBB,如果在基于BBB做相关硬件扩展同时涉及外部驱动则需要重新编译相关文件。其实对于BBB来说基本已经满足要求了,因为所 有的接口(如spi i2c)都已经引了出来,可以完成应用层的驱动编译。
阅读全文
0 0
- BBB学习(四):SD卡安装系统镜像(2):系统镜像简析
- BBB学习(三):SD卡安装系统镜像(1):安装流程
- RTEMS-BBB(四):rki镜像
- RTEMS-BBB(五):SD卡
- 制作树苺派SD卡备份镜像——树苺派系统备份与还原指南
- 香蕉派SD卡安装系统(Windws平台工具)
- RTEMS-BBB(六):SD卡分步制作
- Mac虚拟机镜像安装Windows系统
- 树莓派安装系统和制作镜像
- 出货系统镜像批量安装方案
- linux 镜像安装系统包
- LFS系统安装镜像制作
- 基于BBB的4轮移动轮式机器人系统设计与实现(四)--BeagleBone Black PWM 应用程序开发
- 如何在win系统下安装树莓派的系统到SD卡(菜鸟教程一)
- [安装系统] UlTraISO U盘系统镜像刻录
- BBB学习(二):BBB介绍
- 使用SD卡扩展BBB文件系统存储空间
- 系统镜像文件
- 给第三方dll加上强命名的方法
- Arduino十大滤波算法程序大全
- deeplearning.ai-lecture2-week1-Gradient Checking-homework
- 数据库操作 —— 快速入门:基本配置和使用、读写分离 & 数据库事务
- BGA fanout 设计 --creat fanout
- BBB学习(四):SD卡安装系统镜像(2):系统镜像简析
- 判断一个数是不是素数
- error 65: access violation at 0x40021000 : no 'read
- 并行加密算法系列(一)之AES单个加密模式的可并行性分析
- 自己搭建内网可用的Jrebel License Server激活Jrebel
- OpenCV2.4.13中同一函数不同形参的理解,vector,list区别,findContours理解
- SQL
- deeplearning.ai-lecture2-week1-Initialization-homework
- 初识工厂设计模式