Boatloader的工作流程
来源:互联网 发布:免费生产计划软件 编辑:程序博客网 时间:2024/05/22 14:47
(1)第一节阶段的功能
1、硬件设备的初始化
2、加载u-boot第二阶段的代码到我们的RAM空间
3、设置好栈
4、跳转到第二阶段的代码入口
(2)第二阶段的功能
1、初始化本阶段所使用的硬件设备
2、检测系统内存映射
3、将内核Flash读取到RAM中
4、为内核设置启动参数
5、调用我们多的内核
为什么我们的bootloader有一段汇编代码?为什么不用C语言的代码呢?
编译地址和运行地址
(1)编译地址
32位处理器,他的每一条指令是4个字节。他是顺序存储的。我们的编译器,回到我们的每一条指令分配一个编译地址,他由编译器自己指定的。
(2)运行地址
其实就是我们程序真正运行的地址,有用户指定
C语言编译地址:我们都希望把我们的编译地址和运行地址放在一起,但是由于我们的汇编代码不需要做我们C语言到汇编的转变,我们可以认为是直接写地址,我们直接写的就是运行地址。这就是为什么我们Bootloader在运行之前会有汇编代码。
u-boot的执行代码:
1、IROM的代码自动将我们的nand flash的前16k拷贝到我门的SRAM中,这个时候我们的SRAM第一部分就分开执行,先初始化我们的DRAM
2 将nandflash 中所有的bootloadr拷贝到我们的DRAM中
3、跳转到DRAM中开始执行的bootloader中的第二部分代码
ARM异常模式
1、管理模式
复位电平的时候有效,产生复位异常,程序跳转到复位异常执行
2、未定义指令异常
遇到我们不能处理的指令的时候,产生未定义指令异常
3、软中断
执行我们SWI指令的时候,用于用户模式下的程序调用特权操作指令
4、与存取指令
处理器数据方位的地址不存在,或者地址不允许当前用户访问
5、FIQ
6、IRQ
7、特权模式
0 0
- Boatloader的工作流程
- Boatloader简介
- struts的工作流程
- Struts的工作流程
- Struts的工作流程
- Struts 的工作流程
- Struts的工作流程
- Struts的工作流程
- struts的工作流程
- struts的工作流程
- WinRunner的工作流程
- struts的工作流程!
- JSP的工作流程
- struts的工作流程
- Struts的工作流程
- Struts的工作流程
- Struts2的工作流程
- Struts的工作流程
- 如何高效地输出iOS和Android标注和切图
- HBase基本数据操作详解
- 在VS2010 C++中调试DLL工程的方法
- Java的方法的参数传递,值传递和引用传递还有String字符串传递
- 使用Apache FtpServer搭建FTP服务器
- Boatloader的工作流程
- 文件数 ls
- git配置别名
- javascript最烦人的错误TypeError: string is not a function
- Cocos2dx 学习笔记30 Cocos开发中性能优化工具(三):Visual Studio内存泄漏检测工具(Visual Leak Detector)
- 普元nui.encode
- Ceph中Paxos 算法的由来
- 【Android】开机自启动
- java学习笔记-继承与接口