當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]S3C2410的初始化代碼主要涉及到對(duì)系統(tǒng)主要模塊的配置、運(yùn)行環(huán)境的建立、系統(tǒng)時(shí)鐘、MMU等模塊的配置,下面按執(zhí)行順序依次都各個(gè)部分進(jìn)行分析:l程序入口:(ResetHandler)在程

S3C2410的初始化代碼主要涉及到對(duì)系統(tǒng)主要模塊的配置、運(yùn)行環(huán)境的建立、系統(tǒng)時(shí)鐘、MMU等模塊的配置,下面按執(zhí)行順序依次都各個(gè)部分進(jìn)行分析:

l程序入口:(ResetHandler)

在程序一開始,首先進(jìn)行的一些操作主要保證初始化程序能夠順利的運(yùn)行,因此主要包括關(guān)閉WDT、中斷,配置鎖相環(huán)等。

l配置memory接口

memory接口是確保數(shù)據(jù)訪問正確的基本保障,此處主要配置SFR寄存器中0x48000000開始的memory接口寄存器組,確保每個(gè)bank的位寬、訪問類型(waitable)以及時(shí)序參數(shù)正確。如果沒有特別的要求,一般來說時(shí)序參數(shù)使用默認(rèn)值即可。

l初始化堆棧

ARM 有6種運(yùn)行模式,必須為每一種模式提供獨(dú)立的堆棧空間,在堆棧設(shè)置之前是不能進(jìn)行C函數(shù)的調(diào)用的。arm的堆棧模式是從高地址遞減的,我們可以將堆棧的首地址設(shè)在0x33ff8000處,往低依次為FIQ、IRQ、Abort、Undef、SVC,其中SVC和User模式不予區(qū)分。堆棧大小一般可在頭文件或者當(dāng)前文件中修改。

l運(yùn)行空間的初始化

這段代碼主要完成兩個(gè)功能,一是將RW數(shù)據(jù)搬運(yùn)到RW空間(我們生成ROM鏡像時(shí),RW數(shù)據(jù)是跟在RO數(shù)據(jù)之后的),二是初始化ZI數(shù)據(jù)段。當(dāng)然,這段代碼存在的前提是代碼的運(yùn)行環(huán)境只是標(biāo)準(zhǔn)的兩段式:一段RO空間和一段RW空間;并且在C程序入口時(shí)沒有調(diào)用編譯器的鏈接庫(__main)。后者已經(jīng)提供相應(yīng)的功能,并且支持更加復(fù)雜的運(yùn)行環(huán)境定義(使用SCF文件)。

l__rt_lib_init

在ADS1.2的環(huán)境中,如果在C入口沒有調(diào)用編譯器的鏈接庫(__main),那么在C程序一開始要調(diào)用該函數(shù)以初始化運(yùn)行時(shí)的函數(shù)庫,以保證對(duì)ADS提供的某些庫函數(shù)能夠正常調(diào)用。

lMMU初始化

2410 的MMU支持1級(jí)&2級(jí)地址映射,在我們目前的應(yīng)用中均采用1級(jí)section模式的地址映射,一個(gè)section的大小為1M,也就是說從邏輯地址到物理地址的轉(zhuǎn)變是這樣的一個(gè)過程:一個(gè)32位的地址,高12位決定了該地址在頁表中的index,這個(gè)index的內(nèi)容決定了該邏輯section對(duì)應(yīng)的物理section;低20位決定了該地址在section中的偏移(index)。

因此從0x0~0xffffffff的地址空間總共可以分成0x1000(4K)個(gè)section,頁表中每項(xiàng)的大小為32個(gè)bit,因此頁表的大小為0x4000(16K)。所有示例程序的頁表統(tǒng)一存放在地址0x33ff8000。

每個(gè)頁表項(xiàng)的內(nèi)容如下:

31 20 19 12 11 10 9 8 5 4 32 1 0

Section對(duì)應(yīng)的物理地址NULLAP0Domain1CB10

注:最低兩位(10)是section分頁的標(biāo)識(shí)。

AP:Access Permission,區(qū)分只讀、讀寫、SVC&其它模式。

Domain:每個(gè)section都屬于某個(gè)Domain,一個(gè)有16個(gè)Domain,每個(gè)Domain的屬性由CP15的R3寄存器控制。在所有示例程序中,都只包含兩個(gè)Domain,一個(gè)是SFR地址以下(包括SFR)的空間,可訪問;另一個(gè)是SFR以上的空間,不可訪問。

C、B:這兩位決定了該section的cache&write buffer屬性,這與該段的用途(RO or RW)有密切關(guān)系。不同的用途要做不同的設(shè)置。

CB具體含義

00無cache,無寫緩沖,任何對(duì)memory的讀寫都反映到ASB總線上。對(duì)memory的操作過程中CPU需要等待。

01無cache,有寫緩沖,讀操作直接反映到ASB總線上。寫操作CPU將數(shù)據(jù)寫入到寫緩沖后繼續(xù)運(yùn)行,由寫緩沖進(jìn)行ASB操作。

10有cache,寫通模式,讀操作首先考慮cache hit;寫操作時(shí)直接將數(shù)據(jù)寫入寫緩沖,如果同時(shí)出現(xiàn)cache hit,那么也更新cache。

10有cache,寫回模式,讀操作首先考慮cache hit;寫操作也首先考慮cache,如果hit,則只修改cache,并將cache對(duì)應(yīng)半行的dirty比特置位;如果miss,則寫入寫緩沖,觸發(fā)ASB總線操作。

雖然MMU只是使用了邏輯地址到物理地址的linear transfer(值不改變),但是由于MMU能夠引入cache&write buffer,因此系統(tǒng)性能有很大的提高!

配置時(shí)鐘比、重新設(shè)置PLL

2410內(nèi)部有三個(gè)時(shí)鐘:FCLK、HCLK、PCLK,分別供CPU、AHB總線和

APB總線使用,為了降低功耗,一般都選擇周期比為1:2:4的合理配置。 同時(shí)將PLL配置為運(yùn)行環(huán)境時(shí)鐘,一般都達(dá)到最高202M。

IO初始化

將IO口配置為對(duì)應(yīng)的功能選項(xiàng),同時(shí)一般會(huì)點(diǎn)亮相應(yīng)的LED燈。

中斷初始化

2410的內(nèi)存空間沒有remap的機(jī)制,應(yīng)該中斷入口時(shí)鐘位于零地址。因此中

斷服務(wù)機(jī)制可以描述如下:

首先,不管使用那種啟動(dòng)方式,必須確保一下代碼段位于內(nèi)存的0x0地址:

b ResetHandler

b HandlerUndef ;handler for Undefined mode

b HandlerSWI ;handler for SWI interrupt

b HandlerPabort ;handler for PAbort

b HandlerDabort ;handler for DAbort

b . ;reserved

b HandlerIRQ ;handler for IRQ interrupt

b HandlerFIQ ;handler for FIQ interrupt

除ResetHandler外,其余各項(xiàng)都是由如下的宏定義的一段代碼:

HandlerFIQ HANDLER HandleFIQ

MACRO

$HandlerLabel HANDLER $HandleLabel

$HandlerLabel

sub sp,sp,#4 ;decrement sp(to store jump address)

stmfd sp!,{r0};PUSH the work register to stack

ldr r0,=$HandleLabel ;load the address of HandleXXX to r0

ldr r0,[r0] ;load the contents

str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack

ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR)

MEND

這段代碼的含義是通過堆棧將中斷向量表中的內(nèi)容賦給PC指針(如HandleFIQ是存放著FIQ服務(wù)程序入口地址的地址),自然程序就跳到相應(yīng)的入口地址。

可見,中斷向量表存放的是各個(gè)中斷服務(wù)程序的入口地址,它是用來被加載的,而并不是可執(zhí)行代碼。為了統(tǒng)一,所有示例程序都將中斷向量表放在0x33ffff00開始的地址,并根據(jù)入口地址依次排列。

需要注意的是如果各種模式的服務(wù)程序用C語言定義,那么類型必須用__irq定義,以保證能夠正確返回。

初始化串口

串口統(tǒng)一選用UART0,模式采用115200、1bit STOP、No Parity。[!--empirenews.page--]

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉