zoukankan      html  css  js  c++  java
  • N3292x IBR介绍

    N3292x IBR介绍

    1 IBR启动流程

    clip_image002

    图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 01 IBR启动模式设置

    IBR使用到的上电设置

    clip_image004

    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 21 IBR 时钟设置

     

    3内存映射

    3.1 SRAM

    clip_image006

    Figure 3-1 SRAM 内存映射

    3.2 DRAM

    IBR启动后,会开始检测DRAM的大小,前4KB是MSC的只读缓存.

    clip_image008

     

    4 RTC初始化流程

     
      clip_image010

     

    5 IBR 启动控制

    5.1 RTC 和系统启动控制

    RTC框图

    clip_image012

    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关系图(不使能延时)

    clip_image014

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

    clip_image016

    ² 该延时只在Powerkey按下和弹起时有效

    ² 延时范围:62~868ms

     

    5.2 IBR启动

    当PWCE由低电平变为高电平时,电源控制部分开始给CPU供电,IBR开始启动,而后IBR会设置PWR_ON位,但IBR不会改变RTC的其他设置。N3292提供如下两种方式来启动IBR。

    Ø 按Powerkey启动

    按下Powerkey时,PWCE置高,IBR启动,设置PWR_ON位,锁定PWCE。

    clip_image018

    Ø Alarm定时启动

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

    clip_image020

    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的大小限制如下表:

    clip_image022

    Boot code header有两种格式:

    Ø 不包含选项标记的boot code

    clip_image024

    Ø 包含选项标记的boot code

    clip_image026

    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来实现

    具体如下加载流程如下图:

    clip_image028

    Boot code加载流程图

     

    7 SD卡启动

    7.1 SD0/1/2启动流程图

    clip_image029

    7.2 SD上电设置

    SD类型

    CHIP_CFG[7]

    SD Card Type

    0

    MMC

    1

    eMMC

     

    8 NAND FLASH启动

    clip_image0308.1 NAND BOOT流程

     

    9 SPI启动

    9.1 SPI启动流程

    clip_image031

     

    10 USB启动

    10.1 USB启动流程

    clip_image032

    10.2 USB boot 设备

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

    clip_image033

    Ø 支持如下表的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

    Ø 命令执行流程

    clip_image035

    Ø Turbowriter 工作流程(两个MSC设备)

    ² 在IBR USB启动下,Turbowriter 工具连接到MSC设备

    ü 这是一个简单的MSC设备,Turbowriter可以连接这个设备,来下载代码(turbowriter固件程序)到DRAM/SRAM

    ü PID 0x0416 & VID 0x9296

    ² Turbowriter工具软件发送把turbowriter固件到相应的地址,然后运行它

    FA92_musb.bin包含下列内容:

    ü 固件标记:0x2054564E

    ü 执行地址:0x000F00000

    ü 固件大小:0xD104

    ü 固件版本:0x13092401

    clip_image036

    ² Turbowriter工具程序连接到第二个MSC设备(turbowriter固件)

    ü 另外一个MSC设备用来对NAND/SD/SPI flash进行编程

    ü PID 0x0416 & VID 0x5593

    参考文献:

    1. 20131022_FA92 IBR Introduction.

    2. FA92 IBR Programming Guide

  • 相关阅读:
    【转帖】android线程知识整理
    Andorid开发笔记
    Flex 4.6 手机项目第一次开发小记
    memory point
    两个sql server 2000的通用分页存储过程
    网页通用视频播放(asp.net2.0原作)
    c#操作XML常用方法
    也说项目开发经验
    SQL Server各种日期计算方法
    Server.Transfer()方法在页间传值
  • 原文地址:https://www.cnblogs.com/chuncky/p/3953786.html
Copyright © 2011-2022 走看看