FL2440开发板第一次烧录以及启动过程简要分析

开发板烧录的流程如下图:
FL2440开发板第一次烧录以及启动过程简要分析_第1张图片
1.J_link加载bootstrap到开发板的SRAM的0地址上运行,bootstrap程序用来初始化外部的SDRAM。
2.J_link加载u-boot程序到外部的SDRAM 0x33f80000地址上运行,u-boot相当于PC上的BIOS。
3.u-boot在SDRAM中运行起来后,使用tftp命令将u-boot,linux内核(包括根文件系统)烧录到nandflash的相应位置上去。

4.SDRAM:Synchronous Dynamic Random-Access Memory,即同步动态随机存储器,DRAM中的数据需要周期性的更新。
SRAM:Static Random-Access Memory ,即静态随机储存器,SRAM中的数据不需要周期性的更新,只需要保持通电,其保存的数据就可以一直存在。

5.当cpu上电后,就从0地址开始启动,cpu内部有一个4k的SRAM,该SRAM不需要初始化就可以启动,而外部的SDRAM则需要初始化。

6.第一次烧录时,SRAM、SDRAM、内存、nandflash中都没有程序,这时需要使用J_link把bootstrap程序烧录到SRAM中(因为SRAM不需要初始化),该bootstrap程序用来初始化CPU、SDRAM、nandfalsh,初始化好的SDRAM就可以使用了,接下来就用J_link把u-boot(u-boot属于一种BootLoader,BootLoader的作用就是把系统的软硬件带到一种可调试的状态,BootLoader的前几k代码就是bootstrap的功能)烧录到SDRAM的0x33f80000地址上,具体为什么是这个地址,就需要看开发板的原理图和datasheet。

7.u-boot在SDRAM中运行起来后,就使用tftp命令将u-boot,linux内核(包括根文件系统)烧录到nandflash的相应的位置上去。当下一次启动开发板时,便会自动从nandflash上启动加载程序。到了这一步,基本的烧录就已经完成了。

8.Boot_Loader(最常使用的是u-boot),相当于windows的BIOS+GRUB,其完成的功能有如下几个:
1).内存,CPU,nandflash的初始化。
2).引导操作系统的启动。
u-boot的前4k代完成的功能有:
1).初始化CPU,SDRAM,nandflash,也就是bootstrap的功能。
2).将整个u-boot程序搬移到SDRAM中执行,并执行u-boot相应的代码。

linux系统启动流程简要介绍
step1:CPU上电,硬件自动将nandflash的前4K代码,即u-boot的前4K代码加载到CPU内部的SRAM的4K中去运行。
step2:U-boot的前4K代码主要完成CPU和SDRAM的初始化,并将整个U-boot从nandflash中搬移到SDRAM 0x33f8 0000 地址上,然后执行剩下的U-boot程序。
step3:U-boot启动后,将linux内核从nandflash中搬移到SDRAM的0x30008000地址上并开始运行linux内核。
step4:linux内核启动后,加载根文件系统,启动相应的应用程序。

你可能感兴趣的:(FL2440开发板第一次烧录以及启动过程简要分析)