注:此文為部分摘錄,并且在原文基礎上有改動link
這幾天一直在摸索s3c2410的啟動過程,幾天的困惑終于在昨天晚上基本解決.下面詳細分析一下它的最前面的啟動過程.
1.在板子上電的一開始,首先自動判斷是否是autoboot模式(這是由硬件設計階段,由硬件工程師對mcu的引腳連線決定的),我所使用的s3c2410是帶有nandflash的,并切被設置成autoboot,從nandflash開始啟動.
2.在判斷是autoboot模式后,mcu內(nèi)置的nandflash控制器自動將nandflash的最前面的4k區(qū)域(這4k區(qū)域存放著 bootloader的最前面4k代碼)拷貝到samsung所謂的"steppingstone"里面(實際上是一塊4k大小的SRAM).
3.在拷貝完前4k代碼后,nandflash控制器自動將"steppingstone"映射到arm地址空間0x00000000開始的前4k區(qū)域.(是從0地址開始嗎?有疑問。比如公司的板子也是arm芯片,但是nandflash控制器在啟動時卻沒有將"steppingstone"映射到0地址,而是映射到了其他地址段)
4.在映射過程完成后.nandflash控制器將pc指針直接指向arm地址空間的0x00000000位置,準備開始執(zhí)行"steppingstone"上的代碼.
... ...
至此,系統(tǒng)啟動的“史前時期”結(jié)束,余下的啟動工作由bootloader來完成。