国产男女无遮挡猛进猛出_国产精品久久无码一区二区三区网_亚洲浮力影院久久久久久_日本熟妇色xxxxx日本免费看_国内精品久久久久久99蜜桃_精品人妻系列无码专区

網絡消費網 >  5G > > 正文
Bootloader/u-boot的啟動模式
時間:2021-12-16 10:22:05
對于計算機系統(tǒng)來說,從計算機開機上電的到操作系統(tǒng)的啟動需要一個引導過程。嵌入式Linux同樣也需要一個引導的過程,及引導程序就叫做Bootloader。Bootloader是在操作系統(tǒng)啟動之前執(zhí)行的一小段程序,通過這段小程序,我們可以初始化硬件設備、建立內存空間映射表,從而建立適當系統(tǒng)軟硬件環(huán)境,為最終調用操作系統(tǒng)內核做好準備。對于嵌入式系統(tǒng),Bootloader是基于特定平臺來實現(xiàn)的,因此幾乎不可能為所有的計算機操作系統(tǒng)建立一個通用的Bootloader,不同的處理器架構都有不同的Bootloader,Bootloader不但依賴于CPU的體系結構,而且依賴于嵌入式系統(tǒng)板級的設備的配置。對于兩塊不同的嵌入式開發(fā)板,即使他們使用同一種處理器,要想讓運行于一塊板子上的Bootloader運行在另一塊板子上,一般都需要修改Bootloader源程序。反過來大多數(shù)的Bootloader都具有很多的共性,某些Bootloader也能夠支持多種體系結構的嵌入式系統(tǒng)。例如:u-boot就同時支持Powerpc、ARm、MIPS和X86等等的體系結構,支持的板子有上百種,通常他們都能夠自動從存儲介質上啟動,都能夠引導操作系統(tǒng)啟動,并且大部分都可以支持串口和網口的操作。系統(tǒng)加電或者復位后,cpu通常都會從某個地址開始執(zhí)行,這是由處理器決定的,對于ARM處理器而言會從0x00000000取第一條指令,嵌入式系統(tǒng)的開發(fā)板都要把ROM和FLASH映射到這個地址上,因此必須將Bootloader的程序存儲在相應的FLASH位置,這樣系統(tǒng)加電后就會首先執(zhí)行它。u-boot的啟動一般流程:第一階段:依賴cpu初始化外圍硬件代碼,通常用匯編代碼實現(xiàn)1、設置cpu的工作模式;2、關中斷,以防止意外發(fā)生;mrsr0,cpsr//讀取cpsr中的數(shù)據(jù)到r0中bic r0,r0,#0x 1f//將寄存器r0的值和0x1f的反碼安位與之后將結果存儲在r0中相當于清零orr r0,r0,#0xd3//將寄存器r0的值和0xd3 安位或之后將結果保存在r0寄存器之中,關閉中斷msrcpsr,r0//將cpsr中的數(shù)值寫到r0寄存器中3、關閉看門狗,避免系統(tǒng)重啟;#ifdefined(CONFIG_S3C2400)||defined(CONFIG_S3C2410)||defined(CONFIG_S3C2440)# if defined(CONFIG_S3C2400)#define pWTCON0x15300000#define INTMSK0x14400008#define CLKDIVN0x14800014#else#define pWTCON0x53000000#define INTMSK0x4A000008#define INTSUBMSK 0x4A00001C#define CLKDIVN0x4C000014# endif4、設置back初始化,設置cpu的工作頻率;#if defined(CONFIG_S3C2440)ldrr0, =CLKDIVNmovr1,#5strr1,[r0]mrc p15,0,r1,c1,c0,0orr r1, r1,#0xc0000000mcr p15,0,r1,c1,c0,0mov r1,#CLK_CTL_BASEmov r2,#MDIV_405add r2,r2,#PSDIV_405str r2,[r1,#0x4]#elseldrr0, =CLKDIVNmovr1, #3strr1, [r0]#endifadr r0, _start//adr是讀取地址的偽指令,表示將_start標示的運行地址給r0ldrr1, _TEXT_BASE// 表示將_TEXT_BASE 指向的地址中的數(shù)據(jù)拷貝到r1中cmpr0, r1//比較是否相同beqstack_setup//相同跳轉出去ldrr2, _armboot_start//start起始地址,包含RO代碼段+RW數(shù)據(jù)段+ZI全局變量ldrr3, _bss_start//全局變量的地址subr2, r3, r2//相減之后得到的是代碼段+數(shù)據(jù)段的總大小addr2, r0 r2,//r0是要燒錄的內容,表示的是燒錄的代碼段+數(shù)據(jù)段的結束地址copy_loop:ldmiar0!, {r3-r10}//ldmia批量的拷貝,向后拷貝32位到r3-r10(將r0中的數(shù)據(jù)讀出到r3-r10的,r0自動加一)stmiar1!, {r3-r10}//stmia批量的存儲到r1上也就是目標運行的地址上(將r3-r10中的數(shù)據(jù)保存到r1指向的地址上,r1自動加一)cmpr0, r2//r0 燒錄的起始地址,r2燒錄的結束地址,相等則說明拷貝完成ble copy_loop#endif6、設置建立堆棧;7、執(zhí)行內存地址上的程序,該工作可以使ldr pc來完成;start.s是u-boot啟動所執(zhí)行的第一個文件,它說做的是設置系統(tǒng)堆棧和cpu的工作方式,為進入c程序奠定基礎。第二階段:用c語言完成,以實現(xiàn)更復雜的命令1、調用系統(tǒng)一系列的初始化函數(shù);2、初始化Flash設備;3、初始化系統(tǒng)內存分配函數(shù);4、如果目標系統(tǒng)有NAND設備,則初始化NAND設備;5、如果系統(tǒng)擁有顯示設備,則初始化該類設備;6、初始化相關網絡設備,填寫IP、MAC地址等;7、進去命令循環(huán)(即整個boot的工作循環(huán)),接收用戶從串口輸入的相關命令,然后進行相應的工作;

關鍵詞: Bootloaderu-boot啟動模

版權聲明:
    凡注明來網絡消費網的作品,版權均屬網絡消費網所有,未經授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明"來源:網絡消費網"。違反上述聲明者,本網將追究其相關法律責任。
    除來源署名為網絡消費網稿件外,其他所轉載內容之原創(chuàng)性、真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考并自行核實。
熱文

網站首頁 |網站簡介 | 關于我們 | 廣告業(yè)務 | 投稿信箱
 

Copyright © 2000-2020 m.baiwanxiang.net.cn All Rights Reserved.
 

中國網絡消費網 版權所有 未經書面授權 不得復制或建立鏡像
 

聯(lián)系郵箱:920 891 263@qq.com

備案號:京ICP備2022016840號-15

營業(yè)執(zhí)照公示信息

主站蜘蛛池模板: 国产欧美日韩成人 | 日本www视频在线观看 | 美女免费毛片 | 爱草在线 | 国产乱码一区二区三区 | 免费激情小视频 | 国产成人在线免费观看 | 亚洲黄色a| 999国产精品视频 | 激情六月婷婷 | 日韩精品天堂 | 黄色三级视频在线观看 | 91精品视频网站 | 麻豆视频91| 深夜福利91 | 欧美啪啪小视频 | 国产啊v在线观看 | 香蕉视频在线网站 | 一极黄色大片 | 伊人精品综合 | 爆操欧美美女 | av观看在线免费 | 下北阳光灿烂的日子 | 成年免费视频黄网站在线观看 | 日韩av高清在线观看 | 婷婷影音 | 日本朋友的妈妈 | 色综合日韩 | 国产精品av在线播放 | 黄色a大片| 欧美日韩国产在线一区 | 一级 黄 色 片69 | 亚洲一区二区三区在线看 | 韩av| 久久精品99国产精 | 男人天堂手机在线 | 新中文字幕 | 亚洲一区二区视频 | 一区福利视频 | 亚洲一级片在线播放 | 国产综合影院 |