Exynos 4412启动过程(群聊笔记记录)
1、Exynos 4412的0地址:
可以看到0x0000_0000?叫做iROM,一共64K。主要功能是根據(jù)外部撥碼開關(guān)選擇啟動方式。這部分代碼是三星固化好的,我們只需要知道怎么撥碼選擇啟動方式。
2、撥碼方式:
iROM里的程序就會首先去1st里找程序,如果找不到,然后再去2nd卡里找程序。?
iROM執(zhí)行以后,會到外部找程序,找到以后,要拷貝8K(后面版本可能不一樣,有15K等,如下圖就是15K)的程序到內(nèi)部RAM,這8K的程序就是?BL1(bootloader1)。這部分是三星自己寫的,就是這個文件E4412_N.bl1.SCP2G.bin。不開源的。uboot在編譯完成后,把BL1和自己拼接到了一起。
我們來看看uboot是怎么把BL1和自己拼接在一起的。uboot的編譯腳本如下:
if?[?-z?$1?] then .ild_uboot.sh else .ild_uboot.sh?$1 fi實(shí)際是執(zhí)行了另一個腳本:build_uboot.sh
我們打開build_uboot.sh,里面有一句話:(本來是一行的,我拆成7行。方便大家看)
cat? E4412_N.bl1.SCP2G.bin? bl2.bin? all00_padding.bin? u-boot.bin? tzsw_SMDK4412_SCP_2GB.bin? >?u-boot-iTOP-4412.bin這個是什么意思呢?就是把">"前面幾個拼接成一個uboot-iTOP-4412.bin。
第一個文件:E4412_N.bl1.SCP2G.bin?
這個就是BL1??,剛才說過的,前8K就是他,三星給的,神秘兮兮的
第二個文件:bl2.bin?
這個是BL2,也就是BL1執(zhí)行后要加載的文件,是Uboot的前14K(后面版本也有其他大小的,如下圖就是16K)截取的。
第三個文件:?all00_padding.bin
這個完全是為了補(bǔ)齊用的,里面全是0000
第四個:u-boot.bin?
這個才是真正的uboot源碼編譯出來的鏡像文件
最后一個文件是:tzsw_SMDK4412_SCP_2GB.bin?,這個是ARM的一項(xiàng)新技術(shù),也就是trustzoon技術(shù),為了系統(tǒng)安全用的,大家可以不管他。
3、最后總結(jié)下:
iROM-->BL1--->BL2---->uboot---->zImage---->掛接文件系統(tǒng)
4、補(bǔ)充:
BL1在哪里運(yùn)行?誰知道?在DDR3運(yùn)行嗎?不,是在IRAM運(yùn)行。因?yàn)檫@個時候DDR3還沒有被初始化,就是說DDR3的控制器還沒有初始化。沒有辦法,只好把BL1放到IRAM中。因?yàn)镮RAM是可以上電就能使用的。iRAM這個東東造價高,但是好用。總共才256K。所以不能把操作系統(tǒng)裝進(jìn)來,所以要分段去啟動。BL2是uboot的一部分,就是uboot的前面一小段程序,也就是前14K,這前14K也是要在IRAM里運(yùn)行的!也就是說BL1和BL2都是在IRAM里執(zhí)行的。換句話說BL1并沒有初始化DDR3。
總結(jié)
以上是生活随笔為你收集整理的Exynos 4412启动过程(群聊笔记记录)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之人脸识别
- 下一篇: 迅为i-TOP4412出厂首次烧写