首页 > 代码库 > N3292x IBR介绍
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,来控制整个系统的供电。
2 在PowerKey键按下状态下,将该为置1,PWCE将锁定输出高电平,而后PowerKey放开后,PWCE将保持为高电平,系统上电
2 在PowerKey键弹起状态下,将该为置0,PWCE将变为低电平,系统断电,用来实现软件关机
2 当设置HW_PCLR_EN位时,PowerKey 键按下时间超过PCLR_TIME设定的时间后,硬件会自动清除该位,PWCE变为低电平,实现硬件关机
? Delay Power Control Signal (POWER_KEY_DURATION)
PowerKey与PWCE之间的延迟时间
2 最小延时时间=0.25*(POWER_KEY_DURATION+1) sec
2 PowerKey与PWCE关系图(不使能延时)
2 PowerKey与PWCE关系图(使能延时)
2 该延时只在Powerkey按下和弹起时有效
2 延时范围: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 表头
读取数据的大小:
2 SD : one sector (512 Bytes)
2 SPI: 512 Bytes
2 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则探测下一个启动设备。
2 把执行地址存储到SRAM,地址:0xFF009FFC
2 如果有选项标记,做选项设置
? 读取剩余的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设备)
2 在IBR USB启动下,Turbowriter 工具连接到MSC设备
ü 这是一个简单的MSC设备,Turbowriter可以连接这个设备,来下载代码(turbowriter固件程序)到DRAM/SRAM
ü PID 0x0416 & VID 0x9296
2 Turbowriter工具软件发送把turbowriter固件到相应的地址,然后运行它
FA92_musb.bin包含下列内容:
ü 固件标记:0x2054564E
ü 执行地址:0x000F00000
ü 固件大小:0xD104
ü 固件版本:0x13092401
2 Turbowriter工具程序连接到第二个MSC设备(turbowriter固件)
ü 另外一个MSC设备用来对NAND/SD/SPI flash进行编程
ü PID 0x0416 & VID 0x5593
参考文献:
1. 20131022_FA92 IBR Introduction.
2. FA92 IBR Programming Guide
N3292x IBR介绍