日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁(yè) 新聞資訊 >> 新聞?lì)^條 >> (二)啟動(dòng)代碼分析 02
新聞資訊
NEWS INFORMATION

(二)啟動(dòng)代碼分析 02

發(fā)布時(shí)間:2019-05-22

(二)啟動(dòng)代碼分析 02

 

首先從開(kāi)發(fā)板硬件講起:

思考問(wèn)題: 開(kāi)發(fā)板上電后,程序是如何啟動(dòng)呢???

這里分 nor flash 啟動(dòng) 和 nand flash 啟動(dòng)

講解 : 

nand flash 啟動(dòng):

______________________________________________________________________________________________________________________

由于NAND FLASH是接在NAND FLASH控制器上而不是系統(tǒng)總線上,所以沒(méi)有在S3C2440A的8個(gè)BANK中分配地址空間。如果S3C2440被配置成從Nand Flash啟動(dòng),在S3C2440上電后,Nand Flash控制器的會(huì)自動(dòng)的把Nand Flash上的前4K數(shù)據(jù)搬移到內(nèi)部SRAM中,也就是所謂的”Steppingstone”, 同時(shí)把這段片內(nèi)SRAM映射到nGCS0片選的空間(即0x00000000)。系統(tǒng)會(huì)從這個(gè)內(nèi)部SRAM中啟動(dòng),程序員需要完成的工作,就是把最核心的啟動(dòng)程序放在Nand Flash的前4K中,也就是說(shuō),你需要編寫(xiě)一個(gè)長(zhǎng)度小于4K的引導(dǎo)程序,作用是將主程序拷貝到RAM (一般是SDRAM)中運(yùn)行。而在Nand Flash方式啟動(dòng)的情況下,系統(tǒng)是”看不到”Nor Flash的,因?yàn)镹or Flash也是掛在nGCS0上的,而nGCS0的地址空間已經(jīng)被占用了。

________________________________________________________________________________________________________________________

1、系統(tǒng)上電后,首先自動(dòng)判斷是否是autoboot模式,如果使用 s3c2410是帶有nandflash的,并且被設(shè)置成autoboot,從nandflash開(kāi)始啟動(dòng).
2、在判斷是autoboot模式后,mcu內(nèi)置的nandflash控制器自動(dòng)將nandflash的最前面的4k區(qū)域(這4k區(qū)域存放著 bootloader的最前面4k代碼)拷貝到samsung所謂的"steppingstone"里面(steppingstone是在S3C2440 中,實(shí)際上是一塊4k大小的SRAM,).
3、在拷貝完前4k代碼后,nandflash控制器自動(dòng)將"steppingstone"映射到arm地址空間0x00000000開(kāi)始的前4k區(qū)域.
4、在映射過(guò)程完成后.nandflash控制器將pc指針直接指向arm地址空間的0x00000000位置,準(zhǔn)備開(kāi)始執(zhí)行"steppingstone"上的代碼.
5、而"steppingstone"上從nandflash拷貝過(guò)來(lái)的4k代碼,是程序員寫(xiě)的bootloader的前4k代碼.這個(gè) bootloader在之前寫(xiě)好,并已經(jīng)被燒寫(xiě)到nandflash的0x00000000開(kāi)始的最前面區(qū)域..而這"steppingstone"上的 4k代碼就是bootloader的前4k代碼.
6、在pc指向arm地址空間的0x00000000后,系統(tǒng)就開(kāi)始執(zhí)行指令代碼.這4k代碼的任務(wù)是:初始化硬件,設(shè)置中斷向量表,設(shè)置堆棧,然后一個(gè)很重要的任務(wù)是,將nandflash的最前面區(qū)域的bootloader(包含4k啟動(dòng)代碼)拷貝到SDRAM中去,bootloader代碼的大小是寫(xiě)好bootloader就確定的.然后只需要確定bootloader想映射到SDRAM的起始位置就ok.
7、在完成對(duì)nandflash上的bootloader搬移后,找到4k代碼的搬移代碼最后一個(gè)指令的下一個(gè)指令在SDRAM的bootloader的地址,然后跳轉(zhuǎn)到該位置,繼續(xù)執(zhí)行bootloader的剩余代碼(引導(dǎo)系統(tǒng)).
 
 
具體可以看: http://blog.csdn.net/r91987/article/details/7625916   雖然沒(méi)有圖,但是說(shuō)得很好啊
 
因?yàn)榇a必須從 地址 0x000000 開(kāi)始啟動(dòng),而 nor flash 就是0x000000  但是nand flash 地址確是 0x30000000  行不通,但是我們有個(gè) 4KB 的 steping stone(ARM 芯片自己有的)地址是 0x00000,這樣可以 
硬件復(fù)制前4KB 代碼到 stepping stone 再轉(zhuǎn)到 0x30000000 的 SDRAM 中去
 
nor flash 啟動(dòng),由于 nor flash 可以存放 bios , 但是 可讀不可寫(xiě),但是 bootloader 里面的 RW 段 和 ZI 段 要被寫(xiě),自然也要進(jìn)行代碼的搬遷工作(參考 楊鑄 97頁(yè)
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
 
啟動(dòng)代碼詳解: 
 
總得來(lái)說(shuō),裸機(jī)開(kāi)發(fā) 啟動(dòng)代碼只有 100 多條 匯編指令, 通過(guò)啟動(dòng)代碼可以近一步熟悉 ARM 匯編指令, 好處是為以后熟練運(yùn)用 ARM C語(yǔ)言, 匯編語(yǔ)言混合編程以及 uboot的移植打下基礎(chǔ)。
那么怎樣才算ARM匯編 過(guò)關(guān)呢???? 只要看得懂啟動(dòng)代碼就可以了。。。。。。。。。!啊啊啊啊 啊啊 啊 啊啊啊 。。。。。。!然后自己會(huì)修改就行了!啊啊啊啊啊。岚 “““ ““ “  。。。。。。。。。!
聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

荆门市| 滁州市| 佛冈县| 枣阳市| 弥渡县| 广宗县| 广宗县| 和静县| 理塘县| 东明县| 沭阳县| 桑日县| 樟树市| 莎车县| 吉安县| 礼泉县| 徐水县| 清镇市| 普洱| 克什克腾旗| 怀来县| 志丹县| 文安县| 会理县| 福海县| 新源县| 津南区| 昔阳县| 新巴尔虎左旗| 游戏| 长宁区| 鸡东县| 宁安市| 辽阳市| 榆树市| 油尖旺区| 盐城市| 文成县| 阿图什市| 新宾| 长阳|