日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

淺談S3c2410軟件調(diào)試方法(三)

出處:互聯(lián)網(wǎng)    發(fā)布于:2011-08-26 19:40:56

  S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI.S3C2410處理器可運(yùn)行在203MHz.

  2410啟動(dòng)代碼分析

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

  程序入口:

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

  配置memory接口

  memory接口是確保數(shù)據(jù)訪問(wèn)正確的基本保障,此處主要配置SFR寄存器中0x48000000開始的memory接口寄存器組, 確保每個(gè)bank的位寬、訪問(wèn)類型(waitable)以及時(shí)序參數(shù)正確。內(nèi)存是由一群芯片所組成,是計(jì)算機(jī)的記憶單元,內(nèi)存的數(shù)據(jù)存取時(shí)間影響計(jì)算機(jī)的處理速度,內(nèi)存的容量大小及單位價(jià)格則決定計(jì)算機(jī)的系統(tǒng)成本,同時(shí)內(nèi)存決定了計(jì)算機(jī)可同時(shí)執(zhí)行程序的大小與多寡,還有處理數(shù)據(jù)的大小。所以內(nèi)存是就構(gòu)成了計(jì)算機(jī)工作的主要空間,來(lái)儲(chǔ)存立即使用的數(shù)據(jù)。所以在計(jì)算機(jī)的發(fā)展過(guò)程中,大部分時(shí)期皆由內(nèi)存的制造技術(shù)與單位成本所主宰,足見(jiàn)內(nèi)存在計(jì)算機(jī)系統(tǒng)中的重要性。如果沒(méi)有特別的要求,一般來(lái)說(shuō)時(shí)序參數(shù)使用默認(rèn)值即可。

  初始化堆棧

  ARM有6種運(yùn)行模式,必須為每一種模式提供獨(dú)立的堆棧空間,在堆棧設(shè)置之前是不能進(jìn)行C函數(shù)的調(diào)用的。ARM的堆棧模式 是從高地址遞減的,我的所有代碼統(tǒng)一將堆棧的首地址設(shè)在0x33ff8000處,往低依次為FIQ、IRQ、Abort、Undef、SVC,其中SVC和User模式不予區(qū)分。

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

  這段代碼主要完成兩個(gè)功能,一是將RW數(shù)據(jù)搬運(yùn)到RW空間,二是 初始化ZI數(shù)據(jù)段。這段代碼存在的前提是代碼的運(yùn)行環(huán)境只是標(biāo)準(zhǔn)的兩段式:一段RO空間和一段RW空間;并且在C程序

  入口時(shí)沒(méi)有調(diào)用編譯器的鏈接庫(kù)。后者已經(jīng)提供相應(yīng)的功能,并且支持更加復(fù)雜的運(yùn)行環(huán)境定義(使用SCF文件),在ADS1.2的環(huán)境中,如果在C入口沒(méi)有調(diào)用編譯器的鏈接庫(kù)(__main),那么在C程序一開始要調(diào)用該函數(shù)以初始化運(yùn)行時(shí)的函數(shù)庫(kù),以保證對(duì)ADS提供的某些庫(kù)函數(shù)能夠正常調(diào)用。

  MMU初始化

  2410的MMU支持1級(jí)&2級(jí)地址映射,在我們目前大部分應(yīng)用中均采用1級(jí)section模式的地址映射,一個(gè)section的大小為1M,也就是說(shuō)從邏輯地址到物理地址的轉(zhuǎn)變是這樣的一個(gè)過(guò)程:

  任何時(shí)候,計(jì)算機(jī)上都存在一個(gè)程序能夠產(chǎn)生的地址集合,我們稱之為地址范圍。這個(gè)范圍的大小由CPU的位數(shù)決定,例如一個(gè)32位的CPU,它的地址范圍是0~0xFFFFFFFF (4G),而對(duì)于一個(gè)64位的CPU,它的地址范圍為0~0xFFFFFFFFFFFFFFFF (64T)。這個(gè)范圍就是我們的程序能夠產(chǎn)生的地址范圍,我們把這個(gè)地址范圍稱為虛擬地址空間,該空間中的某一個(gè)地址我們稱之為虛擬地址。與虛擬地址空間和虛擬地址相對(duì)應(yīng)的則是物理地址空間和物理地址,大多數(shù)時(shí)候我們的系統(tǒng)所具備的物理地址空間只是虛擬地址空間的一個(gè)子集。

  一個(gè)32位的地址,高12位決定了該地址在頁(yè)表中的index,這個(gè)index的內(nèi)容決定了該邏輯section對(duì)應(yīng)的物理section; 低20位決定了該地址在section中的偏移(index)。

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

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

  bit: 31 20 19 12 11 10 9 8 5 4 3 2 1 0

  content: Section對(duì)應(yīng)的物理地址 NULL AP 0 Domain 1 C B 1 0

  兩位(10)是section分頁(yè)的標(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地址以下的空間,可訪問(wèn); 另一個(gè)是SFR以上的空間,不可訪問(wèn)。

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

  C B 具體含義

  0 0 無(wú)cache,無(wú)寫緩沖,任何對(duì)memory的讀寫都反映到ASB總線上。

  對(duì) memory 的操作過(guò)程中CPU需要等待。

  0 1 無(wú)cache,有寫緩沖,讀操作直接反映到ASB總線上。寫操作CPU將數(shù)據(jù)寫

  入 到寫緩沖后繼續(xù)運(yùn)行,由寫緩沖進(jìn)行ASB操作。

  1 0 有cache,寫通模式,讀操作首先考慮cache hit;寫操作時(shí)直接將數(shù)據(jù)寫入

  寫緩沖,如果同時(shí)出現(xiàn)cache hit,那么也更新cache.

  1 1 有cache,寫回模式,讀操作首先考慮cache hit;寫操作也首先考慮cache,

  如果hit,則只修改cache,并將cache對(duì)應(yīng)半行的dirty比特置位;如果miss,

  則寫入寫緩沖,觸發(fā)ASB總線操作。

  在我的程序中內(nèi)存空間的分配統(tǒng)一采用了文末的MEMORY圖。雖然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的合理配置。

  IO初始化

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

  中斷初始化

  2410的內(nèi)存空間沒(mé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

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

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



  

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!