IMX51启动模式
相关链接:
http://blog.csdn.net/kickxxx/article/details/7236040
http://blog.csdn.net/evilcode/article/details/6079767
IM51有4种启动模式,通过GPIO管脚BOOT_MODE[1:0]来选择。在系统重启时,所有的启动引脚被采样并存储到SBMR(System reset controller Boot Mode Register,系统复位控制器启动模式寄存器)。连接BOOT_MODE到地对应逻辑0,对于逻辑1,飞思卡尔推荐连接到NVCC_PER3(为什么推荐此电平,是为了最大可能的避免启动时启动引脚电平处于unknown状态导致启动异常吗?)。
这4中启动模式分别是Internal BOOT、reserved、Internal BOOT-ROM Select和Serial Downloader,它们对应于BMOD[1:0](SMBR寄存器的14和15位)的值如下:
图1
其中BMOD[1:0]=01是飞思卡尔预留用来作为内部测试使用的。
1. Internal Boot(BMODE = 00)
在此模式下设备上电时,处理器从Internal ROM(IMX51内部的ROM大小为36KB)启动,内部启动代码执行HW初始化,通过使用HAB库校验application image的有效性和跳转到application image(这里指uboot或是xldr)的地址并接着执行。如果在内部ROM执行过程出错,启动代码将跳转到serial downloader模式。
当设置为BMODE = 00模式,将由eFUSE设置或使用GPIO覆盖的fuse设置来控制启动流程,这两种选择是通过GPIO引导选择熔丝(GPIO_BT_SEL)来控制的:
⑴如果GPIO_BT_SEL(=1)熔丝被熔断(被烧录过),所有的启动选项由eFUSEs来控制。内部的启动代码可以从SBMR中读取BMOD[1:0]的值,或是直接通过IIM(IC Identification Module,IC识别模块)模块读取eFUSEs。
⑵如果GPIO_BT_SEL(=0)熔丝是完整的(没有被动过),启动选项由SBMR的设置来决定。此模式下一些熔丝选型可能被覆盖,具体哪些熔丝可以被覆盖,这是由GPIO那一列中写明了YES来决定的,比如:
图2
在此模式下之能通过SBMR来读取启动选项的值,比如图2的BT_MEM_CTL[1:0](也对应SBMR[1:0]),至于eFUSE中哪些驱动选项的值可以由哪些对应的GPIO口来覆盖的,见图3:
图3
由图3可知,DISP1_DAT[14:13](GPIO)的值会覆盖BT_MEM_CTL[1:0]的值,也就是说BT_MEM_CTL[1:0]的值由DISP1_DAT[14:13]来决定,由此可见此模式下这些GPIO的设计非常重要,否则很有可能导致启动无法正常启动。
2. Internal Boot-ROM Select(BMODE= 10)
BMODE = 10模式相当于BMODE = 00模式,差别在于BMODE= 10模式忽略GPIO的启动覆盖,也不管BT_GPIO_SEL的设置。此模式只使用eFUSE的设置来启动,这样可允许用户在最终的产品上(完成开发,交付给客户的产品)熔断熔丝。没有了外部的BOOT_MODE引脚,没启动GPIO上拉和下拉,这样就不会出现在设备启动时,由于启动引脚(比如图3左边的GPIO)的不确定值导致了调用Serial Downloader。
此模式下,启动流程发现如果BT_BLANK=0没有被烧录过(ROM没有被烧录过),启动流程被重新定向并跳转到Serial Downloader。如果BT_BLANK=1被烧写过,则是正常的启动流程,并且使用eFUSE来启动。
当板子第一次使用时,如果没有熔丝被熔断,连接到启动GPIO引脚上的pad可能产生一些值,这可能被ROM code错误使用而导致启动流程从不存在的设备上启动。这可能产生电气/逻辑上的破坏,但此模式解决了这个问题。
3. Serial Downloader(BMODE = 11)
当外部Flash设备没有程序,或是在启动过程中遇到错误,或是遇到下面的一些情况,启动留出都会跳转到Serial Downloader:
⑴BMOD[1:0] = 11 (serial downloader mode)
⑵BMOD[1:0] = 10和eFUSE的BT_BLANK=0
⑶BMOD[1:0] = 10但熔丝没有被正确设置。
⑷BMOD[1:0] = 00或10,且没有有效的镜像文件在Flash中。
⑸ Security hardware failure
⑹运行时产生异常
⑺ Error returned by the HAB functions while in productionmode. Errors are ignored in engineering
mode)
为了检测有效的串行端口(UART或USB),处理器的ROM程序定期间隔32s轮询UART和USB状态寄存器。如果在预定的轮询时间内没有发现有效的端口,ROM程序就通过看门狗对处理器断电。当serial downloader有效,看门狗定时服务,如果serial host和IM51之间的通讯在32s之外没有反应或是处理器进入死循环,看门狗就timeout并对设备下电。
IMX51启动模式的更多相关文章
- Android中Activity的四大启动模式实验简述
作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...
- Android Activity的4种启动模式详解(示例)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个A ...
- Centos7更改默认启动模式(转载)
今天心血来潮安装一个centos7的图形界面,但发现用之前的方式无法修改默认启动为命令行模式. 之前的方法:修改/etc/inittab文件中的 id:3:initdefault ...
- Android进阶--Acticivity的启动模式
一.引言 我们在多次启动同一个Activity时,系统默认会重复创建多个实例,这样看上去便十分的愚蠢,所以android在设计时提供了启动模式来修改系统的默认行为.目前有四种启动模式:standard ...
- android 启动模式介绍
Android启动模式 (1)Task:与Android系统是个多任务的系统中的任务是不同的.后者更倾向于多进程和多线程来说的,而这里的任务与application(应用程序)和activity(活动 ...
- activity的启动模式
有四种启动模式:standard.singleTop.singleTask.singleInstance. 可在AndroidManifest.xml设置android:launchMode属性,如: ...
- Android启动模式
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Activity四种启动模式
转载博客:http://blog.csdn.net/shinay/article/details/7898492 Activity启动方式有四种,分别是:standardsingleTopsingle ...
- Activity的四种启动模式
Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. ...
随机推荐
- C# 实现HTML5服务器推送事件
为什么需要服务器推送事件: 因为如果需要保持前台数据的实时更新例如,IM聊天,股票信息, 1.可以在客户端不断地调用服务端的方法来获得新数据,但是这样会很消耗服务器资源,导致系统变慢! 2 html5 ...
- mvc的删除
有UserInfo一个实体类,db代表请求上下文 属性有ID,UserName,UserPass,Email var users=from c in db.UserInfo select c; var ...
- input获取永久焦点
$(function () { $('#test').blur(function () { var that = this; //或者用闭包 setTimeout(function () { $(th ...
- Get vertical scrollbar width and example
$.scrollbarWidth = function () { var parent, child, width; if (width === undefined) { parent = $('&l ...
- NoSQL专家王涛访谈:为什么我们还要做一个NoSQL?
ChinaUnix:各位网友大家好,今天有幸请到王涛先生到CU做客,与大家交流一些工作经验.首先请王涛先介绍一下自己. 王涛:大家好,我是王涛.过去八年里我一直在IBM多伦多实验室从事DB2引擎研发的 ...
- phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法
最近在phpcmsV9里用表单向导弄个的提交表单,但用了日期和时间类型时,用 <script language='javascript' src='{APP_PATH}index.php?m ...
- DataSnap Demo:TFDConnection、最大连接数、客户端回叫功能、多线程模拟、压力测试等
一.限制最大连接数,并验证来访者用户身份: procedure TServerContainer1.DSServer1Connect( DSConnectEventObject: TDSConnect ...
- windows 与fedora时间差
windows 默认BIOS时间当前时间UTC+时区, 按北京时间时区,就是要加8个小时. Linux默认BIOS时间是UTC时间,所以同一机子上装WINDOWS与LINUX时间上会差8个小时.这问题 ...
- MySQL 5.1.63 单机配置多实例(简单配置)
需求: 在一台服务器上通过源码编译安装一个版本为5.1.63版本MySQL数据库: 方案:将所有配置文件与数据等均存放在/home/zhaoshuangshuang下.在同一个MySQL中运行两个实例 ...
- 【学习总结】【多线程】 多线程概要 & GDC & NSOperation
基本需要知道的 : 进程 : 简单点来说就是,操作系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在受保护的内存空间内 线程 : 一个进程(进程)想执行任务,必须有线程(所以, ...