AM335x的启动过程
来源:互联网 发布:淘宝上的药店有资质吗 编辑:程序博客网 时间:2024/05/18 19:45
u-boot简介
简单的说,u-boot的核心功能是加载内核。
为什么需要它,上电之后直接加载内核不可以吗?
虽然目前的内核没有这么做且理论上也可以实现,但没有必要这么做。
这就类似于几十万大军在行军,通常的做法是派出几千人的不断在前面探路,而非几十万大军一股脑的往前走。
总结一下,u-boot的作用,初始化各类的硬件,加载内核,在加载内核的同时,把硬件的基本信息通过参数的形式传递给内核。
启动过程
AM335x通常的启动分为三个阶段,ROM Code、SPL、u-boot,最终加载内核。
ROM Code
顾名思义,这块的代码是TI内置的。上电后,硬件去加载该代码。这块的代码作用,是根据启动选项来从不同的启动源启动。目前支持的启动源有MMC、Nand、Uart、USB、net等方式。如,我们的项目用的Nand,ROM Code运行后,会初始化Nand,然后在Nand的0x0的位置加载下一阶段的代码,即SPL的代码。把SPL的代码,加载到内部存储器中运行。
SPL
SPL和MLO有什么区别,可以认为是没有区别。具体的区别是SPL代码中包含了调试等描述信息,MLO作为裁剪后的代码,烧写进Nand中。最大的疑问是,为什么需要SPL阶段,直接ROM Code启动u-boot不是更快吗?因为硬件,目前,ROM Code只能把代码加载到内部存储器中运行,而内部存储器资源非常有限,运行不了正常的u-boot,所以先运行精简版的u-boot,再去加载正常的u-boot。
所以,SPL阶段的使命很明确,初始化外存,加载u-boot到外存。
u-boot
不必多言了,这就是正常的u-boot,一是提供交互界面,供用户进行配置;二是初始化硬件环境加载内核运行。当然,核心功能上面也说了,是加载内核。
另外,目前AM335x也支持Falcon模式,在该模式下,SPL直接加载内核启动,后面会有详细的介绍。
- AM335x的启动过程
- Am335x 启动过程
- dm3730和dm6437,dm6446,AM335x启动过程的不同
- AM335x 有四个不同的启动阶段:
- AM335X连接LAN8720的调试过程
- AM335x nand启动
- am335x backlight注册过程
- 关于AM335X uboot启动的时候找不到nand的问题
- AM335x启动流程(BootRom-> MLO->的Uboot)
- AM335x nand启动(一)
- AM335X Nand Flash 启动调试
- AM335X的资源链接
- am335x 从 NAND FLASH 中启动遇到的问题的解决方法(上) (下)
- am335x nand启动 Ubuntu相关命令
- AM335x u-boot启动流程问题
- AM335x启动流程(BootRom->MLO->Uboot)
- AM335x启动流程(BootRom->MLO->Uboot)
- am335x嵌入式开发-bootloader启动流程
- java中taglib
- LeetCode--1.TwoSum
- 轻院1067: 有问题的里程表
- mongoDB的备份和恢复
- golang实现set数据结构
- AM335x的启动过程
- 第一节:CSS术语和文档
- 在Ubuntu上编译安装MongoDB
- 手把手教你做爬虫---基于NodeJs
- centos6-7通用查看系统版本的方法
- Java关键字之native,strictfp,transient,volatile,assert
- Monitor(二分,二维前缀和板子记录)
- 重载,this调用另一个构造器,无参数构造器,静态初始化块
- 变态跳台阶