一、开发板启动过程
EMMC:相当于电脑的外存,断电不丢失
开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到内存,然后跳转到uboot运行
uboot开始运行后首先对开发板上的软硬件环境做进一步初始化,然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存,然后跳转到linux运行
设备树(dtb):存储硬件设备信息,linux和dtb加起来才是一个完整的Linux内核
根文件系统(rootfs):根文件系统不属于linux,本质是一些文件,Linux运行之前需要用到这些文件。
linux开始运行后先对系统环境做初始化,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统
地址映射表
一上电,芯片就会先执行IROM里的程序,这里就放着BL0,但是这段代码不是开源的我们不知道它写了什么。
0202 0000-0206 0000这段地址是三星设计的一块内存
1000 0000-1400 0000这段地址是特殊功能寄存器,之前裸机开发用到的寄存器大多在这段地址中。
4000 0000-A000 0000这1.5G是留给扩展内存的
A000 0000-FFFF FFFF这1.5G也是预留给扩展内存的
二、系统移植步骤
uboot移植
linux内核移植(包含设备树)
根文件系统移植