4412启动流程

CPU中:

单片机属于微控制器,也就是MCU

ARM9,ARM11,A8,A9属于微处理器,也就是MPU  

低端的ARM,比如cortex-M系列也属于MCU

MCU 和 MPU 的区别

   MPU多了两个部件,CACHE  和  MMU  (高速缓存和内存管理单元)

 

事实上,单片机上面也可以跑操作系统  如 ucos

 

处理器速度相对于内存速度,差距太大,所以就引入了CACHE

在ARM里面,启动MMU以后,我们编程看到的地址都是 虚拟地址,经过MMU以后才是 具体的物理地址

 

4412上电以后,从它的0地址开始执行,也就是程序存储器的0地址,由下图可知,0地址在IROM中,iROM在4412内部,也就是一段程序,换句话说;4412上电以后,会执行内部自己的程序(程序是芯片自带的,源码谁也拿不到),这段程序在iROM中

4412启动流程

通过IROM , 4412可以选择从TF卡启动,也可以从EMMC启动,还可以从USB启动

不过可以从EMMC启动,如果找不到有效程序,再从TF卡启动

43 44指的是什么啊?  43 44是指emmc的标准

4412启动流程

假设设置成这个状态:

4412启动流程

iROM里的程序就会首先去eMMC里找程序,如果找不到,然后再去SD卡里找程序(也就是TF卡)

 

到此为止  我们应该很清楚的知道一件事  就是首先要 执行4412内部的iROM程序

 

iROM执行以后,会到外部找程序,找到以后,要拷贝8K的程序到内部RAM,这8K的程序就是 BL1,也就是 bootloader1,

4412启动流程

uboot是怎么编译的???用什么命令

if [ -z $1 ]
then
.   ild_uboot.sh
else
    .ild_uboot.sh $1
fi

实际是执行了另一个脚本:build_uboot.sh   我们打开这个脚本文件:build_uboot.sh

这个脚本里有一句:

cat E4412_N.bl1.SCP2G.bin bl2.bin all00_padding.bin u-boot.bin tzsw_SMDK4412_SCP_2GB.bin > u-boot-iTOP-4412.bin

就是把几个文件拼接一下,生成最终的 u-boot-iTOP-4412.bin

相当于

cat 
E4412_N.bl1.SCP2G.bin 
bl2.bin 
all00_padding.bin 
u-boot.bin 
tzsw_SMDK4412_SCP_2GB.bin 
> u-boot-iTOP-4412.bin

 

第一个文件:     E4412_N.bl1.SCP2G.bin         这个就是BL1  ,刚才说过的,前8K就是他,三星给的,神秘兮兮的

第二个文件:     bl2.bin                                 这个是BL2,也就是BL1执行后要加载的文件,确实是UBOOT前面截取的。

第三个文件:     all00_padding.bin              这个完全是为了补齐用的,里面全是0000

第四个:            u-boot.bin                          这个才是真正的uboot源码编译出来的镜像文件

BL1执行以后加载BL2,然后把u-boot.bin加载到内存去运行的

最后一个文件是:tzsw_SMDK4412_SCP_2GB.bin  这个是ARM的一项新技术,也就是trustzoon技术,为了系统安全用的,大家可以不管他,实际上也可以不用

好了,到这里uboot就执行起来了

 

最后总结一下启动过程:

                iROM-->BL1--->BL2---->uboot---->zImage---->挂接文件系统

 

内存图

4412启动流程