




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、系統(tǒng)啟動(dòng)與Boot Loader,史先強(qiáng) 南京博芯電子技術(shù)有限公司,SEP4020地址空間分配,0 x0400 0000,0 x1000 0000,0 x2000 0000,0 x3000 0000,Nand_Data (0 x11000200),0,4G,關(guān)于系統(tǒng)啟動(dòng),什么是啟動(dòng)? 從CPU內(nèi)核行為看,啟動(dòng)就是從零地址取第一條指令并執(zhí)行 系統(tǒng)零地址映射 硬件設(shè)定 EMI配置,SEP4020啟動(dòng)方式介紹,SEP4020啟動(dòng)方式 SystemSetup2:0000:NOR啟動(dòng)001:NAND啟動(dòng)3級(jí)地址,512byte010:NAND4級(jí)地址512byte011:NAND4級(jí)地址2Kbyte10
2、0:NAND5級(jí)地址2Kbyte UB4020MB_Lite(V1.1) SystemSetup0=0 SystemSetup1=J501(ON:NorFlash啟動(dòng),OFF:NandFlash啟動(dòng)) SystemSetup2=0,NorFlash啟動(dòng),NorFlash讀寫特性 讀:可以實(shí)現(xiàn)字節(jié)尋址 寫:不能字節(jié)尋址,須按頁或塊寫入 UB4020EVB上NorFlash地址 起始地址:CSA,0 x20000000開始 結(jié)束地址:2MB, 0 x20200000,解決存儲(chǔ)與速度的矛盾:BootLoader,NorFlash,0 x0,0 x20000000,0 x30000000,SDRAM,
3、PC,BootLoader,Project Image,NorFlash啟動(dòng),NorFlash啟動(dòng)一:配置系統(tǒng)環(huán)境 配置PMU PMU_PCSR、PMU_PMDR PMU_PLTR、PMU_PMCR 配置EMI EMI_CSACONF、EMI_CSECONF EMI_SDCONF1、 EMI_SDCONF2,NorFlash啟動(dòng),NorFlash啟動(dòng)二:將代碼拷貝到SDRAM NorFlash啟動(dòng)三:將SDRAM映射到零地址 NorFlash啟動(dòng)四:程序跳轉(zhuǎn),NorFlash啟動(dòng),關(guān)于地址重映射-Remap,0 x00000080/0 x20000080: ldr pc, =0 x200000
4、88 0 x00000084/0 x20000084: movr0, r0 0 x00000088/0 x20000088: movr0, r0 0 x0000008C/0 x2000008C: movr0, r0 0 x00000090/0 x20000090: movr0, r0 REMAP 0 x00000094/0 x20000094: ldrr1, =0 x11000020 0 x00000098/0 x20000098: ldrr2, =0 x0000000b 0 x0000009C/0 x2000009C: strr2, r1 0 x200000A0: ldr pc, =0 x0
5、,NorFlash,NandFlash啟動(dòng),NandFlash讀寫特性 讀:不能字節(jié)尋址,須通過命令按頁讀 寫:不能字節(jié)尋址,須按頁或塊寫入 SEP4020的NandFlash控制器 FIFO地址:0 x1100 0200 FIFO結(jié)構(gòu):32bit寬,4級(jí)深度,NandFlash啟動(dòng),NandFlash啟動(dòng)時(shí)的硬件設(shè)置 SystemSetup2:0000:NOR啟動(dòng)001:NAND啟動(dòng)3級(jí)地址,512byte010:NAND4級(jí)地址512byte011:NAND4級(jí)地址2Kbyte100:NAND5級(jí)地址2Kbyte 系統(tǒng)零地址映射 NandFlash控制器FIFO:0 x1100 0200,
6、NandFlash啟動(dòng),NandFlash啟動(dòng)過程 上電后,NandFlash控制器向NandFlash發(fā)出讀命令,讀取第一頁數(shù)據(jù) 內(nèi)核從NandFlash控制器的FIFO取指,由于是高位地址選通,低位地址變化不會(huì)影響取指 FIFO讀空后,NandFlash控制控制器再從NandFlash中讀取個(gè)字的數(shù)據(jù)(16BYTE) 第一頁數(shù)據(jù)讀取并執(zhí)行完畢,程序控制PC跳轉(zhuǎn),NandFlash啟動(dòng),NandFlash啟動(dòng)方式的制約 不可以使用類似LDRR0, 12345678的偽指令,須用mov指令代替 例如: MOV R0, #0 x12000000 ADD R0, R0, #0 x00340000
7、ADD R0, R0, #0 x00005600 ADD R0, R0, #0 x00000078,NandFlash啟動(dòng),NandFlash啟動(dòng)方式的制約 不可以在啟動(dòng)代碼中使用類似B的跳轉(zhuǎn)指令 不可以在啟動(dòng)代碼中執(zhí)行Remap操作 啟動(dòng)代碼長度必須達(dá)到512+16BYTE(以512B/頁為例) PC跳轉(zhuǎn)必須放在啟動(dòng)代碼的最后一條,NandFlash啟動(dòng),NandFlash啟動(dòng)一: 配置EMI: EMI_CSECONF:0 x8CFFFFF1 EMI_SDCONF1:0 x1D004177 EMI_SDCONF2:0 x80001860,NandFlash啟動(dòng),NandFlash啟動(dòng)二: 配
8、置NAND控制器 NAND_ADDR1:0 x00000200 NAND_CONF1:0 x06302857 NAND_CONF2:0 x00114353,NandFlash啟動(dòng),NandFlash啟動(dòng)三: 配置DMAC DMAC_C0SRCADDR:0 x11000200 DMAC_C0DSTADDR:0 x30001000 DMAC_C0CONTROL:0 x0021249B DMAC_C0CONFIGRATION:0 x31D,NandFlash啟動(dòng),NandFlash啟動(dòng)四: 配置必要的寄存器 R10:0 x11000104 R11:0 x80000000 R9:0 x100 R8:0
9、 x30001000,NandFlash啟動(dòng),NandFlash啟動(dòng)五: 寫入條指令到0 x30000000 0 x30000000: mov r11, r10 0 x30000004: A subs r9, r9, #0 x1 0 x30000008: bne A 0 x3000000c: mov pc, r8,NandFlash啟動(dòng),NandFlash啟動(dòng)六: 程序指針PC跳轉(zhuǎn) 用NOP填滿一頁(528),最后一條指令跳轉(zhuǎn)到0 x30000000去執(zhí)行上一步寫好的指令,NandFlash啟動(dòng),NandFlash啟動(dòng)七: 啟動(dòng)NandFlash傳輸 0 x30000000: mov r11,
10、 r10 將0 x80000000寫入0 x11000104,即:啟動(dòng)NandFlash讀 通過DMA將NandFlash第二頁數(shù)據(jù)(主程序代碼,或BOOT第二部分)搬運(yùn)到:0 x30001000,NandFlash啟動(dòng),NandFlash啟動(dòng)八: 等待NandFlash傳輸完成 0 x30000004: A subs r9, r9, #0 x1 0 x30000008: bne A 空循環(huán),等待DMA傳輸完畢,NandFlash啟動(dòng),NandFlash啟動(dòng)九: 程序跳轉(zhuǎn) 0 x3000000c: mov pc, r8 此時(shí)DMA已經(jīng)將主程序搬運(yùn)到0 x30001000,跳轉(zhuǎn)到該地址,Stic
11、k Out Until Success,24,NandFlash啟動(dòng)完成后內(nèi)存數(shù)據(jù):,NandFlash啟動(dòng),U-BOOT移植與原理,U-BOOT簡介 UBoot ,全稱UniversalBootLoader,是由德國DENX小組的開發(fā),并遵循GPL條款的開放源碼項(xiàng)目。它的主要功能是完成硬件設(shè)備的初始化、操作系統(tǒng)代碼的搬運(yùn),并提供一個(gè)控制臺(tái)及一個(gè)命令集在操作系統(tǒng)運(yùn)行前操控硬件設(shè)備。,U-BOOT支持的處理器與操作系統(tǒng),處理器: PowerPc、MIPs、xs6、ARM、NIOs、Xsca 操作系統(tǒng): OpenBSD,NetBSD,F(xiàn)reeBSD,Linux,SVR4,Esix,SolariS,
12、Irix,SCO,Dell,NcR,vxworks,1,ynxos,pSOS,QNX,RTEMS,ARTOS,U-BOOT簡介,常用的U-BOOT命令 bootm、cmp、cp、erase、flinfo、mw、md、printenv、setenv、save、reset、tftp、nand、tftp、ping,U-BOOT啟動(dòng)代碼分析,系統(tǒng)啟動(dòng)流程(NorFlash啟動(dòng)) 1cpu/sep4020/start.S 執(zhí)行匯編指令,初始化CPU 2lib_arm/board.c start_armboot 是U-Boot 執(zhí)行的第一個(gè)C 語言函數(shù),完成系統(tǒng)初始化工作,進(jìn)入主循環(huán),處理用戶輸入的命令。
13、 3init_sequence init_sequence數(shù)組保存著基本的初始化函數(shù)指針。,U-BOOT啟動(dòng)代碼分析,系統(tǒng)啟動(dòng)后內(nèi)存分配圖,U-BOOT引導(dǎo)操作系統(tǒng)分析,U-BOOT格式的內(nèi)核映像 mkimage -n Kernel 2.4.18 -A arm -O linux -T kernel -C none -a 30007fc0 -e 30008000 -d 4020.bin vmlinux-2.4.18.img,U-BOOT引導(dǎo)操作系統(tǒng)分析:bootm命令的實(shí)現(xiàn),讀取Image頭部信息,通過Magic number判斷Image,通過CRC信息較驗(yàn)內(nèi)核,獲得內(nèi)核實(shí)際入口地址 函數(shù)指針
14、與絕對(duì)地址跳轉(zhuǎn) theKernel = (void (*)(int, int, uint)ntohl(hdr-ih_ep); theKernel (0, bd-bi_arch_number, bd-bi_boot_params);,U-BOOT引導(dǎo)操作系統(tǒng)分析:傳參方法,用TAG傳遞更多引導(dǎo)信息 struct tag struct tag_header hdr; union struct tag_corecore; struct tag_mem32mem; struct tag_videotextvideotext; struct tag_ramdiskramdisk; struct tag_
15、initrdinitrd; struct tag_serialnrserialnr; struct tag_revisionrevision; struct tag_videolfbvideolfb; struct tag_cmdlinecmdline; struct tag_acornacorn; struct tag_memclkmemclk; u; ;,struct tag_header u32 size; u32 tag; ;,33,用TAG傳遞更多引導(dǎo)信息 0 x30000100 00000005 54410001 00000000 00000000 0 x30000110 0000
16、0000 0000000F 54410009 746F6F72 0 x30000120 65642F3D 61722F76 7220306D 6F632077 0 x30000130 6C6F736E 74743D65 2C305379 30303639 0 x30000140 696E6920 6C2F3D74 78756E69 EA006372 0 x30000150 00000004 54420005 30300040 00200000 0 x30000160 00000000 00000000,#define ATAG_CORE0 x54410001 struct tag_core u32 flags;/* bit 0 = read-only */ u32 pagesize; u32 rootdev; ;,#define ATAG_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 制作拍攝合同范本
- 債務(wù)變更合同范本
- 代銷汽車合同范本
- 二手車合同范本商家自己寫
- 分階段付款合同范本
- 華帝櫥柜合同范本
- 農(nóng)村建房主體合同范本
- 單位門合同范本
- 醫(yī)療美容轉(zhuǎn)讓合同范例
- 產(chǎn)品設(shè)計(jì)開發(fā)合同范本
- CJJ2-2008城市橋梁工程施工與質(zhì)量驗(yàn)收規(guī)范
- 病媒生物防治操作規(guī)程
- 2024年社會(huì)工作者《社會(huì)工作實(shí)務(wù)(中級(jí))》考試真題必考題
- 德育教育研究課題申報(bào)書
- (高清版)JTG 3810-2017 公路工程建設(shè)項(xiàng)目造價(jià)文件管理導(dǎo)則
- 《煤礦重大事故隱患判定標(biāo)準(zhǔn)》試題及答案
- 《ISO31000:2024風(fēng)險(xiǎn)管理指南》指導(dǎo)手冊(cè)(雷澤佳譯2024-04)
- 學(xué)前兒童表演游戲的組織與指導(dǎo)(學(xué)前兒童游戲課件)
- 建筑用真空陶瓷微珠絕熱系統(tǒng)應(yīng)用技術(shù)規(guī)程
- (高清版)DZT 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬
- 《拒絕校園欺凌 防霸凌主題班會(huì)》課件
評(píng)論
0/150
提交評(píng)論