<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è) > 嵌入式系統 > 設計應用 > 嵌入式Nucleus PLUS在S3C2410A上移植的實(shí)現

嵌入式Nucleus PLUS在S3C2410A上移植的實(shí)現

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

引言

是美國ATI公司為實(shí)時(shí)性要求較高的嵌入式系統應用設計的操作系統內核。約95%的 代碼用ANSI C語(yǔ)言編寫(xiě),因此,非常便于并能夠支持大多數類(lèi)型的微處理器,如X86、68K、PowerPC、MIPS、ARM等。經(jīng)過(guò)截減編譯后, PLus核心代碼區一般不超過(guò)20KB大小。同時(shí)提供TCP/IP網(wǎng)絡(luò )、圖形界面Grafix、文件系統File等模塊。還有一個(gè)特點(diǎn)就是免費提供源代碼,有利于節省開(kāi)發(fā)費用。

S3c2410A是三星公司推出的基于A(yíng)RM920T內核高性能低功耗16/32位RISC微控制器,內部集成了豐富的系統外圍控制器。配合Nucleus 操作系統可方便地開(kāi)發(fā)出適于手持設備和各種低功耗產(chǎn)品的應用程序,加快新產(chǎn)品的上市時(shí)間。 NUcleus PLUS啟動(dòng)過(guò)程

嵌入式實(shí)時(shí)操作系統內核Nucleus PLus的啟動(dòng)過(guò)程如圖1所示。其中板級初始化(INT_IniTIalize)主要是完成中斷向量表、系統堆棧、時(shí)鐘中斷等基本硬件初始化;

操作系統初始化(INC_Initialize)主要是完成郵箱、隊列、管道、信號量、事件集等軟件組件初始化;應用程序初始化(Application_Initialize(fIRst-available_Memory))主要是完成用戶(hù)定義的應用程序初始化,如創(chuàng )建內存池,創(chuàng )建任務(wù)、創(chuàng )建信號量、創(chuàng )建中斷、編寫(xiě)用戶(hù)應用程序等。的過(guò)程中,需要修改的是板級初始化(INT_Initialize])這部分內容,它是由ARM匯編語(yǔ)言編寫(xiě)的,下面詳細敘述。

NLicleus PLUS過(guò)程

INT-Reset子程序修改

INT-Reset是Nucleus PLUS啟動(dòng)時(shí)的程序入口,因為根據ARM微處理器的體系結構,在系統硬件上電或復位后,ARM所執行的第一條指令在地址0x00000000,即ARM的復位異常(Reset)向量地址,所以在這個(gè)地址要放置一個(gè)跳轉指令:BINT_Reset。

在INT_Reset這個(gè)子程序中放置的是硬件初始化程序,完成兩個(gè)功能:

1.改變ARM工作模式為管理模式(Supervisor Mode),管理模式是ARM提供給操作系統使用的一種保護模式;

2.屏蔽FIQ和IRQ中斷,因為在整個(gè)系統初始化的過(guò)程中,不能被中斷打斷,只有在中斷服務(wù)子程序初始化結束后,才可以打開(kāi)中斷,進(jìn)而響應中斷。

INT_Reset

MRS R1.CPSR

BIC R1,R1,#MODE_MASK

ORR R1,R1,#SUP_MODE

ORR R1,R1,#LOCKOUT

MSR CPSR_cxsf,R1

建立異常向量表和中斷向量表

根據ARM的體系結構,ARM有7種類(lèi)型的異常(Exception),每種異常都有各自入口地址,即異常向量表(Exception Vectors)。異常向量表放置在從0X00000000地址開(kāi)始,連續32字節的空間內。共有56個(gè)中斷源,但有些中斷源共用一個(gè)中斷向量,所以只要求創(chuàng )建包含32個(gè)中斷源的中斷向量表。

INT_Vectors

LDR PC,INT_ReseLAddr

LDR PC,INT_Undef_Addr

LDR PC,INT_Software_Addr

LDR PC,INT_Prefetch_Addr

LDR PC.INT_Data_Addr

LDR PC,INT_Reserved_Addr

LDR PC,INTjRQ_Addr

LDR PC,INT_FIQ_Addr

配置存儲器控制器和MMU

MMU(Memory Manage Unit)是存儲器管理單元的縮寫(xiě),用來(lái)實(shí)現虛擬地址到實(shí)際物理地址的映射。它是ARM的一部分,本身有少量存儲空間放置從虛擬地址到物理地址的匹配表,即轉換旁置緩沖區 (T L B s-T r a n s l a t i 0 nLookaside Buffers)。MMU實(shí)現兩個(gè)主要功能,將虛擬地址轉換成物理地址和控制存儲器的存取使能。

分頻器相關(guān)文章:分頻器原理
電能表相關(guān)文章:電能表原理

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

關(guān)鍵詞: Nucleus PLUS S3C2410A 移植

評論


相關(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>