bootloader啟動代碼分析

bootloader啟動代碼分析

ID:14267205

大?。?54.00 KB

頁數(shù):14頁

時間:2018-07-27

bootloader啟動代碼分析_第1頁
bootloader啟動代碼分析_第2頁
bootloader啟動代碼分析_第3頁
bootloader啟動代碼分析_第4頁
bootloader啟動代碼分析_第5頁
資源描述:

《bootloader啟動代碼分析》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、bootloader啟動代碼分析1,bootloader(第一部分)主要完成以下工作:1,設(shè)置CPU工作模式;2,關(guān)閉中斷;3,關(guān)閉Cache和Writebuffer;4,初始化SDRAM,配置存儲設(shè)備;5,復(fù)制FLASH中的代碼和數(shù)據(jù)到SDRAM中;6,內(nèi)存重映射,配置存儲設(shè)備;7,把RM和ZI從LOADADDR復(fù)制到executeADDR.8,設(shè)置??臻g指針,跳轉(zhuǎn)到C語言函數(shù)入口(啟動代碼第二部分)。2,具體代碼分析1,設(shè)置CPU工作模式MRSr0,cpsr#讀取CPSR狀態(tài)寄存器的值CPSR狀態(tài)寄存器結(jié)構(gòu):NZCVIFTModeBICr0,r0,#M

2、ASK_MODE&定義值為0x0000003F,把MODE清零;ORRr0,r0,#MODE_SVC32&宏定義值為0x00000013,把MODE設(shè)置為SVC模式;ORRr0,r0,#I_BIT&宏定義值為0x80,關(guān)IRQ;ORRr0,r0,#F_BIT&宏定義值為0x40,關(guān)FIQ;MSRcpsr_c,r0&回寫cpsr狀態(tài)寄存器設(shè)置完CPSR后,狀態(tài)寄存器中的值:NZCV11T100112,關(guān)閉中斷LDRr2,=ARM7_INTMASK&ARM7_INTMASK宏定義值為ASIC_BASE+0x4008,讀取interruptcontroller寄

3、存器MVNr1,#0&FFFFFFFFSTRr1,[r2]&回寫interruptcontroller寄存器,之后寄存器的值為全1,既關(guān)閉所有的中斷源;LDRr2,=ARM7_INTPEND&ARM7_INTPEND宏定義值為ASIC_BASE+0x4004,取interruptpend寄存器.MVNr1,#0&FFFFFFFFSTRr1,[r2]&回寫ARM7_INTPEND寄存器,之后寄存器的值為全1,既關(guān)閉所有的中斷標(biāo)志位;3,關(guān)閉Cache和WritebufferASIC_BASE宏定義值為0x03ff0000LDRr0,=ARM7_SYSCFG&

4、宏定義值為ASIC_BASE+0x0000LDRr1,=0x87ffffA00X87ffffA0的二進(jìn)制為10000111111111111111111110100000SEMustbesettozero.CEWhensetto'1',cacheoperationsareenabled.設(shè)置為0,將CACHE禁用。WEWhensetto"1",writebufferoperationsareenabled.設(shè)置為0,將writebuffer禁用。CMThis2-bitvaluedetermineshowinternalmemoryistobedevided

5、intocacheandSRAM.00=4-KbyteSRAM,4Kbytecache01=0-KbyteSRAM,8Kbytecache10=8-KbyteSRAM,0Kbytecache設(shè)置為10,將CACHE大小設(shè)置為0。InternalSRAM基地址為3FE(1111111110)寄存器的基地址為3FF《16為變成3FF0000,所以ASIC_BASE宏定義值為0x03ff0000。STRr1,[r0];將設(shè)置寫入SYSCFG寄存器4,初始化SDRAM,配置存儲設(shè)備IMPORT

6、Image$$RO$$Base

7、IMPORT

8、Image$$RO$$L

9、imit

10、IMPORT

11、Image$$RW$$Base

12、IMPORT

13、Image$$RW$$Limit

14、IMPORT

15、Image$$ZI$$Base

16、IMPORT

17、Image$$ZI$$Limit

18、Image$$RO$$Base為RO段基地址,Image$$RO$$Limit為RO段結(jié)束地址;Image$$RW$$Base為RW段基地址,Image$$RW$$Limit為RW段結(jié)束地址;Image$$ZI$$Base為ZI段基地址,Image$$ZI$$Limit為ZI段結(jié)束地址;導(dǎo)入這些內(nèi)置變量,這些變量由編譯器產(chǎn)生。初始化數(shù)據(jù)總線寄存器LDRr1,=r

19、EXTDBWTH;EXTDBWTH宏定義值為0x00003001。即[1:0]DatabuswidthforROM/SRAM/FLASHbank0(DSR0)01=Byte(8bits)(FLASH數(shù)據(jù)總線寬度為一個字節(jié))[13:12]DatabuswidthforDRAMbank0(DSD0)11=Word(32bits)(DRAM數(shù)據(jù)總線寬度為4個字節(jié))初始化FLASHLDRr2,=rROMCON0;ROMCON0宏定義值為0x02000060(00000010000000000000000001100000),即FLASH基地址為0,結(jié)束地址為200

20、000(20〈〈16)(0-2M)LDRr3,=rROMCON1;

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。