音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

Nucleus操作系統(tǒng)及其在ARM上的移植

作者:ArmRtos 欄目:嵌入式系統(tǒng)
Nucleus操作系統(tǒng)及其在ARM上的移植
本人前段時間完成nuclues在arm7上移植后寫了技術(shù)文檔,以給其它技術(shù)人員培訓(xùn)使用。現(xiàn)拿出部分來與大家分享,希望對欲了解nuclues操作系統(tǒng)的朋友有所幫助。  本文在此大概說說移植和啟動部分,本文參考了其它技術(shù)文檔,涉及到公司產(chǎn)品的地方被刪除或修改或用XXXXX代替,望見諒!

1.1 NucluesPLUS的移植
Nucleus PLUS可用于大多數(shù)流行的處理器。因為Nucleus PLUS主要是用標準C寫的,移植到新的處理器系列相對很直接。這也就意味著用Nucleus PLUS開發(fā)的應(yīng)用程序也具有很高的可移植性。Nucleus對CPU的支持能力比較強,支持當前流行的大多數(shù)RISC、CISC、DSP處理器,比如:80x86(實時、保護模式)、68xxx、PowerPC、i960、MIPS、SH、ARM、ColdFire。Nucleus系統(tǒng)對于不同的處理器,操作系統(tǒng)的源碼大部分是相同的,只有5%的源碼是用匯編寫的跟CPU有關(guān)。如果使用另外的CPU,則只用修改5、6個匯編程序就可以進行移植,但是對于不同系列的處理器,它們的Compiler、Linker、Debugger是不同的(要另外購買),而且編譯預(yù)處理的過程也是不一樣的,這就要投入一部分力量去進行操作系統(tǒng)的移植。當然,這也是Nucleus的一個優(yōu)點,VxWorks和pSOS都沒有源碼,換一個系列的CPU操作系統(tǒng)又要重新購買,實際上他們OS開發(fā)的工作量并沒有多少,但卻造成了用戶的重復(fù)性投資。
依賴于目標處理器的和開發(fā)工具的Nucleus PLUS僅有四個獨立的文件:int.s(在XXXXXX的移植中為XXXXX.s),tct.s,tmt.s和include.h。其中前三個文件通常用匯編編寫,為目標環(huán)境提供底層的基本運行平臺,include.h直接或間接的被系統(tǒng)所有文件包含,該文件包含大量的數(shù)據(jù)結(jié)構(gòu)定義和與開發(fā)工具相關(guān)的信息。下面主要介紹前面三個文件:
int.s負責(zé)底層的初始化和訪問處理器中斷向量表服務(wù)。該文件也包含一些缺省的終端處理服務(wù)函數(shù)。
tct.s(thread CONTROL)負責(zé)在系統(tǒng)和線程之間進行控制權(quán)的轉(zhuǎn)移。線程被定義為Nucleus Plus的任務(wù)或nuclues Plus HISR。這個文件包含在任務(wù)和HISR間進行上下文切換所必須的代碼。該文件也包含處理競爭沖突和任務(wù)信號量處理的所有必須的代碼。
tmt.s(timer management)主要負責(zé)處理Nucleus PLUS的定時中斷,包括定時器中斷處理函數(shù)。在絕大多數(shù)系統(tǒng)移植中定時中斷處理函數(shù)被設(shè)計成為low-overhead下溢方式。
1.2 系統(tǒng)啟動
在int.s 系統(tǒng)低級初始化完成后,調(diào)用函數(shù)INT_Initialize,該函數(shù)首先完成硬件寄存器的配置,包括:存儲器片選(CS0~CS7),系統(tǒng)周期定時器PIT,串行通信控制器的初步配置等。這些硬件的配置跟目標板有關(guān),需要用戶自己用匯編來寫。其次,將系統(tǒng)堆棧指針TCD_System_Stack初始化為堆棧區(qū)stack的頂部,同時在系統(tǒng)內(nèi)存區(qū)sys_memory中拿出TMD_HISR_Stack_Size大小的一片內(nèi)存用作高級中斷服務(wù)程序的堆棧HISR_STACK。
    然后,控制交給INC_Initialize。INC_Initialize首先完成操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的初始化,包括:線程控制、郵箱、隊列、管道、信號量、事件、分區(qū)內(nèi)存、動態(tài)內(nèi)存、定時器、I/O Driver等。其次,調(diào)用Application_Initialize,這一函數(shù)由用戶編寫,完成任務(wù)、消息隊列等的創(chuàng)建、中斷的注冊以及應(yīng)用程序的初始化。當所有的初始化都完成后,INC_Initialize調(diào)用TCT_Schedule開始線程的調(diào)度。

2.2初始化組件(IN)
初始化組件(Initialize)負責(zé)初始化Nucleus PLUS系統(tǒng)。通常有兩個過程,首先初始化和目標板相關(guān)的部分(由INT_Initialze負責(zé)),然后初始化Nuclues PLUS組件(由INC_Initialize負責(zé)),最后進行用戶定義初始化(由Application_Initializef負責(zé))。在此主要介紹這兩個函數(shù)。
INT_Initialize
前面已經(jīng)提到過,該函數(shù)由匯編代碼編寫,主要處理底層和目標板的初始化,然后將控制權(quán)交給與目標無關(guān)的系統(tǒng)初始化INC_Initialize。
該函數(shù)主要完成以下功能:
設(shè)置必須的處理器寄存器,如系統(tǒng)控制寄存器;
初始化向量表;
設(shè)置系統(tǒng)堆棧指針;
設(shè)置定時中斷;
設(shè)置高級中斷服務(wù)的堆棧和優(yōu)先級;
設(shè)置可用存儲器的首地址;
調(diào)用INC_Initialize;

INC_Initialize
這是系統(tǒng)的主初始化函數(shù),該函數(shù)初始化系統(tǒng)的所有組件,然后調(diào)用函數(shù)Application_Initialize進行用戶定義初始化,最后調(diào)用函數(shù)TCT_Schedule開始進行任務(wù)調(diào)度。






* - 本貼最后修改時間:2005-1-25 15:58:47 修改者:ArmRtos

2樓: >>參與討論
MExxg
好東西!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
菜鳥問題,
嵌入式系統(tǒng)是如何入門
緊急求救:USB hsot開發(fā)
不要不屑一顧,幫幫?小程序!錯在那?
這個時鐘中斷服務(wù)程序有什么問題嗎?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號