新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus PLUS在S3C2410A上移植

嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus PLUS在S3C2410A上移植

作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://butianyuan.cn/article/201609/303703.htm

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

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

Nucleus PLUS啟動(dòng)過程

嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核Nucleus PLUS的啟動(dòng)過程如圖1所示。其中板級(jí)初始化(INT_Initialize)主要是完成中斷向量表、系統(tǒng)堆棧、時(shí)鐘中斷等基本硬件初始化;操作系統(tǒng)初始化(INC_Initialize)主要是完成郵箱、隊(duì)列、管道、信號(hào)量、事件集等軟件組件初始化;應(yīng)用程序初始化 (Application_Initialize (first_available_memory))主要是完成用戶定義的應(yīng)用程序初始化,如創(chuàng)建內(nèi)存池,創(chuàng)建任務(wù)、創(chuàng)建信號(hào)量、創(chuàng)建中斷、編寫用戶應(yīng)用程序等。移植的過程中,需要修改的是板級(jí)初始化(INT_Initialize)這部分內(nèi)容,它是由ARM匯編語言編寫的,下面詳細(xì)敘述。

圖1 Nucleus PLUS 啟動(dòng)過程

Nucleus PLUS移植過程

INT-Reset子程序修改

INT_Reset 是Nucleus PLUS啟動(dòng)時(shí)的程序入口,因?yàn)楦鶕?jù)ARM微處理器的體系結(jié)構(gòu),在系統(tǒng)硬件上電或復(fù)位后,ARM所執(zhí)行的第一條指令在地址0x00000000,即ARM 的復(fù)位異常(Reset)向量地址,所以在這個(gè)地址要放置一個(gè)跳轉(zhuǎn)指令:B INT_Reset 。

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

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

2. 屏蔽FIQ和IRQ中斷,因?yàn)樵谡麄€(gè)系統(tǒng)初始化的過程中,不能被中斷打斷,只有在中斷服務(wù)子程序初始化結(jié)束后,才可以打開中斷,進(jìn)而響應(yīng)中斷。

INT_Reset

MRS R1,CPSR

BIC R1,R1,#MODE_MASK

ORR R1,R1,#SUP_MODE

ORR R1,R1,#LOCKOUT

MSR CPSR_cxsf,R1

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

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

INT_Vectors

LDR PC, INT_Reset_Addr

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, INT_IRQ_Addr

LDR PC, INT_FIQ_Addr

配置存儲(chǔ)器控制器和MMU

MMU(Memory Manage Unit)是存儲(chǔ)器管理單元的縮寫,用來實(shí)現(xiàn)虛擬地址到實(shí)際物理地址的映射。它是ARM的一部分,本身有少量存儲(chǔ)空間放置從虛擬地址到物理地址的匹配表,即轉(zhuǎn)換旁置緩沖區(qū) (TLBs-Translation Lookaside Buffers)。MMU實(shí)現(xiàn)兩個(gè)主要功能,將虛擬地址轉(zhuǎn)換成物理地址和控制存儲(chǔ)器的存取使能。

通過配置S3C2410A的存儲(chǔ)器控制器來初始化S3C2410A目標(biāo)板的外圍存儲(chǔ)器。主要是設(shè)置存儲(chǔ)器類型、總線寬度、信息,重點(diǎn)是對(duì)SDRAM進(jìn)行設(shè)置,如列地址數(shù)、信號(hào)線時(shí)序等。

堆棧初始化

C 和ARM匯編源文件經(jīng)過ARM開發(fā)環(huán)境ADS1.2編譯鏈接后,生成的映像(Image)文件包含RO(只讀代碼、數(shù)據(jù)段)、RW(可讀寫數(shù)據(jù)段)和 ZI(將要初始化為0的段)三個(gè)輸出段。當(dāng)映像文件加載到flash中的時(shí),RO段和RW段在Flash中的位置見圖2(a),其中



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉