N3292x IBR介绍
N3292x IBR介绍
1 IBR启动流程

图1-1 IBR启动流程
|
CHIP_CFG[0] |
Mode |
|
0 |
Boot from IBR Recovery Mode with crystal input is 12MHz. |
|
1 |
Boot From IBR Normal Mode with crystal input is 12MHz. |
Table 0‑1 IBR启动模式设置
IBR使用到的上电设置

2 时钟设置
|
Clock Source |
Divider |
Clock |
|
|
MPLL |
216MHz |
||
|
UPLL |
162MHz |
||
|
DRAM Clock |
MPLL |
2 (Fixed) |
108MHz |
|
System Clock |
UPLL |
1 |
162MHz |
|
CPU |
System Clock |
1 |
162MHz |
|
HCLK |
System Clock |
2 (Fixed) |
81MHz |
|
HCLK1 |
CPU Clock |
2 |
81MHz |
|
HCLK234 |
System Clock/2 |
1 |
81MHz |
|
APB |
HCLK1 |
2 |
40.5MHz |
|
NAND |
HCLK234 |
N/A |
81MHz |
|
SD |
MPLL/8 |
180/2 |
150KHz/13.5MHz |
|
SPI |
APB |
4 |
10.125MHz |
|
USB |
XIN |
1 |
12MHz |
|
UART |
XIN |
1 |
12MHz |
Table 2‑1 IBR 时钟设置
3内存映射
3.1 SRAM

Figure 3-1 SRAM 内存映射
3.2 DRAM
IBR启动后,会开始检测DRAM的大小,前4KB是MSC的只读缓存.

4 RTC初始化流程
![]() |
5 IBR 启动控制
5.1 RTC 和系统启动控制
RTC框图

Note:
1. WAKEUPN=RTC_RWAKE_ 本文称之为Power Key (PWRKEY)
2. PWRSWN= RTC_RPWR 本文称之为Power Control Signal(PWCE)
Ø Power Key (PWRKEY)
用户用来控制除RTC电源以外系统电源的开关。
Ø Power Control Signal(PWCE)
RTC的输出信号,它用来控制其他部分电源的开关。
Ø Power on(PWR_ON)
RTC Power Time out Register(PWRON)的bit0,该位通过控制PWCE,来控制整个系统的供电。
² 在PowerKey键按下状态下,将该为置1,PWCE将锁定输出高电平,而后PowerKey放开后,PWCE将保持为高电平,系统上电
² 在PowerKey键弹起状态下,将该为置0,PWCE将变为低电平,系统断电,用来实现软件关机
² 当设置HW_PCLR_EN位时,PowerKey 键按下时间超过PCLR_TIME设定的时间后,硬件会自动清除该位,PWCE变为低电平,实现硬件关机
Ø Delay Power Control Signal (POWER_KEY_DURATION)
PowerKey与PWCE之间的延迟时间
² 最小延时时间=0.25*(POWER_KEY_DURATION+1) sec
² PowerKey与PWCE关系图(不使能延时)

² PowerKey与PWCE关系图(使能延时)

² 该延时只在Powerkey按下和弹起时有效
² 延时范围:62~868ms
5.2 IBR启动
当PWCE由低电平变为高电平时,电源控制部分开始给CPU供电,IBR开始启动,而后IBR会设置PWR_ON位,但IBR不会改变RTC的其他设置。N3292提供如下两种方式来启动IBR。
Ø 按Powerkey启动
按下Powerkey时,PWCE置高,IBR启动,设置PWR_ON位,锁定PWCE。

Ø Alarm定时启动
在Power down模式下,发生 RTC alarm后,RTC通过保持alarm_hold信号而使PWCE为高,系统上电,IBR启动并设置PWR_ON位,锁定PWCE,保持整个系统上电。

5.3 IBR对启动的识别
Ø IBR启动源
因为在power-down模式下不能保持RTC中断的状态,所以不能通过中断状态标志来判断启动源。而是通过比较RTC alarm的时间与IBR的当前时间的异同来判断启动源,具体如下表:
|
Power Key Status |
Time Match |
Power on Source |
|
Pressed |
No |
Power Key |
|
Pressed |
Yes |
Power Key and RTC Alarm |
|
Released |
No |
Reset Key/WDT Reset/Power on Exception |
|
Released |
Yes |
RTC Alarm |
注意:WDT复位标志(WTRF)可以用来判别按键复位和WDT复位
Ø 上电异常
当电池拔掉后,不久又放回时,在没有按下powerkey或RTC alarm的情况下,N3292也会自动上电,这称为上电异常。上电异常情况下需要让N3292进入关机状态。这个状态通常是通过向DRAM或SRAM中写一个特别的关键字来判别的,具体如下:
|
Specific Key word |
Power on source |
Software action |
|
|
Hardware or Software Power Off |
Unknown value |
Power Key or RTC Alarm |
Keep Power On |
|
Reset/WDT |
Not Changed |
N/A |
Keep Power On |
|
Power on Exception |
Unknown value |
N/A |
Power off |
6 boot code镜像
6.1 boot code介绍
IBR是通过boot code header来识别boot code信息的。Boot code header包含boot code标记、执行地址、文件大小等信息。
IBR对boot code的大小限制如下表:

Boot code header有两种格式:
Ø 不包含选项标记的boot code

Ø 包含选项标记的boot code

6.2 boot code加载流程
Boot code的加载流程如下:
Ø First read 操作:读取一定大小的数据到SRAM->获取boot code 表头
读取数据的大小:
² SD : one sector (512 Bytes)
² SPI: 512 Bytes
² NAND
512 page: à 512 Bytes
2K page à 2KB
4K page à 2KB
8K page à 2KB
Ø 解析boot code header
通过boot code标记来判断读到的数据是否是boot code,如果是boot code,就解析boot code header 并做如下操作。如果不是boot code则探测下一个启动设备。
² 把执行地址存储到SRAM,地址:0xFF009FFC
² 如果有选项标记,做选项设置
Ø 读取剩余的boot code到SDRAM
Ø 跳转到boot code执行地址,执行boot code
通过设置Program counter来实现
具体如下加载流程如下图:

Boot code加载流程图
7 SD卡启动
7.1 SD0/1/2启动流程图

7.2 SD上电设置
SD类型
|
CHIP_CFG[7] |
SD Card Type |
|
0 |
MMC |
|
1 |
eMMC |
8 NAND FLASH启动
8.1 NAND BOOT流程
9 SPI启动
9.1 SPI启动流程

10 USB启动
10.1 USB启动流程

10.2 USB boot 设备
Ø USB启动时,将作为一个Mass Storage 设备

Ø 支持如下表的Vendor命令来从USB 主机下载程序
|
Operation code |
Vendor code |
Description |
|
|
OPEN |
0x06 |
0x51 |
Open USB function for USB booting |
|
SET_REG_ADDRESS |
0x52 |
Set Address want to write |
|
|
SET_REG_VALUE |
0x53 |
Set Value want to write |
|
|
SET_ADDRESS |
0x55 |
Set Read/Write address |
|
|
READ |
0x71 |
Set Reading Data Size |
|
|
WRITE |
0x72 |
Set Writing Data Size |
|
|
EXECUTE |
0x60 |
Execute the code |
Ø 命令执行流程

Ø Turbowriter 工作流程(两个MSC设备)
² 在IBR USB启动下,Turbowriter 工具连接到MSC设备
ü 这是一个简单的MSC设备,Turbowriter可以连接这个设备,来下载代码(turbowriter固件程序)到DRAM/SRAM
ü PID 0x0416 & VID 0x9296
² Turbowriter工具软件发送把turbowriter固件到相应的地址,然后运行它
FA92_musb.bin包含下列内容:
ü 固件标记:0x2054564E
ü 执行地址:0x000F00000
ü 固件大小:0xD104
ü 固件版本:0x13092401

² Turbowriter工具程序连接到第二个MSC设备(turbowriter固件)
ü 另外一个MSC设备用来对NAND/SD/SPI flash进行编程
ü PID 0x0416 & VID 0x5593
参考文献:
1. 20131022_FA92 IBR Introduction.
2. FA92 IBR Programming Guide
N3292x IBR介绍的更多相关文章
- paper 99:CV界的明星人物经典介绍
CV人物1:Jianbo Shi史建波毕业于UC Berkeley,导师是Jitendra Malik.其最有影响力的研究成果:图像分割.其于2000年在PAMI上多人合作发表”Nor ...
- N3292系列资料之RTC介绍
N3292系列资料之RTC介绍 1 RTC特性 Ø 拥有时间计数器(秒,分,时)和日历计数器,用来计算时间 Ø 绝对定时功能(秒,分,时,日,月,年) Ø 相对定时功能 Ø 支持12小时/24小时模式 ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML 事件(一) 事件的介绍
本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...
随机推荐
- 【video】m3u8
Safari浏览器识别不了.UC浏览器可以识别. 优酷的Safari浏览器和UC浏览器都可以识别.
- 我的学习笔记之node----node.js+socket.io实时聊天(1) (谨此纪念博客开篇)
本想着从hello word开篇,也确实写了相关学习笔记.各种原因吧,现在又着急写出作品,便作罢. 这里将记录一个node.js+socket.io的实时聊天程序.(当然我也是跟着网上各种教程资料学习 ...
- 算法对比:Prim算法与Dijskra算法
在图论中,求MST的Prim算法和求最短路的Dijskra算法非常像.可是我一直都对这两个算法处于要懂不懂的状态,现在,就来总结一下这两个算法. 最小生成树(MST)—Prim算法: 算法步骤: •将 ...
- jeecms v7
http://bbs.jeecms.com/res_base/jeecms_com_bbs/upload/2015_11/jeecmsv7.zip 安装包 http://bbs.jeecms.com/ ...
- phoneGap 中修改生成APP的名字
最近忙着研究移动开发的事情,去学习了一下移动开发的东西,例如eclipse和phoneGap进行配合使用,感觉还是不错的,先针对eclipse和phoneGa的平台搭建这里先不在详细说啦,主要还是我们 ...
- Qt深入:不能不知道的Type、Attribute和Flags
Qter高手与新手的区别在于:知道还是不知道 Qt不是开发语言,所以无所谓谁厉害.但使用他的Qter却有着差异,也许是面向对象语言本身的.或者实际经验上的.而对于Qt本身来说,高手与新手最显著的差异在 ...
- Java 7之多线程- Semaphore--转载
Semaphore用于保存当前可用许可的数量.是通过共享锁实现的.根据共享锁的获取原则,Semaphore分为"公平信号量"和"非公平信号量". "公 ...
- When does layoutSubviews get called?
转自:http://blog.logichigh.com/2011/03/16/when-does-layoutsubviews-get-called/ It’s important to optim ...
- Hibernate实体对象三种状态
Hibernate实体对象生命周期: 1. 自由状态(Transient,临时状态,瞬态) 在内存中自由存在,与数据库无关,未被Hibernate的Session管理 2. 持久状态(Persiste ...
- [转]Vim 复制粘帖格式错乱问题的解决办法
有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题.看样子,应该是自动缩进惹得祸.本文不去深究原因,直接给出解决方法. 1. paste 模式 运行如下命令,进入 paste 模式: :s ...
