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在移动开发团队的实践 (二) 在第一篇分享文章 ...
随机推荐
- 六、雪花《苹果iOS实例编程入门教程》
该app为应用的功能为制作一场雪景 现版本 SDK 8.4 Xcode 纲要:- UIImageView 的运用- onTimer 代码运用- onAnimation 代码运用 运行Xcode 选择 ...
- php关于金额比较引发的问题(转)
做电子商务的时候一般会涉及到金额的比较,按正常的思路来看用><=这些个符号就可以了.可是要是到程序上来搞这个的话就出大事了.现在看下这段代码: $f = 0.07; var_dump($f ...
- 注解@PostConstruct与@PreDestroy讲解及实例
从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion):@PostConstruct和@PreDestroy.这两个注解被用来修饰一个非静态的vo ...
- java 深入浅出工厂模式
一.引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“ ...
- Odoo 9 Odoo $ JQuery undifned
浏览器处于假死状态,查看console发现 odoo,jquery,$ 未定义三处错误,后台显示IOError: IOError: [Errno 2] No such file or director ...
- 读《深入php面向对象、模式与实践》有感(三)
命令模式: 第一次接触到这个命令模式的时候,感觉它很像一个简化的mvc框架.从不同的路径访问,再由控制器来判断所要调用的具体php文件. <?php class CommandContext{ ...
- 使用Fiddler截断更改Request数据
0x01 Fiddler介绍 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据.(百度百科) 0x ...
- Python 脚本 监控数据库状态
打算用这个脚本通过zabbix 监控Mariadb的,无奈要等Mariadb完全上线才行,所以先写一个粗略大致功能的版本. #coding:utf-8 #author:shiyiwen #versio ...
- PowerDesigner 15.2入门学习 一
好久没有搞 PowerDesigner 然后记录一下 1.下载地址 http://download.sybase.com/eval/PowerDesigner/PowerDesigner152_Eva ...
- java中hashCode方法与equals方法的用法总结
首先,想要明白hashCode的作用,必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重 ...