當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]引言Nucleus PLUS是美國ATI 公司為實時性要求較高的嵌入式系統(tǒng)應用設計的操作系統(tǒng)內核。約95%的Nucleus PLUS代碼用ANSI C語言編寫,因此,非常便于移植并能夠支持大多數(shù)類

引言

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

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

Nucleus PLUS啟動過程

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

 

圖1 Nucleus PLUS 啟動過程

Nucleus PLUS移植過程

INT-Reset子程序修改

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

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

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

2. 屏蔽FIQ和IRQ中斷,因為在整個系統(tǒ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的體系結構,ARM有7種類型的異常(Exception),每種異常都有各自入口地址,即異常向量表(Exception Vectors)。異常向量表放置在從0X00000000地址開始,連續(xù)32字節(jié)的空間內。S3C2410A共有56個中斷源,但有些中斷源共用一個中斷向量,所以只要求創(chuàng)建包含32個中斷源的中斷向量表。

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

配置存儲器控制器和MMU

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

通過配置S3C2410A的存儲器控制器來初始化S3C2410A目標板的外圍存儲器。主要是設置存儲器類型、總線寬度、信息,重點是對SDRAM進行設置,如列地址數(shù)、信號線時序等。

堆棧初始化

C 和ARM匯編源文件經(jīng)過ARM開發(fā)環(huán)境ADS1.2編譯鏈接后,生成的映像(Image)文件包含RO(只讀代碼、數(shù)據(jù)段)、RW(可讀寫數(shù)據(jù)段)和 ZI(將要初始化為0的段)三個輸出段。當映像文件加載到flash中的時,RO段和RW段在Flash中的位置見圖2(a),其中|Image$$RO$$Base|是RO段的開始地址,也是包含RO輸出段的加載和執(zhí)行地址,可以在ARM Linker中設置,即-ro-base的值,從flash啟動時,這個值設置為0x00000000,ZI段不需要加載到flash中。當硬件電路復位后,映像文件中的RW段需要從Flash中拷貝到SDRAM內,同時要將ZI輸出段的內容需要用“0”進行初始化,此時輸出段在存儲區(qū)內的位置見圖 2(b)。|Image$$RW$$Base|是包含RW輸出段的執(zhí)行地址,這個地址值也需要在ARM Linker中設置,即-rw-base的值,一般將-rw-base的值設置到SDRAM的地址范圍內,在這里設置為SDRAM的首地址 0x30000000。在Nucleus PLUS移植的過程中要編寫代碼,完成以上操作過程。

 

圖2 加載和執(zhí)行時存儲區(qū)分布

ARM有7種運行模式分別為:用戶模式(usr)、快速中斷模式(fiq)、外部中斷模式(irq)、管理模式(svc)、數(shù)據(jù)訪問中止模式 (abt)、系統(tǒng)模式(sys)和未定義指令中止模式(und)。在堆棧初始化時,應對S3C2410A的每種運行模式分別設置堆棧,一般堆棧的大小可以設置為4KB。另外還要對HISR(High-Level Interrupt Service Routines)堆棧的起始地址、大小和優(yōu)先級進行設置,它的堆棧大小可設為2KB。

中斷初始化

1. 將Nucleus PLUS異常中斷向量表從ROM中復制到RAM中,即:將地址為0x00000000的異常中斷向量表復制到地址0x33FFFF00處,這樣在中斷響應的過程中就可以從RAM中提取異常中斷向量表,提高中斷的響應速度;

2. 關閉看門狗時鐘,創(chuàng)建所有IRQ中斷的中斷向量表;

3. 清除所有中斷的判斷位。

系統(tǒng)時鐘中斷初始化

因為Timer4是用來作為Nucleus PLUS的系統(tǒng)時鐘的,所以在嵌入式實時操作系統(tǒng)移植的過程中,一定要對它的時鐘中斷進行配置,配置過程如下:

1. 設置S3C2410A的內部定時器Fimert定時器的中斷周期為10ms;

2. 建立Timer4的中斷向量,用Timer4時鐘作為Nucleus PLUS的系統(tǒng)節(jié)拍時鐘;

3. 初始化S3C2410A的MPLL控制寄存器MPLLCON,將S3C2410A的主時鐘FCLK設置為266MHz;

4.設置分頻器寄存器CLKDIVN使HCLK = FCLK/2,PCLK = HCLK/2。

設置系統(tǒng)可用存儲區(qū)的首地址

在板級初始化程序(INT_ Initialize)結束后,系統(tǒng)開始調用操作系統(tǒng)初始化程序(INC_Initialize)。這時需要設置可供用戶使用的存儲器首地址 first_available_memory,令first_available_memory= |Image$$bss$$ZI$$Limit|,其中|Image$$bss$$ZI$$Limit|是ARM鏈接器生成的可執(zhí)行映像文件中初始化為0 段(ZI段)的終止地址。修改后調用程序INC_Initialize(VOID *first_available_memory),即進入操作系統(tǒng)初始化。Nucleus PLUS的移植工作也宣告結束。

結語

本文詳細介紹了Nucleus PLUS在S3C2410A上的移植過程和方法,移植后的代碼在深圳優(yōu)龍科技有限公司的FS2410開發(fā)板上運行正常,可以實現(xiàn)多任務調度、任務間通信和中斷響應。因為移植過程是針對特定的硬件環(huán)境的,所以移植中要采用ARM匯編語言,這是嵌入式操作系統(tǒng)移植的難點。移植的重點是建立中斷向量表、創(chuàng)建操作系統(tǒng)的系統(tǒng)時鐘中斷和設置系統(tǒng)堆棧。本文論述的移植方法對其他嵌入式操作系統(tǒng)在ARM微處理器上的移植過程也有一定的借鑒價值。

參考文獻

1.杜春雷編著.《ARM體系結構與編程》.北京.清華大學出版社.2003.2

2.ARM Limited. ARM920T technical reference manual. 2000

3.Samsung Electronics. S3C2410A RISC Microprocessor Reference Manual.2003

4.Accelerated Technology,Inc.,Nucleus PLUS Reference Manual.2000

5.賀磊.一種嵌入式實時操作系統(tǒng)Nucleus PLUS.電信交換.2001.1

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉