说明

系统:Android10.0

设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)

前言

        本文简单介绍一下RK3399芯片的一些特性,大部分资料内容都来自数据手册和FireFly官网,整理出来让大家快速了解这个芯片


一, 整体框图

Android系统10 RK3399 init进程启动(三) 初识RK3399芯片_android

RK3399中, 2xA53运行低功耗的任务, 对于需要更多运算能力的应用程序, 就会用到4xA73 CPU,另外加上了双核cotext-m0,通过上图,可以上图可以看到RK3399对于多媒体的功能还是非常强悍的。

二, 内存布局

Android系统10 RK3399 init进程启动(三) 初识RK3399芯片_RK3399_02

 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中的启动代码的整个启动过程

其中支持以下功能:

  1. 支持安全启动模式和非安全启动模式
  2. 支持系统从以下设备启动:

                 SPI接口

                 eMMC接口

                 SD/MMC卡

       3, 支持系统代码通过USB OTGF下载

下图显示了RK3399启动程序流程,参考:​​https://dev.t-firefly.com/thread-12592-1-1.html​

 Android系统10 RK3399 init进程启动(三) 初识RK3399芯片_android_03

RK3399有三种启动模式:

  1. Normal模式是正常的启动过程,各个组件依次加载,直到正常进入系统。
  2. Loader模式会让bootloader进入升级状态,等待主机命令,用于固件升级等。Firefly-RK3399要进入Loader模式,需要在bootloader启动时检测到RECOVERY(恢复)键被按下,并且USB处于和PC连接的状态。
  3. MaskRom模式是设备变砖的最后一条防线,用于bootloader损坏时进行系统修复。一般情况下是不用进入MaskRom模式的,只有在设备进入不了Loader模式(bootloader校验失败,读取不了IDR块,或bootloader损坏)、SD卡启动也失效的情况下,BootRom代码才会进入MaskRom模式。此时BootRom代码等待主机通过USB接口传送bootloader代码,传送完成后进行加载并运行,并进入Loader模式。

以上流程为: 

  1. 上电后, A53核心从0xffff0000这个地址读取第一条指令,这个内部ROM在芯片出货的时候已经由原厂烧写。
  2. 依次从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开源社区资源分享​

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》

​【资源共享】RK3399《Rockchip USB 开发指南 V1.0》 - Firefly-RK3399 - Firefly开源社区【资源共享】RK3399《Rockchip USB 开发指南 V1.0》​

 总结

 一般了解一个新的芯片, 可以快速的去读取datasheet前面的介绍,可以了解到框图, 内存布局, 中断号,系统启动等相关信息。