1、iROM(BL0):是指Exynos4412的iROM中固化的启动代码,其作用是初始化系统时钟,设置看门狗,初始化堆和栈,加载8kb的bl1到Exynos4412的一个64kb大小内部sram(Internal SRAM)中运行,它在内部ROM上执行。
2、Firstboot loader(BL1):是批在iRAM自动从外扩存储器(nand/sd/usb)中拷贝的uboot.bin二进制文件的头最大16K代码,其作用:初始化RAM,关闭Cache,设置栈,加载BL2。这一段代码Samsung可能会给提供。
3、Secondboot loader(BL2):是指在代码重定向后在内存中执行的uboot的完整代码,作用:初始化其它外设,加载OS内核,所以这一段代码是和特定的平台相关联的,我们主要会修改的也是这段代码

三者的关系:(iROM固化代码)BL0 将NAND BL1(bootloader的前16K)加载到iRAM的0x02020000地址处;BL1然后在iRAM 中运行将BL2(整个bootloder)加载到SDRAM(DDR);BL2 加载内核 ;

 iROM is placed in internal 64 KB ROM. It initializes basic system functions such as clock and stack.
 iROM loads BL1 image from a specific booting device to internal 256 KB SRAM. The booting device is
selected by Operating Mode (OM) pins. According to the secure boot key values, iROM may do an integrity
check on BL1 image.
 BL1 initializes system clock, and DRAM controller. After initializing DRAM controller, it loads OS image from
the booting device to DRAM. According to the secure boot key values, BL1 can do an integrity check on the
OS image.
 After the booting completes, BL1 jumps to the operating system

1、    iROM是存储在内部的64KROM中的,他主要进行CPU的时钟,堆栈等基本初始化工作。
2、    iROM从启动外设加载BL1到内部256KB的SRAM中,启动外设是由OM来决定的,根据安全启动设置值,iROM可能会较验BL1镜像文件。
3、    BL1初始化内部系统时钟和DRAM控制器,在初始化完成DRAM控制器,开始加载OS镜像文件,根据安全启动设置值,BL1可能会较验OS镜像文件。
4、    等待启动完成后,BL1就跳转到操作系统进行执行
---------------------

三部分代码在SD卡的位置如下:

从图中可以看出,BL1.bin烧写到SD卡扇区1,BL2.bin烧写到sd卡的扇区17,main.bin烧写到sd卡的扇区49处。

整个程序的运行过程大致如下:系统上电后,首先将sd卡扇区1处的bl1拷贝到IRAM的0x02020000地址处,然后运行该部分代码,该部分代码首先又会加载BL2.bin,BL2.bin会进行时钟和DRAM初始化,然后把位于sd卡中扇区49处的main.bin拷贝到DRAM的0x43E00000地址处,最后跳转到该地址处继续运行。

详细的启动过程:

————————————————————————————————————————————————

boot+loader

boot 的目的

跳到C语言中:

关闭看门狗,中断,MMU,CACHE

配置系统时钟

配置SDRAM 的控制器(行地址数、列地址数、多少块、周期性的充电)

让SP指向可读可写的设备区间,满足递减栈的规则

  --用哪些模式,就初始化哪些模式的SP

  --每个模式值不能覆盖其他模式

代码搬移

  执行速度问题,把程序从存储器(nor-flash) 搬移到快速的内存

  只把存储器的一部分代码执行出来,把存储在其他位置上的代码搬移到内存,对应存储器的控制器的初始化

bl  main

loader的目的:

执行应用逻辑、点灯、uart、load linux kemel

——————————————————————————————————————————————————————————————

tiny4412 启动方式的更多相关文章

  1. Redis的三种启动方式

    转载:http://www.tuicool.com/articles/aQbQ3u Part I. 直接启动 下载 官网下载 安装 tar zxvf redis-2.8.9.tar.gz cd red ...

  2. spring有三种启动方式

    spring有三种启动方式,使用ContextLoaderServlet,ContextLoaderListener和ContextLoaderPlugIn spring3.0及以后版本中已经删除Co ...

  3. android service两种启动方式

    android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...

  4. Redis的三种启动方式【转】

    Part I. 直接启动 下载 官网下载 安装 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 编译 make #可使用root用户执行`make ...

  5. android activity的启动方式

    1.Standard正常启动,默认的启动方式,没什么说头 2.SingleTop 意思就是在栈顶只能存在一个相同的activity 不能叠加,如果再A上继续启动A的话,只会调用A的onNewInten ...

  6. android服务之启动方式

    服务有两种启动方式 通过startService方法来启动 通过bindService来开启服务 布局文件 在布局文件中我们定义了四个按键来测试这两种方式来开启服务的不同 <?xml versi ...

  7. Android service介绍和启动方式

    1.Android service的作用: service通常是用来处理一些耗时操作,或后台执行不提供用户交互界面的操作,例如:下载.播放音乐. 2.Android service的生命周期: ser ...

  8. 第一章 Mybtais的两种启动方式

    Mybatis的两种启动方式如下: 1.xml实现: xml的实现方式中,主要是通过手动创建SqlSession,然后调用session.selectOne()方法实现来实现. 首先是创建Config ...

  9. mysql 4种启动方式

    mysql 4种启动方式 都是去调用mysqld文件 1. mysqld 启动 进入mysqld文件所在目录(/../libexec/mysqld) ./mysqld --defaults-file= ...

随机推荐

  1. 使用Node.JS监听文件夹变化

    使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应 ...

  2. 软件工程github使用小结

    1.在 https://github.com/join 这个网址处申请注册一个Github账号,申请成功后可在https://github.com/login 处利用刚刚注册的账号进行登录,才能开始在 ...

  3. [PHP]防止表单重复提交的几种方法

    --------------------------------------------------------------------------------------------------- ...

  4. Android Uri获取真实路径以及文件名的方法【转】

    原文地址:https://blog.csdn.net/MikoGodZd/article/details/50979653 在Android 编程中经常会用到uri转化为文件路径 下面是4.4后通过U ...

  5. monkey压力测试

    压力测试: monkey -p com.qihu360.mobilesafe -v -p 后面跟包名 : -v 后面跟次数: 通过观察log日志,查看应用中出现的问题. =============== ...

  6. 前后台联调,突然所有的接口请求状态为200,但response什么都没有只有一句灰色的英文

    问题解决了,图就下次遇到截图补上: 解决问题的方法,是让后台查看数据库是否锁库,或者更改什么配置文件例如.xml文件,还有就是ip错误:

  7. Delphi编写Shell扩展

    用delphi创建一个外壳扩展(Shell Extension)程序的基本步骤如下: (1) 创建一个 ActiveX Library 工程,命名为“CloudUpload“(2) 创建一个新的自动化 ...

  8. 逻辑回归 logit

    [方法转]http://www.powerxing.com/logistic-regression-in-python/ http://blog.csdn.net/lipengcn/article/d ...

  9. laravel 命令行创建controller 创建数据库表迁移 创建module

    1.php artisan 查看命令列表 2.php artisan make:controller ArticleController 命令 创建控制器 3.创建数据库迁移表 创建文章表 php a ...

  10. SSH 登录时出现如下错误:Disconnected:No supported authentication methods available

    SSH 登录时出现如下错误:Disconnected:No supported authentication methods available 更新时间:2017-06-07 13:26:11   ...