说明
系统:Android10.0
设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)
前言
本文简单介绍一下RK3399芯片的一些特性,大部分资料内容都来自数据手册和FireFly官网,整理出来让大家快速了解这个芯片
一, 整体框图
RK3399中, 2xA53运行低功耗的任务, 对于需要更多运算能力的应用程序, 就会用到4xA73 CPU,另外加上了双核cotext-m0,通过上图,可以上图可以看到RK3399对于多媒体的功能还是非常强悍的。
二, 内存布局
RK3399支持从内部bootrom启动,支持软件编程remap功能。重映射由 SGRF_PMU_CON0[15] 控制。当 remap 设置为 0 时,0xFFFF0000 地址被映射到 bootrom。当 remapis 设置为 1 时,0xFFFF0000 地址被映射到 INTMEM0。
三, 系统启动
RK3399提供从片外设备启动系统,如serial nand or nor flash、eMMC内存、SD/MMC卡。当这些设备中的启动代码没有准备好时,还可以通过 USB OTG 接口将系统代码下载到各个外设存储中。所有引导代码都将存储在内部 bootrom 中。以下是存储在bootrom中的启动代码的整个启动过程
其中支持以下功能:
- 支持安全启动模式和非安全启动模式
- 支持系统从以下设备启动:
SPI接口
eMMC接口
SD/MMC卡
3, 支持系统代码通过USB OTGF下载
下图显示了RK3399启动程序流程,参考:https://dev.t-firefly.com/thread-12592-1-1.html
RK3399有三种启动模式:
- Normal模式是正常的启动过程,各个组件依次加载,直到正常进入系统。
- Loader模式会让bootloader进入升级状态,等待主机命令,用于固件升级等。Firefly-RK3399要进入Loader模式,需要在bootloader启动时检测到RECOVERY(恢复)键被按下,并且USB处于和PC连接的状态。
- MaskRom模式是设备变砖的最后一条防线,用于bootloader损坏时进行系统修复。一般情况下是不用进入MaskRom模式的,只有在设备进入不了Loader模式(bootloader校验失败,读取不了IDR块,或bootloader损坏)、SD卡启动也失效的情况下,BootRom代码才会进入MaskRom模式。此时BootRom代码等待主机通过USB接口传送bootloader代码,传送完成后进行加载并运行,并进入Loader模式。
以上流程为:
- 上电后, A53核心从0xffff0000这个地址读取第一条指令,这个内部ROM在芯片出货的时候已经由原厂烧写。
- 依次从Nor Flash、Nand Flash、eMMC、SD/MMC中校验ID BLOCK,这个块地址一般是从0x40到0x2000。
如果校验ID BLOCK成功就会读取部分bootloader代码到内部SRAM, 然后bootloader代码对DDR进行初始化、将外部的存储的完整的bootloader,os加载到DDR进行运行;反之就会初始化USB下载口,进入Maskrom模式,等待下载固件到引导媒介。
四,相关论坛学习资料
FireFly RK3399资源共享
Firefly-RK3399 试用体验-MaskRom模式:
【Firefly-RK3399 试用体验】05-MaskRom模式 - Firefly-RK3399 - Firefly开源社区【Firefly-RK3399 试用体验】05-MaskRom模式
RK3399《CPU-Freq开发指南 V1.0.1》
【资源共享】RK3399《CPU-Freq开发指南 V1.0.1》 - Firefly-RK3399 - Firefly开源社区【资源共享】RK3399《CPU-Freq开发指南 V1.0.1》
Rockchip《U-Boot 开发指南 V3.7》
【资源共享】Rockchip《U-Boot 开发指南 V3.7》 - Firefly-RK3399 - Firefly开源社区【资源共享】Rockchip《U-Boot 开发指南 V3.7》
RK3399《Rockchip USB 开发指南 V1.0》
总结
一般了解一个新的芯片, 可以快速的去读取datasheet前面的介绍,可以了解到框图, 内存布局, 中断号,系统启动等相关信息。