UBoot讲解和实践-------------讲解(二)
UBoot ARM移植之阶段二 理论篇
stage2:
1.初始化本阶段要使用的硬件设备:
通常包括两方面:
1)初始化至少一个串口,以便和终端用户进行I/O输出信息。
2)初始化计时器等
2.检测系统的内存映射
内存映射就是指在整个4GB物理地址空间中有哪些地址被分配用来寻址系统的RAM单元。必须知道CPU预留的全部RAM地址空间中的哪些被真正映射到RAM地址单元,哪些处于"unused状态。
使用数据结构体memory_area_struct来描述RAM地址空间中的一段连续的地址范围
处有一个可用来检测整个RAM地址空间内存映射情况的简单而有效的算法。(具体研究此算法需要另看别的书)
3.加载内核映像和根文件系统映像
有两个工作要做:
1)规划内存占用的布局。包括两个方面:内核映像所占用的内存范围、根文件系统所占用的内存范围。在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。
2)从flash上复制。由于像ARM这样的嵌入式CPU通常都在统一的内存空间地址中寻址flash等固态存储设备的,因此从flash上读取数据与从RAM单元中读取数据并没有什么不同。用一个简单的循环就可以完成从flash设备上复制映像的工作
while(count)
{
*dest++=*src++;
count -= 4;//arm 是4字节的,由总线决定的。
}
4.设置内核的动参数
即设置linux内核的启动参数。
数据结构tag和tag_header定义在linux内核源码的include/asm/setup.h头文件中。(这里面大有文章)
5.调用内核
Boot Loader调用Linux内核的方法是直接跳转到内核的第一条指令处,跳转需要满足的条件:
1)CPU寄存器的设置:R0=0;
(具体参看内核代码文件:linux/arch/arm/tools/mach --types)
2)CPU模式:必须禁止中断(IRQs和FIQs),同时必须应该是SVC模式(特权模式,可以访问更多的硬件资源)。
3)Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据cache必须关闭。
UBoot讲解和实践-------------讲解(二)的更多相关文章
- UBoot讲解和实践-----------讲解(一)
Boot Loader之ARM Uboot移植 阶段一 理论篇 1.boot loader需要完成的任务: 1>设计程序的入口地址 2&g ...
- Android事件总线分发库EventBus3.0的简单讲解与实践
Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...
- LSTM和双向LSTM讲解及实践
LSTM和双向LSTM讲解及实践 目录 RNN的长期依赖问题LSTM原理讲解双向LSTM原理讲解Keras实现LSTM和双向LSTM 一.RNN的长期依赖问题 在上篇文章中介绍的循环神经网络RNN在训 ...
- 使用Keras进行深度学习:(七)GRU讲解及实践
####欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 介绍 GRU(Gated Recurrent Unit) ...
- 百度APP移动端网络深度优化实践分享(二):网络连接优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...
- webpack实践(二)- webpack配置文件
webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ...
- 第一个月多测师讲解__项目讲解以及注意事项(肖sir)
一.目的讲解流程:(讲述业务时长10-15分钟为宜)1.自我介绍礼貌用语,姓名,籍贯,学校,个人技能,经验,表现,兴趣爱好等 ,1分钟 ,谢谢2.介绍项目的名字 ,项目的背景,(涉及什么架构)3.对项 ...
- [独孤九剑]持续集成实践(二)– MSBuild语法入门
本系列文章包含: [独孤九剑]持续集成实践(一)- 引子 [独孤九剑]持续集成实践(二)– MSBuild语法入门 [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBu ...
- Scrum&Kanban在移动开发团队的实践 (二)
Scrum&Kanban在移动开发团队的实践系列: Scrum&Kanban在移动开发团队的实践 (一) Scrum&Kanban在移动开发团队的实践 (二) 在第一篇分享文章 ...
随机推荐
- 【Go语言】I/O专题
本文目录 1.bytes包:字节切片.Buffer和Reader 1_1.字节切片处理函数 1_1_1.基本处理函数 1_1_2.字节切片比较函数 1_1_3.字节切片前后缀检查函数 1_1_4.字节 ...
- [LintCode] Reverse Integer 翻转整数
Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer). ...
- HTML DOM随笔
编程接口 所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性. 方法是您能够执行的动作(比如添加或修改元素). 属性是您能够获取或设置的值(比如节点的名称或内容). getElemen ...
- wamp下多域名配置
1.找到wamp安装目录的apache安装目录 找到 httpd.conf文件 例如我安装的目录为 E:\wamp\bin\apache\apache2.2.8\conf\httpd.conf 也可以 ...
- input相关问题总结
1. 禁止为所有被激活的输入框添加边框 *:focus {outline: none} 2. 禁止为被激活的输入框添加边框,说明:".abc"为输入框对象自定义添加的class类命 ...
- Lambda表达式公共拼接函数(原创)
#region Lambda公共拼接函数 /// <summary> /// LambdaWhere(枚举) /// </summary> public enum Lambda ...
- openfire配置MSSQL说明(数据库设置)
1.进入“SQL Server 配置管理器(SQL Server Configuration Manager)”,在左边窗口选择“SQL Server 2005网络配置”下面的分支“MSSQLServ ...
- Android课程---Android Studio的一些小技巧
APK瘦身 在Android Studio中我们可以开启混淆,和自动删除没有Resources文件,来达到给APP瘦身的目的,这对于一些维护很久的老项目比较有用,里面有很多无效的Resource, 删 ...
- php课程---文件操作及文件上传的代码总结
php里面文件包含目录和文件两种 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- php课程---简单的分页练习
在写代码时,我们可以用类来使代码更加方便简洁,下面是一个简单的查询分页练习 源代码: <html> <head> <style type="text/css&q ...