博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RT600 ROM Boot流程
阅读量:4310 次
发布时间:2019-06-06

本文共 1627 字,大约阅读时间需要 5 分钟。

目录

Boot mode

  • ROM code boot流程
    • 当ROM运行到bootloader_run()
    • get_boot_mode()根据fuse或者拨码来判定boot mode。
    • go_master_boot()进入master boot后
      • masterboot_init()
        获取boot device以及初始化对应的boot device。
        Fuse boot时,使能recovery boot fuse后SD、EMMC、OSPi支持recovery boot,boot from pin不支持recovery boot。
        SD、EMMC、OSPI、USB-DFU支持fail through boot
      • masterboot_run()
        SD、EMMC、OSPI boot
        根据image header中的信息进行boot
        Serial boot
        1. 如果是UART\I2C\SPI则进入peripheral detect mode,支持get-property\set-property\write-memory指令。write memory只支持写到RAM中。将write-memory后面输入的参数作为boot的信息,然后根据image header进行boot。不支持recovery boot 跟go_fail_through_mode,也就是boot失败的话不会进行recovery boot跟ISP boot
        2. 如果是USB-DFU,则从USB中读取数据进行boot。
      • recovery_boot_run()
        master boot失败后,如果开启了recovery boot fuse,从SPI nor\eeprom boot
      • go_fail_through_mode()
        recovery boot失败后,根据FUSE的值,使用对应的instance进入ISP mode

Master boot

从大的角度讲,master包含两种类型的boot:

  1. Normal boot(OSPI\SD\EMMC)
    • OSPI Nor boot
      支持auto-probe。如果auto-probe打开,ROM自动配置Flash configure block。
      否则ROM会从0x400处获取Flash configure block
    • SD\EMMC boot
    • 如果上述上述boot失败后,有条件地进入Recovery boot,即ROM从SPI Nor\EEPROM boot。
    • Recovery boot失败后进入ISP mode
  2. Serial boot
    • Serial boot支持的设备有,USB-DFU、UART、I2C、SPI
    • Boot device配置为USB-DFU,ROM直接从USB中读取数据进行boot。失败后进入ISP
    • Boot device配置为serial boot,支持UART、I2C、SPI。ROM进入到peripheral detect mode,一旦建立通讯,规则如下:
      • 支持的命令有:
        • Get-Property
        • Set-Property
        • Write-Memory
      • 只能写数据到RAM,ROM根据write-memory后面所跟参数进行boot

ISP mode

  • 进入这个模式后,可以使用blhost对fuse,boot device进行programming的操作。
  • 支持的interface有USB-HID、UART、I2C、SPI
  • 支持IAP - in application programming
    • ROM APIs to program OTP
    • ROM APIs to program Serial Nor Flash
    • ROM APIs to program encrypted image

转载于:https://www.cnblogs.com/richard-xiong/p/9557252.html

你可能感兴趣的文章
Notes on <High Performance MySQL> -- Ch3: Schema Optimization and Indexing
查看>>
C语言之一般树
查看>>
懂了很多大道理,却依旧过不好一生
查看>>
手工数据结构系列-C语言模拟队列 hdu1276
查看>>
【PyQt5 学习记录】008:改变窗口样式之二
查看>>
android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
查看>>
BUAA 111 圆有点挤
查看>>
c++ 继承产生的名字冲突问题 (1)
查看>>
SQL中on条件与where条件的区别
查看>>
Ubuntu下查看软件版本及安装位置
查看>>
安装IIS
查看>>
动态加载JS(转)
查看>>
SWUST OJ(961)
查看>>
js换空格为别的元素
查看>>
Recommendation Systems
查看>>
shell脚本 inotify + rsync 同步脚本
查看>>
maven pom 引入本地jar包
查看>>
QVT之The Relations Language(Part 二)
查看>>
python--dict和set类型--4
查看>>
快速实现Magento多语言的设置和产品数据的多语言方法
查看>>