system boot
先来看一下RK3399启动流程图
从图中可以得到以下几个结论:
1.RK3399上电后,会从0xffff0000
获取romcode
并运行;
2.然后依次从Nor Flash、Nand Flash、eMMC、SD/MMC获取ID BLOCK
,ID BLOCK
正确则启动,都不正确则从USB端口下载;
3.如果emmc启动,则先读取SDRAM(DDR)初始化代码到内部SRAM,然后初始化DDR,再将emmc上的代码(剩下的用户代码)复制到DDR运行;
4.如果从USB下载,则先获取DDR初始化代码,下载到内部SRAM中,然后运行代码初始化DDR,再获取loader代码(用户代码),放到DDR中并运行;
5.无论是何种方式,都需要DDR的初始化代码,结合前面RK3288的经验,就是向自己写的代码加上”头部信息”,这个”头部信息”就包含DDR初始化操作;