Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1749422
  • 博文数量: 143
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1462
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-23 11:14
文章分类

全部博文(143)

文章存档

2022年(3)

2021年(13)

2020年(21)

2019年(8)

2018年(28)

2017年(7)

2016年(63)

我的朋友

分类: 嵌入式

2016-11-02 17:14:14

启动步骤

嵌入式Linux 启动

步骤

说明

step1

单板上电,先起动存放在ROM中的RBL(Rom Boot Loader)程序。也叫the primary boot loader(一级boot)。

step2

RBL复位ARM,NANDFLASHUBL起始地址加载UBL程序到OMAPL138的片内存储器,并运行UBL(User Boot Loader)程序。也叫the secondary boot loader(二级boot

step3

UBL首先做一些初始化工作,然后从NANDFLASH读取UBoot程序到板上存储器,跳转到UBoot入口执行UBoot

step4

UBootNANDFLASH读入启动参数,然后读入Linux内核uImage到存储器,解压缩并运行。(uboot参数指定从哪儿读入,如从nandflash的某物理地址读入)

step5

Linux内核启动后,重新初始化OMAPL138,接着加载文件系统,执行文件系统中的程序并启动控制台。 (uboot参数指定从哪儿读入,如从nandflash的某个逻辑分区读入或从nfs读入)

  这里涉及几个基本的概念

分区:分区(即规定那个地址区间存放内核或文件系统)是内核干的事;uboot没有分区的概念,烧写时uboot只是将内核或文件系统,下载到某个分区的地址开始处;启动时uboot也只是从内核所在分区的物理地址处加载内核,之后由内核将根文件系统所在分区mount到根目录/。所以,uboot对flash进行操作时,哪块区域放什么是以内核为主。
烧写
   烧写内核:通常的做法是,首先在uboot下下载内核文件到内存,然后直接烧写到nandflash的物理地址。
   烧写文件系统:文件系统也可以在uboot下直接烧写文件系统到nandflash。但通常的做法是,首先通过nfs启动某个文件系统,然后把磁盘分区mount到某个目录如/mnt下,最后把文件系统的文件写入(如解压)/mnt/rootfs中。其实,详细步骤:
           如果是块设备:首先通过nfs启动某个文件系统,然后把磁盘分区所在mtdblock块设备,直接mount到某个目录如/mnt下,最后把文件系统的文件写入(如解压)/mnt/rootfs中。
           如果是字符设备:首先通过nfs启动某个文件系统,然后把磁盘分区所在mtd字符设备建立逻辑分区(文件系统),接着mount逻辑分区到某个目录如/mnt下,最后把文件系统的文件写入(如解压)/mnt/rootfs中。
           注意:mount命令只能挂载块设备(有文件系统),而不能对字符设备进行挂载。
注意:由于uboot中已经擦写内核镜像和根文件系统镜像到flash,那根文件系统中/boot下的内核镜像等其它文件有什么用?
   在Ubuntu中,/boot目录存放的是Linux内核、零时文件系统Initrd、以及用于引导系统程序的其它文件。一般是一个独立的磁盘分区,大概100M,且位于磁盘的最前面。
   在Arm中,貌似没用。

阅读(2678) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~