天天被操天天被操综合网,亚洲黄色一区二区三区性色,国产成人精品日本亚洲11,欧美zozo另类特级,www.黄片视频在线播放,啪啪网站永久免费看,特别一级a免费大片视频网站

現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>地址重映射在S3C4510B系統(tǒng)中的實(shí)現(xiàn)

地址重映射在S3C4510B系統(tǒng)中的實(shí)現(xiàn)

時(shí)間:2023-02-20 22:38:04 電子通信論文 我要投稿
  • 相關(guān)推薦

地址重映射在S3C4510B系統(tǒng)中的實(shí)現(xiàn)

摘要:介紹基于S3C4510B系統(tǒng)的啟動(dòng)流程;詳細(xì)介紹Remap(重映射)的實(shí)現(xiàn)過(guò)程及部分關(guān)鍵代碼,給出啟動(dòng)代碼中異常中斷向量的處理。

    關(guān)鍵詞:Remap 地址重映射 S3C4510B 異常中斷

近年來(lái),隨著32位芯片制造技術(shù)的不斷完善,制造成本不斷降低,國(guó)內(nèi)的32位MCU市場(chǎng)也開始火爆起來(lái)。越來(lái)越多的工程師開始將開發(fā)目光從8位轉(zhuǎn)移到32位微處理器上,基于32位MCU的產(chǎn)品如雨后春筍般層出不窮,應(yīng)用領(lǐng)域涵蓋了掌上設(shè)備、家用電器、網(wǎng)絡(luò)設(shè)備、無(wú)線通信、工業(yè)控制等。在32位微控制芯片領(lǐng)域,ARM架構(gòu)的芯片占了近70%的市場(chǎng)。本文中所用到的處理器正是Samsung公司生產(chǎn)的基于ARM架構(gòu)的S3C4510B。

1 S3C4510B簡(jiǎn)介

S3C4510B是一款基于以太網(wǎng)系統(tǒng)的高性價(jià)比、高性能的16/32位RISC微處理器。芯片部集成了8KB的Cache/SRAM和Ethernet控制器,減少了整個(gè)系統(tǒng)的成本。片外可擴(kuò)展ROM、Flash、SDRAM等存儲(chǔ)芯片,可以移植μClinux等復(fù)雜的操作系統(tǒng)。利用操作系統(tǒng)完善的TCP/IP協(xié)議棧充分發(fā)揮芯片的網(wǎng)絡(luò)功能

。S3C4510B芯片內(nèi)部沒有程序存儲(chǔ)器,所有程序都被存儲(chǔ)在片外擴(kuò)展的ROM和Flash中。開始啟動(dòng)時(shí),存有啟動(dòng)代碼的ROM或Flash將被映射為0x00地址,系統(tǒng)從此開始運(yùn)行。但在實(shí)際應(yīng)用中,為提高系統(tǒng)的實(shí)時(shí)性,加快代碼的執(zhí)行速度,系統(tǒng)啟動(dòng)后程序往往要被搬移到RAM中,因?yàn)镽AM的存取速度要比ROM快得多,這樣大大提升系統(tǒng)的性能。由于S3C4510B芯片中的異常中斷入口地址被固定在0x00開始的8個(gè)字中,系統(tǒng)只能將地址空間重新分配,把RAM映射到0x00地址處,這正是Remap的原因所在。(范文先生網(wǎng)www.gymyzhishaji.com收集整理)

S3C4510B內(nèi)部有幾個(gè)特殊寄存器,用于實(shí)現(xiàn)地址空間和芯片內(nèi)外存儲(chǔ)介質(zhì)的映射。這幾個(gè)寄存器的簡(jiǎn)介如下:

SYSCFG:設(shè)置特殊寄存器的起始地址和片內(nèi)SRAM的起始地址。

EXTDBWTH:設(shè)置各Bank寄存器所映射芯片的數(shù)據(jù)線寬度。

ROMCON0~ROMCON5:設(shè)置系統(tǒng)內(nèi)片擴(kuò)展ROM和Flash的起始和終止地址。

DRAMCON0~DRAMCON3:設(shè)置系統(tǒng)內(nèi)片外擴(kuò)展RAM的起始和終止地址。

S3C4510B芯片內(nèi)特殊寄存器段的物理地址為0x3ff0000,各特殊寄存器的偏移地址詳見S3C4510B的技術(shù)手冊(cè)。

2 S3C4510B系統(tǒng)中Remap的實(shí)現(xiàn)

地址空間的重新分配,與處理器的硬件結(jié)構(gòu)緊密相關(guān)?傮w來(lái)說(shuō),32位系統(tǒng)中的地址重映射機(jī)制可以分為兩種情況:一類是處理器內(nèi)部專門的寄存器可以完成Remap,這樣只需將Remap寄存器的相應(yīng)位置1,由硬件邏輯來(lái)完成地址的重新映射,如Atmel AT91xx系列;另一類沒有專門的Remap控制寄存器,需要重新改寫處理器內(nèi)部用于控制Memory起止地址的Bank寄存器,來(lái)實(shí)現(xiàn)Remap過(guò)程。S3C4510B屬于第二種情況。

2.1 硬件系統(tǒng)結(jié)構(gòu)及地址分配

為例于對(duì)地址重映射的過(guò)程進(jìn)行分析,圖1給出了本人用于測(cè)試的基本S3C4510B的系統(tǒng)硬件結(jié)構(gòu)。文中給出的所有流程及代碼都經(jīng)過(guò)了測(cè)試。

此系統(tǒng)是以Samsung公司給出的測(cè)試板為參考建立的,其中ROM的容量為512KB,8位數(shù)據(jù)總線,Remap前的地址范圍為0x0000000~0x0100000,Remap后的地址范圍為0x1000000~0x1100000;RAM的容量為16MB,32位數(shù)據(jù)總線,Remap前的地址范圍為0x0100000~0x100000,Remap后的地址范圍為0x0000000~0x1000000;Flash的容量為2MB,16位數(shù)據(jù)總線,Remap前后地址不變,均為0x1100000~0x1300000。Remap前后的地址映射關(guān)系如圖2所示。

2.2 系統(tǒng)啟動(dòng)過(guò)程及Remap實(shí)現(xiàn)

系統(tǒng)的地址重映射應(yīng)該在系統(tǒng)的啟動(dòng)中完成,以下是S3C4510B的Remap啟動(dòng)過(guò)程。

①系統(tǒng)特殊寄存器的設(shè)置。主要是配置如上所述的用于實(shí)現(xiàn)地址空間和芯片內(nèi)外存儲(chǔ)介質(zhì)映射的寄存器,在本系統(tǒng)中配置如下:

SYSCFG=0x87ffff90

EXTDBWTH=0x3001

ROMCON0=0x01000060

ROMCON1=0x13044060

DRAMCON0=0x11004060

②初始化系統(tǒng)堆棧。在ARM7的體系結(jié)構(gòu)中共有七種工作模式,不同的模式有不販堆棧指針,互不干擾。各模式對(duì)應(yīng)于不販異常中斷,至于哪些模式的堆棧需要初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理些異常類型。一般來(lái)說(shuō),管理者(SVC)堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ堆棧也必須設(shè)置。有一點(diǎn)需要注意的是,為保證Remap后程序運(yùn)行正常,所有堆棧應(yīng)設(shè)置在RAM的高端地址中。

③初始化I/O口、UART、定時(shí)器、中斷控制器以及系統(tǒng)中所用到的其它資源。在初始化異常向量表或修改異常向量表中的入口地址前,要關(guān)掉所有中斷。

    ④異常向量表的初始化。將民常中煌怛處理程序的入口地址寫入RAM中相應(yīng)的異常向量。必須保證的是,異常向量表絕對(duì)不會(huì)被從ROM搬移到RAM中的代碼和數(shù)據(jù)所覆蓋,為此,異常向量表一般被定義在RAM中的高端地址中。

⑤程序代碼及數(shù)據(jù)的搬移。Remap后,RAM被映射到0x0000的地址空間,ROM則被移到高端地址上。為保證Remap后程序能夠瞠運(yùn)行,ROM中的代碼和數(shù)據(jù)必須地址不變地被移到RAM中。這是Remap成功的關(guān)鍵。兩種途徑可以實(shí)現(xiàn)搬移。

一種是不管實(shí)際的代碼空間有多大,直接將ROM地址空間整個(gè)搬移到RAM中。當(dāng)然,這種方法并不適合在真正的啟動(dòng)代碼中使用,但在做初步的Remap測(cè)試時(shí),可以用來(lái)檢驗(yàn)堆棧及異常中斷的設(shè)置是否合理。

另一種方法較復(fù)雜,它使用了SDT鏈接器ARMLink產(chǎn)生的定位信息,僅把RO風(fēng)吹草動(dòng)的有效代碼和數(shù)據(jù)段到RAM中。ARMLink將編譯后的程序鏈接成ELF文件。映像文件內(nèi)部共有三種輸出段:RO段、RW段和ZI段。這三種輸出段分別包含了只讀代碼及包含在代碼段中的少量數(shù)據(jù)、可讀寫的數(shù)據(jù)、初始化為0的數(shù)據(jù),ARMLink同時(shí)還產(chǎn)生了這三種輸出段的起始和終止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$$Limit、Image$$Linit和Image$$ZI$$Limit?梢栽诔绦蛑惺褂眠@些定位信息。將ROM中的代碼和數(shù)據(jù)搬移到RAM中,其實(shí)現(xiàn)代碼如下:

數(shù)據(jù)定義:

BaseOfROM DCD |Image$$RO$$Base|

TopOfROM DCD |Image$$RO$$Limit|

BaseOfBSS DCD |Image$$RW$$Base|

BaseOfZero DCD |Image$$ZI$$Base|

EndOfBSS DCD |Image$$ZI$$Limit|

源程序:

;將ROM中的程序搬移到RAM中,重映射后的地址不變

adr r0,ResetEntry ;ROM中程序起始地址

mov r3,#(RamBaseAddr<<16) ;RamBaseAddr=0x100

Idr r1,BaseOfROM

Idr r2,TopOfROM

Add r1,r1,r3

Add r2,r2,r3

0

Idmia r0!,{r4-r11}

Stmia r1!,{r4-r11}

Cmp r1,r2

Bcc%B0

;將RW段中預(yù)初始化的變量搬移到RAM中

sub r1,r1,r2

sub r0,r0,r1 ;將r0指向RO段的結(jié)束,即RW段的開始

ldr r1,BaseOfBSS

Idr r2,BaseOfZero

Add r1,r1,3

Add r2,r2,r3

1 ;基于局部標(biāo)號(hào)的相對(duì)跳轉(zhuǎn),PC+偏移地址,產(chǎn)生與位置無(wú)關(guān)的代碼

cmp r1,r2

ldrcc r4,[r0],#4

strcc r4,[r1],#4

bcc %B1

;接著把ZI段搬移到RAM中,并其將初始化為0

mov r0,#0

Idr r2,EndOfBSS

Add r2,r2,r3

2

cmp r1,2

strcc r0,[r1],#4

bcc%B2

⑥地址的重新映射。S3C4510B中的Remap過(guò)程其實(shí)很簡(jiǎn)單,只需重新設(shè)置ROMCON0~ROMCON5和DRAMCON0~DRAMCON3。在本系統(tǒng)中只需重新設(shè)置ROMCON0和DRAMCON0。

源代碼:

;/*內(nèi)存控制寄存器重新設(shè)置-存儲(chǔ)空間重新映射地址空間*/

EXPORT RemapMemory

RemapMemory

mov r12,r14

adr r0,RemapMem

ldmia r0,{r1-r11}

ldr r0,=ROMCON0 ;ROMCON0為Bank寄存器的起始地址

stmia r0,{r1-r11}

bl ExceptionTalbeInit ;中斷向量表重新初始化

mov pc,r12

RemapMem

DCD &11040060 ;/*ROMCON0 0x1000000~0x1100000*/

DCD &10000398 ;/*DRACON0 0x0~0x1000000*/

⑦進(jìn)入C代碼空間,開始主程序的運(yùn)行。此時(shí)代碼應(yīng)該運(yùn)行于RAM中。

    上面的步驟可以根據(jù)實(shí)際需要進(jìn)行適當(dāng)?shù)奶砑踊騽h節(jié)。值得注意的是:匯編生成的代碼應(yīng)該是與位置無(wú)關(guān)的代碼,即代碼在運(yùn)行期間可以被映射到不同的地址空間,其中的跳轉(zhuǎn)指令都是基于PC寄存器的相對(duì)跳轉(zhuǎn)指令。基于PC的標(biāo)號(hào)是位于目標(biāo)指令前或者程序中數(shù)據(jù)定義偽操作前的標(biāo)號(hào),這種符號(hào)在匯編時(shí)將被處理成PC值加上或減去一個(gè)數(shù)字常量。

3 異常中斷的處理

在Remap的啟動(dòng)代碼中,需要特別注意的是異常中斷的處理。在S3C4510B中,異常中斷的入口地址是固定的,按表1次序排列。

表1 

異常類型 工作模式 正常地址 復(fù)位 管理 0x00000000 未定義指令 未定義 0x00000004 軟件中斷(SWI) 管理 0x00000008 預(yù)取中止 中止 0x0000000 數(shù)據(jù)中止 中止 0x00000010 預(yù)留 - 0x00000014 IRQ(中斷) IRQ 0x00000018 FIQ(快速中斷) FIQ 0x0000001

地址重新映射之后,入口地址被映射到RAM中,中斷處理代碼也被搬移到RAM地址空是。此時(shí),中斷響應(yīng)和中斷處理的速度都將大大加快,這將有利于提高整個(gè)系統(tǒng)的實(shí)時(shí)性。異常中斷向量表的設(shè)計(jì)結(jié)構(gòu)如圖3所示。

下面是各部分的源代碼(以IRQ異常中斷為例)。

異常向量表的定義:(系統(tǒng)初始化時(shí),將異常處理代碼入口地址寫入異常中的向量表)

_RAM_END_ADDR EQU 0x01000000 ;重映射后RAM的終止地址

MAP (_RAM_END_ADDR-0x100)

SYS_RST_VECTOR # 4

UDF_INS_VECTOR # 4

SWI_SVC_VECTOR # 4

INS_ABT_VECTOR # 4

DAT_ABT_VECTOR # 4

RESERVED_VECTOR # 4

IRQ_SVC_VECTOR # 4

FIQ_SVC_VECTOR # 4

異常初始化代碼:

b IRQ_SVC_HANDLER ;0x18

IRQ_SVC_HANDLER

SUB sp,sp,#4 ;滿遞減堆棧

STMFD sp!,{r0}

LDR r0,=IRQ_SVC_VECTOR ;讀取中斷向量,

;IRQ_SVC_VECTOR=SystemrqHandle

LDR r0,[r0]

STR r0,[sp,#4]

LDMFD sp!,{r0,pc};跳轉(zhuǎn)到異常中斷處理代碼入口

異常處理入口代碼:

SystemIrqHandler

IMPORT ISR_IrqHandler

STMFD sp!,{r0-r12,lr}

BL ISR_IrqHandler ;跳轉(zhuǎn)到C代碼中異常中斷處理程序ISR_IrqHandler

LDMFD sp!,{r0-r12,lr}

SUBS pc,lr,#4

在如上的結(jié)構(gòu)中,不管系統(tǒng)是否進(jìn)行了地址的重映射,異常中斷向量都可以在運(yùn)行時(shí)動(dòng)態(tài)改變,大大提高了中斷處理中的靈活性。中斷向量可以在運(yùn)行時(shí)指向不同的異常處理代碼入口。

結(jié)語(yǔ)

面對(duì)實(shí)時(shí)性要求越來(lái)越高的各種應(yīng)用,不管應(yīng)用中有沒有嵌入式操作系統(tǒng),Remap都已經(jīng)成為啟動(dòng)代碼中必不可少的一部分。Remap的實(shí)現(xiàn)對(duì)于操作系統(tǒng)的移植也有重要的意義。Remap決定了系統(tǒng)啟動(dòng)的效率,并對(duì)整個(gè)系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性產(chǎn)生很大影響。因而,對(duì)Remap過(guò)程的理解和設(shè)計(jì),對(duì)于那些嵌入式系統(tǒng)的開發(fā)人員來(lái)說(shuō)是非常重要的,它從一開始就決定了整個(gè)開發(fā)過(guò)程的最終成敗。


【地址重映射在S3C4510B系統(tǒng)中的實(shí)現(xiàn)】相關(guān)文章:

數(shù)字懸浮控制系統(tǒng)中的降噪方法及實(shí)現(xiàn)08-06

ARM7系統(tǒng)中實(shí)現(xiàn)CF卡存儲(chǔ)的文件系統(tǒng)設(shè)計(jì)08-06

路燈照明系統(tǒng)中的組群控制器設(shè)計(jì)與實(shí)現(xiàn)08-06

SPI總線在51系列單片機(jī)系統(tǒng)中的實(shí)現(xiàn)08-06

VxWorks中的地址映射08-06

CDMA2000基站系統(tǒng)中基帶分配卡的設(shè)計(jì)與實(shí)現(xiàn)08-06

單片機(jī)系統(tǒng)中的多任務(wù)多線程機(jī)制的實(shí)現(xiàn)08-06

紅外通訊協(xié)議在嵌入式系統(tǒng)中的實(shí)現(xiàn)08-06

多路異步串行通信系統(tǒng)在光纖陀螺組合中的設(shè)計(jì)與實(shí)現(xiàn)08-06