<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Mpc823e的bootloader分析和實(shí)現

基于Mpc823e的bootloader分析和實(shí)現

作者: 時(shí)間:2012-06-01 來(lái)源:網(wǎng)絡(luò ) 收藏

步驟4:初始化cache

MPC823e采用Harvard結構的cache,它的指令cahce和數據cache是獨立的;采用最近最少使用法(LRU Least Recently Used)替代算法。在具體編寫(xiě)時(shí),要注意只有在對MMU編程后cache才能工作,應此要采用以下的步驟進(jìn)行初始化(如圖2所示):

步驟5:初始化內存管理單元 init_MMU

MPC823e的MMU的特點(diǎn)主要有:支持多種頁(yè)面大小、全相聯(lián)映像規則TLB(Translation Look-aside Buffer)、指令和數據TLB可獨立控制等。在編寫(xiě)時(shí),因為啟動(dòng)程序中,不需要虛擬內存到物理內存的地址變換,所以只需對內存屬性做一些設置,如回寫(xiě)策略、內存讀寫(xiě)保護等

步驟6:設置中斷向量表 b vector_reloc

中斷向量表用于嵌入式Linux啟動(dòng)代碼,在啟動(dòng)過(guò)程中,最主要的就是設置復位中斷??梢栽贚ILO(Linux )中填寫(xiě)0x100復位中斷向量。當發(fā)生復位時(shí),MPC823e自動(dòng)讀取復位配置字,通過(guò)相應的配置,MPC823e會(huì )讀取復位中斷向量0x100處的指令,進(jìn)行正確引導過(guò)程。

步驟7:init_stack初始化堆棧 -> 初始化編譯相關(guān)寄存器

此外,在運行C語(yǔ)言編譯的程序前必須先定義這些與編譯相關(guān)的寄存器,如堆棧指針寄存器、代碼段、數據段指針寄存器等。針對不同的編譯器使用不一樣寄存器的規則,如diab編譯器和gcc編譯器,在編寫(xiě)時(shí),需要仔細查閱編譯器手冊。

2.2 ppcboot中主板部分的開(kāi)發(fā)

ppcboot支持數十種主板,可以在其中尋找與自己設計的主板相近的主板,并以其的ppcboot的主板代碼部分為模板,進(jìn)行必要的修改來(lái)移植。本系統采用的主板HD823e與其中的RPXlite板十分相近,在其基礎上進(jìn)行調整。接下來(lái),將討論如何進(jìn)行修改。

(1)在Makefile文件中,添加硬件基本配置信息,如cpu型號,主板類(lèi)型,cpu體系

如本系統添加:

HD823e_config: unconfig

echo "ARCH = ppc" > config.mk ;

echo "BOARD = HD823e" >>config.mk ;

echo "CPU = mpc8xx" >>config.mk ;

echo "#include config_$(@:_config=).h>" >config.h

(2) 修改開(kāi)發(fā)板的配置文件.包括 CPU,調試串口,內存映射,Flash與SDRAM等多部分配置參數進(jìn)行修改。以下給出部分重要的參數。

CPU部分配置:

#define CONFIG_MPC823 1 /* CPU類(lèi)型 */

#define CFG_RTCSC (RTCSC_SEC | RTCSC_RTE) /*配置cpu內部時(shí)鐘*/

#define CFG_PLPRCR ( (0x00900000) | PLPRCR_TEXPS )

#define CONFIG_8xx_GCLK_FREQ 50000000 /*設置CPU運行頻率*/

調試串口的部分配置:

#define CONFIG_BAUDRATE 9600 /* 串口波特率 = 9600bps */

#define CONFIG_8xx_CONS_SMC1 1 /* 串口使用 SMC1口 */

內存映射的部分配置:

#define CFG_IMMR 0xFF000000 /* Internel Memory Mapped Register */

#define CFG_LOAD_ADDR 0x100000 /* ppcboot缺省的引導地址 */

由于篇幅的關(guān)系,其他部分參數不介紹了,可以根據CPU的使用手冊和ppcboot手冊進(jìn)行配置,注意的是,這些參數都需要嚴格的確定,不能出錯,否則,無(wú)法正確引導系統。

(3) 修改 include /commproc.h

該文件包含與通信接口相關(guān)的一些參數,由于本系統需要網(wǎng)絡(luò )來(lái)下載內核,需要對網(wǎng)絡(luò )接口引腳進(jìn)行相關(guān)的定義。

#ifdef CONFIG_HD823e

#define PROFF_ENET PROFF_SCC2 #define CPM_CR_ENET CPM_CR_CH_SCC2

#define SCC_ENET 1 #define PA_ENET_RXD 0x0004

#define PA_ENET_TXD 0x0008 #define PA_ENET_TCLK 0x0800

#define PA_ENET_RCLK 0x0200 #define PB_ENET_TENA 0x2000

#define PC_ENET_CLSN 0x0040 #define PC_ENET_RENA 0x0080

#define SICR_ENET_MASK 0xff00 #define SICR_ENET_CLKRT 0x2f00

#endif

2.3 編譯ppcboot

修改完成后,可以使用下列命令進(jìn)行編譯,一般說(shuō)來(lái),都可以編譯成功,得到適合自己系統的ppcboot。本系統,在原有RPXLite的模板基礎上,通過(guò)上修改,編譯成功,順利的引導了系統。

make clean

make HD823e_config

make all

3 結束語(yǔ)

本文根據所選用的嵌入式系統的特點(diǎn),概述了ppcboot的啟動(dòng)流程,對下的ppcboot體系進(jìn)行了介紹,并針對自己的開(kāi)發(fā)板,詳細的說(shuō)明了如何開(kāi)發(fā)適應自己系統的ppcboot。代碼已通過(guò)了系統的調試,成功的引導了linux內核,達到設計的目的。

本文作者的創(chuàng )新點(diǎn)是:在分析嵌入式系統在Linux下的工作流程和ppcboot源代碼基礎上,開(kāi)發(fā)了特定的、適合本文系統硬件的。參考ppcboot中支持RPLite主板的相關(guān)代碼,給出了將ppcboot移植到本文所使用的HD823e主板的修改方案。

參考文獻

[1]周長(cháng)春,王志言.PowerPC概念、體系結構與設計[M].北京:電子工業(yè)出版社,1995.1-158.

[2]毛德操,胡希明. Linux內核源代碼情景分析[M].杭州:浙江大學(xué)出版社,2001.663-737.

[3]王學(xué)龍. 嵌入式Linux系統設計與應用[M].北京:清華大學(xué)出版社,2001.35-69.

[4]萬(wàn)永波,張根寶.基于A(yíng)RM的嵌入式系統Bootloader啟動(dòng)流程分析 微計算機信息 2005.11-2

[5]motorola Inc.MPC823e User’S Manual[EB/OL].


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Mpc823e bootloader 引導程序

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>