相关链接:

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启动模式的更多相关文章

  1. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  2. Android Activity的4种启动模式详解(示例)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个A ...

  3. Centos7更改默认启动模式(转载)

    今天心血来潮安装一个centos7的图形界面,但发现用之前的方式无法修改默认启动为命令行模式. 之前的方法:修改/etc/inittab文件中的           id:3:initdefault ...

  4. Android进阶--Acticivity的启动模式

    一.引言 我们在多次启动同一个Activity时,系统默认会重复创建多个实例,这样看上去便十分的愚蠢,所以android在设计时提供了启动模式来修改系统的默认行为.目前有四种启动模式:standard ...

  5. android 启动模式介绍

    Android启动模式 (1)Task:与Android系统是个多任务的系统中的任务是不同的.后者更倾向于多进程和多线程来说的,而这里的任务与application(应用程序)和activity(活动 ...

  6. activity的启动模式

    有四种启动模式:standard.singleTop.singleTask.singleInstance. 可在AndroidManifest.xml设置android:launchMode属性,如: ...

  7. Android启动模式

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  8. Activity四种启动模式

    转载博客:http://blog.csdn.net/shinay/article/details/7898492 Activity启动方式有四种,分别是:standardsingleTopsingle ...

  9. Activity的四种启动模式

    Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. ...

随机推荐

  1. doctype的种类

    现实生活中人们使用的浏览器是各式各样的!为了防止各各浏览器页面设置不一样而照成我们所做的网页乱序,不得不设置doctye(文档类型):doctype有3中类型:* 过渡的(Transitional): ...

  2. hibernate导入大量数据时,为了避免内存中产生大量对象,在编码时注意什么,如何去除?

    Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( i ...

  3. 静态的html页面想要设置使用浏览器缓存

    设置html页面缓存方法: 静态的html页面想要设置使用缓存: 通过HTTP的META设置expires和cache-control code 1.  <meta http-equiv=&qu ...

  4. undefined local variable or method ‘xxx’ for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xbc88d6c>错误解决方案

    官方文档如下: https://github.com/rspec/rspec-rails/blob/master/Capybara.md Capybara 2.0 To use Capybara 2. ...

  5. Node.js之【express 安装问题】

    经常在全局安装express后,在cmd里面会找不到express命令, 本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件. 1.先全局安装expre ...

  6. android 软件开机自启动

    安卓的很多功能实现方式都是“Don't call me, I'll call you back!”,开机启动就是其中之一 步骤: 1.首先建立一个BroadcastReceiver, 2.在他的onR ...

  7. TDBAdvGrid 只读状态下复制功能

    DataSource1.AutoEdit := false;

  8. Catalyst揭秘 Day7 SQL转为RDD的具体实现

    Catalyst揭秘 Day7 SQL转为RDD的具体实现 从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多.Catalyst就是个高层的智慧. Catalyst已经逐 ...

  9. Palindromic Number (还是大数)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  10. showModalDialog 超过问题

    a.aspx页面打开一个弹出模式对话框b.aspx. a.aspx 页面页面代码: function SetPlay() { window.showModalDialog('SetAdvertisin ...