本文主要是介绍[RK-Linux] RK3399启动流程详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、SoC启动流程
1.1 BootROM介绍
在嵌入式系统中,SoC(System on Chip)制造商通常会在芯片内部集成一段固化的启动代码,这段代码被称为BootROM,它负责系统的最初级启动程序。
1.1.1 初始化硬件
当SoC上电时,首先由BootROM接管系统,其首要任务是初始化硬件环境。这包括配置CPU、关闭看门狗定时器、初始化系统时钟以及初始化必要的外设,如USB控制器、MMC控制器、NAND控制器等。
1.1.2 加载程序到SRAM
在新的SoC应用中,硬件设计者会根据SoC的特性设计电路原理图,并选择合适的存储设备(如eMMC、NAND、Nor、SDCard等)和内存(如SDRAM、DDR等)进行外挂。随后,硬件制作完成后,需要将可执行的二进制文件烧写到这些外部存储设备上。
系统上电启动时,BootROM除了负责初始化硬件外,还需从外部存储器中读取后续可执行程序到内部内存中执行。由于SoC制造商无法预知用户使用的具体DDR类型,因此BootROM通常会先将程序加载到内部的一个小容量SRAM中执行,而不是直接加载到DDR。
为了确定从哪个外部存储器加载程序,SoC通常会设计一组Bootstrap Pin。上电时,BootROM通过检测这些引脚的电平状态来确定启动方式,如从eMMC、SDCard或NAND Flash启动等。这些引脚的状态通常由板载的拨码开关设置。
在读取烧写的二进制文件时,需要注意文件系统的组织方式。SoC的BootROM会按照特定的文件系统格式读取数据,
这篇关于[RK-Linux] RK3399启动流程详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!