买的开发板用的是 scp1G的
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中
通过IROM , 4412可以选择从TF卡启动,也可以从EMMC启动,还可以从USB启动
不过可以从EMMC启动,如果找不到有效程序,再从TF卡启动
43 44指的是什么啊? 43 44是指emmc的标准
假设设置成这个状态:
iROM里的程序就会首先去eMMC里找程序,如果找不到,然后再去SD卡里找程序(也就是TF卡)
到此为止 我们应该很清楚的知道一件事 就是首先要 执行4412内部的iROM程序
iROM执行以后,会到外部找程序,找到以后,要拷贝8K的程序到内部RAM,这8K的程序就是 BL1,也就是 bootloader1,
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---->挂接文件系统
内存图