nucleusplus源碼
1. nucluse 是什麼東西啊
NucleusPLUS嵌入式操作系統是目前最受歡迎的操作系統NucleusPLUS是為實時嵌入式應用而設計的一個搶先式多任務操作系統內核,其95%的代碼是用ANSIC寫成的,因此非常便於移植並能夠支持大多數類型的處理器。從實現角度來看,NucleusPLUS是一組C函數庫,應用程序代碼與核心函數庫連接在一起,生成一個目標代碼,下載到目標板的RAM中或直接燒錄到目標板的ROM中執行。在典型的目標環境中,NucleusPLUS核心代碼區一般不超過20K位元組大小。NucleusPLUS採用了軟體組件的方法。每個組件具有單一而明確的目的,通常由幾個C及匯編語言模塊構成,提供清晰的外部介面,對組件的引用就是通過這些介面完成的。除了少數一些特殊情況外,不允許從外部對組件內的全局進行訪問。由於採用了軟體組件的方法,NucleusPLUS各個組件非常易於替換和復用。NucleusPLUS的組件包括任務控制、內存管理、任務間通信、任務的同步與互斥、中斷管理、定時器及I/O驅動等。Nucleus具有如下特點:1、提供源代碼NucleusPLUS提供注釋嚴格的C源級代碼給每一個用戶。這樣,用戶能夠深入地了解底層內核的運作方式,並可根據自己的特殊要求刪減或改動系統軟體,這對軟體的規范化管理及系統軟體的測試都有極大的幫助。另外,由於提供了RTOS的源級代碼,用戶不但可以進行RTOS的學習和研究,而且產品在量產時也不必支付License,可以省去大量的費用。對於軍方來說,由於提供了源代碼,用戶完全可以控制內核而不必擔心操作系統中可能會存在異常任務導致系統崩潰。2、性價比高NucleusPLUS由於採用了先進的微內核(Micro-kernel)技術,因而在優先順序安排,任務調度,任務切換等各個方面都有相當大的優勢。另外,對C++語言的全面支持又使得NucleusPLUS的Kernel成為名副其實的面向對象的實時操作系統內核。然而,其價格卻比較合理。所以,容易被廣大的研發單位接受。3、易學易用NucleusPLUS能夠結合Paradigm,SDS以及ATI自己的多任務調試器組成功能強大的集成開發環境,配合相應的編譯器和動態聯結庫以及各類底層驅動軟體,用戶可以輕松地進行RTOS的開發和調試。另外,由於這些集成開發環境(IDE)為所有的開發工程師所熟悉,因而,容易學習和使用。4、功能模塊豐富NucleusPLUS除提供功能強大的內核操作系統外,還提供種類豐富的功能模塊。例如用於通訊系統的局域和廣域網路模塊,支持圖形應用的實時化Windows模塊,支持Internet網的WEB產品模塊,工控機實時BIOS模塊,圖形化用戶介面以及應用軟體性能分析模塊等。用戶可以根據自己的應用來選擇不同的應用模塊。NucleusPLUS支持的CPU類型:NucleusPLUS的RTOS內核可支持如下類型的CPU:x86,68xxx,68HCxx,NECV25,ColdFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7,StrongARM,H8/300H,SH1/2/3,PowerPC,V8xx,Tricore,Mcore,PanasonicMN10200,Tricore,Mcore等。可以說NUCLEUS+是支持CPU類型最豐富的實時多任務操作系統。針對各種嵌入式應用,NucleusPLUS還提供相應的網路協議(如TCP/IP,SNMP等),以滿足用戶對通訊系統的開發要求。另外,可重入的文件系統、可重入的C函數庫以及圖形化界面等也給開發者提供了方便。針對不同的CPU類型,Nucleus還提供編譯器、動態連接庫、多任務調試器等相應的工具來配置用戶的開發環境。值得提出的是ATI公司最近還發表了基於MicrosoftDevelopersStudio的嵌入式集成開發環境-NUCLEUSEDE。從而率先將嵌入式開發工具與Microsoft的強大開發環境結合起來,提供給工程師們強大的開發手段。三、源代碼帶來的優勢眾所周知,Nucleus實時多任務操作系統提供給用戶源代碼。這除商務上給用戶帶來巨大益處(免交Royalty)外,還在技術方面給用戶極大的方便,即無需編寫和調試BSP,從而達到易學易用的目的,加速產品上市。對RTOS有一定知識的工程師一定清楚,使用RTOS最大的障礙在於編寫和調試BSP。大家知道,在調試目標系統的軟體之前,必須將目標與主機連接起來並建立通訊。為此,我們可以編寫一段監控程序(Monitor)。然而,如果要調試基於RTOS內核的程序,主機上的調試器(Debugger)除要與目標建立通訊外,更重要的是必須識別RTOS的任務,這樣才能進行任務級調試(Task-awareDebugger)。因此,只有Monitor是不夠的。如果我們選用的RTOS不提供源代碼,那麼,主機上的調試器(Debugger)就只有通過用戶編寫的BSP來了解Kernel在現有硬體平台上對各個任務進行調度的情況。顯然,編寫BSP必須對CPU目標系統的硬體以及應用軟體等有全面而深入的了解。一般說來,對於一個有一定硬體開發經驗的工程師來說,編寫一個新的BSP要花的平均時間為兩個月左右。這對於一個新手來說可是比較困難的。對於編寫BSP的工程師來說,另外一個更大的挑戰就是如何調試BSP,即如何驗證所編寫的BSP是否正確。通常剛剛焊接安裝好的PCB板中,硬體或軟體的故障(Bugs)是比較多的。甚至更常見的是CPU部分都沒有運作正常。有時時序錯誤和匯流排錯誤都還存在。在您把寫好的BSP燒入EPROM(或FLASH)中試圖將目標與主機建立聯系時,您幾乎100%地會發現根本無法通訊,眼前一團漆黑,不知是軟體有錯誤還是硬體不運轉。BSP在正常運行嗎?不得而知。在焦急和摸索中您可能發現幾個月已悄然而過。對於早期的實時操作系統來說,BSP是必由之路。然而,新一代的RTOS-NucleusPLUS則避免了BSP帶來的痛苦過程。因為Nucleus的調試是基於全新的動態連接庫(DLL)。用戶只須通過監控程序(Monitor)或者BDM調試口(或者JTAG調試口)建立目標系統(Target)與主機(Host)之間的通訊,並給主機上的Debugger初始化特性中加入Nucleus的動態連接庫(DLLs),這時,調試器就能夠自動地去識別運行在目標系統中的Nucleus內核和各個應用任務,從而完成任務級調試。上述的動態連接庫(DLLs)是由RTOS廠商和Debugger廠商合作完成的,用戶無須自行編寫。因此,Nucleus的用戶只需要將精力放在基於Nucleus的編程工作中。對於一個新手,往往經過一天到兩天的學習和培訓,就可以投入到應用程序編制工作中去,無需花大量的時間去研究CPU,特定的硬體等。另外,由於有了源程序,用戶在調試程序時可以清楚地通過STEPINTO命令,追蹤到RTOS的內層中去,觀看和學習Kernel對任務的管理和調度機制。對於有志研究RTOS深層技術的工程師來說極為方便。對於Motorola68K和PowerPC,用戶可以利用GreenHill公司的Mutil調試器或TRACE-ICD來完成NucleusPLUS的調試;對於ARM和StrongARM,用戶可以利用ARM公司的SDT251調試器或TRACE-ICD來完成NucleusPLUS的調試;對於Intelx86實模式,用戶可以利用Paradigm公司的調試器及其DLL來進行任務級調試;對於Intelx86保護模式則可以利用SSI公司Softprobe調試器和SSIDLL來調試;對於i960,SH3/4,ARM6/7,MIPS等晶元,則可以使用ATI公司自己的UDB調試器來進行任務的調試。結論:動態連接庫(DLL)是在RTOS工具中新出現的應用趨勢,通過這種方式,用戶可以免去BSP帶來的麻煩,靈活方便地進行開發和調試,大大加速開發進度。Nucleus實時操作系統提供源代碼,支持豐富的CPU種類,配合各類DLL動態連接庫,為使用和研究RTOS技術的工程帶來極大的利益。
進行ARM系列的開發需要大量的設備投入,另外如果做比較大型的系統,還必須要操作系統,購買一個好的操作系統也是需要幾十萬元。ARM的應用層研發可以建立在C,C++及其他的大多數開發語言上,這對於軟體公司來說是很方便的,只要准備好硬體及操作系統,其他的工作就可以分模塊給N個人來進行。而對於底層的東西,ARM公司也可以有比較大力度的支持,因此如果需要用ARM系列開發高端產品,可行性是比較高的,開發周期也不會很長。當然,對於arm晶元,還是有一定的限制,比如沒有除法指令,這樣在編程時就要盡量避免用除法,否則會帶來程序代碼的增加和執行速度的降低。一般說,除法還是可以通過移位和乘法來代替。
2. 誰知道koobeee69是什麼系統。。。
NUCLEUS 系統
NucleusPLUS是為實時嵌入式應用而設計的一個搶先式多任務操作系統內核,其95%的代碼是用ANSIC寫成的,因此非常便於移植並能夠支持大多數類型的處理器。從實現角度來看,NucleusPLUS是一組C函數庫,應用程序代碼與核心函數庫連接在一起,生成一個目標代碼,下載到目標板的RAM中或直接燒錄到目標板的ROM中執行。
3. 如何學習 nucleus os
內容:
一、nucleus plus特點:
1.內核採用微內核的設計,方便移植,資料寫著更reliable,但是我不這么認為,與linux相比,以ARM平台為例,NU只用到了SVC mode,內核與用戶任務都運行在同一個狀態下,也就是說所有的task都擁有訪問任何資源的許可權,這樣很reliable么?
2.real-time OS,NU是一個軟實時操作系統(VxWorks是硬實時),thread control component支持多任務以及任務的搶占,對於中斷的處理定義了兩種服務方式,LISR和HISR,這個與linux中的上、下半部機制類似,linux中的下半部是通過軟中斷來實現的,NU的HISR只是作為一種優先順序總是高於task的任務出現。
3.NU是以library的方式應用的,通過寫自己的app task與裁剪後的NU內核及組件鏈接起來,NU並沒有CLI
二、組件
1.IN component
初始化組件由三個部分組成,硬體在reset後首先進入INT_initialize(),進行板級的相關初始化,首先設置SVC mode,關中斷,然後將內核從rom中拷貝至ram中,建立bss段,依次建立sys stack, irq stack和fiq stack,最後初始化timer,建立timer HISR的棧空間,看了一下2410平台的代碼,一個tick大概是15.8ms,完成板級的初始化後就進入了INC_initialize,初始化各個組件,其中包括Application initialize,create task和HISR,最後將控制權交給schele,主要看了一下RAM中地址空間的安排
|timer HISR stack = 1024|
|FIQ stack = 512|
|IRQ stack = 1024|
|SVC stack = 1024|
|.bss|
|.data|
|.text|
其中SVC stack的大小與中斷源的個數相關,nested irq發生時,irq_context保存在SVC stack中,IRQ的stack只是做了臨時棧的作用。
2.thread control component
TC組件是NU內核的最重要組成部分,主要涵蓋了調度、中斷、任務的相關操作、鎖、時鍾幾個方面,下面分別介紹。
調度(schele)
NU中的線程類型(在同一個地址空間內)有兩種,HISR和task,HISR可以理解為一種優先順序較高的task,但又不是task,HISR優先順序高於task的實現方式就是schle時,先去查看當前是否有active的HISR,再去查看task。task有suspend、ready、finished和terminated四種狀態,而HISR只有executing和no-active這兩種狀態。
每一個task都有一個線程式控制制的數據結構(TCB thread control block),其中包括了task的優先順序、狀態、時間片、task棧、protect信息、signal操作的標志位和signal_handler等,task在創建時初始化這些信息,將task掛到一個create_list上,初始設定task為pure_suspend,如果設定auto start,調用resume_task()喚醒task,這里有個細節,如果在application initialize中create_task(),則task不會自動運行,因為初始化還未完成,控制權還沒有交給schele,無法調度task。task被喚醒後狀態改變為ready,並掛在一個TCD_Priority_List[256]上,數組的每個元素是一個指向TCB環形雙向鏈表的指針,根據task的tc_priority找到對應優先順序的TCB head pointer。
每一個HISR都有一個HISR控制的數據結構(HCB HISR control block),其中只有優先順序,HISR棧和HISR entry信息,因此HISR是不可以suspend,同時也沒有time slice以及signal的相關操作,一般情況下當發生了中斷後,HISR被activate,schele就會調度HISR運行,期間如果不發生中斷,HISR的執行是不會被打斷的,HISR的優先順序只有0、1、2,timer的HISR優先順序為2,也就是說由外部中斷激活的HISR很難被搶占的,只有更高優先順序的中斷HISR才可以。與task不同,被激活的HISR使用head_list和tail_list將HCB掛在一個單項的鏈表上,因為相同優先順序的HISR不會搶占對方,因此不需要雙向鏈表,使用兩個指針目的是加快HISR執行的速度。
一個實時操作系統的核心就是對於任務的調度,NU的調度策略是time slice和round robin的演算法,
調度的部分主要有三個函數control_to_system()用於保存上下文,建立solicited stack,關中斷,關system time slice,並重置task的time slice為預設值,將sp更新為system_stack_pointer,調用schele(),調度的過程是非常簡單的查詢,就是查看兩個全局的變數,TCD_Execute_HISR和TCD_Execute_Task,schele部分的關鍵是打開了中斷,不然如果當前沒有ready的task或是被激活的HISR,則shele死循環下去,查詢到下一個應該執行的線程後跳轉至control_to_thread(),在這里重新開啟system time slice,然後將線程的tc_stack_ptr加入到sp中,切換至線程的棧中,依次pop出來,即完成了任務調度。
任務的切換主要是上下文的切換,也就是task棧的切換,函數的調用會保存部分regs和返回地址,這些動作都是編譯器來完成的,而OS中的任務切換是運行時(runtime)的一種狀態變化,因此編譯器也無能為力,所以對於上下文的保存需要代碼來實現。
任務的搶占是非同步的因此必須要通過中斷來實現,一般每次timer的中斷決定當前的task的slice time是否expired,然後設置TCT_Set_Execute_Task為相同優先順序的其他task或更高優先順序的task;高優先順序的task搶占低優先順序的task,一般是外部中斷觸發,在HISR中resume_task()喚醒高優先順序的task,然後schele到高優先順序的task中,因為timer的HISR是在系統初始化就已經注冊的,只是執行timeout和time slice超時後的操作,並沒有執行resume_task的動作。
NU中的stack有兩種solicited stack和interrupt stack,solicited stack是一種minmum stack,而interrupt stack是對當前所有寄存器全部保存,TCB中的minimum stack size = 申請得到stack size - solicited stack(在arm mode下佔44位元組,thumb mode下佔48位元組),thumb標志用來記錄上下文保存時的ARM的工作模式,c代碼編譯為thumb模式,這樣可以減小code size,提高代碼密度,assembly代碼編譯為arm模式提升代碼的效率,NU中內核的代碼不多,主要是assembly代碼。stack的類型與其中PC指向的shell無關,interrupt stack保存的是task或是HISR在執行的過程中被中斷時的現場,solicited stack建立的地方包括 control_to_system()、schele_protect()和send_signals()發送給佔有protect資源的task的情況,HISR_Shell()執行完後會建立solicited stack,再跳轉至schele。
(Lower Address) Stack Top -> 1 (Interrupt stack type)
CPSR Saved CPSR
r0 Saved r0
r1 Saved r1
r2 Saved r2
r3 Saved r3
r4 Saved r4
r5 Saved r5
r6 Saved r6
r7 Saved r7
r8 Saved r8
r9 Saved r9
r10 Saved r10
r11 Saved r11
r12 Saved r12
sp Saved sp
lr Saved lr
(Higher Address) Stack Bottom-> pc Saved pc
(Lower Address) Stack Top -> 0 (Solicited stack type)
!!FOR THUMB ONLY!! 0/0x20 Saved state mask
r4 Saved r4
r5 Saved r5
r6 Saved r6
r7 Saved r7
r8 Saved r8
r9 Saved r9
r10 Saved r10
r11 Saved r11
r12 Saved r12
(Higher Address) Stack Bottom-> pc Saved pc
一個簡單的例子說明stack的情況,首先是一個task在ready(executing)的狀態下,而且time slice超時了,timer中斷發生後,保存task上下文interrupt_contex_save(),在task的tc_stack_ptr指向的地方建立中斷棧
taskA |interrupt stack|___tc_stack_ptr 棧頂端是pc=lr-4
ARM對於中斷的判定發生在當前指令完成execute時,同時pipeline的原因pc=pc+8,入棧時就把lr-4首先放在stack的最高端(high)。
timer的LISR完成後激活了HISR,執行TCC_Time_slice()將當前task移到相同優先順序的尾端,並且設置下一個要執行的task,HISR在棧頂端保存的是這個HISR_shell的入口地址,因為task的執行完就finished,HISR是可重入的
HISR |solicited stack| 棧頂端是HISR_shell_entry
中斷(interrupt)
前面已經提及了中斷的基本操作,這里就寫一些代碼路徑的細節,中斷的執行主要是兩個部分LISR和HISR,分成兩個部分的目的就是將關中斷的時間最小化,並且在LISR中開中斷允許中斷的嵌套,以及建立中斷優先順序,都可以減少中斷的延遲,保證OS的實時性。
NU的中斷模式是可重入的中斷處理方式,也就是基於中斷優先順序和嵌套的模式,中斷的嵌套在處理的過程中應對lr_irq_mode寄存器進行保存,因為高優先順序的中斷發生時會覆蓋掉低優先順序中斷的r14和spsr,因此要利用系統的棧來保存中斷棧。
NU對於中斷上下文的保存具體操作如下:
(1)在中斷發生後執行的入口函數INT_IRQ()中,將r0-r4保存至irq的棧中
(2)查找到對應的interrupt_shell(),clear中斷源,更新全局的中斷計數器,然後進行interrupt_contex_save
(3)首先利用r1,r2,r3保存irq模式下的sp,lr,spsr,這里sp是用來切換至系統棧後拷貝lr和spsr的,這里保存lr和spsr是目的是task被搶占後,當再次schele時可以返回task之前的狀態。
(4)切換至SVC模式,如果是非嵌套的中斷則保存上下文至task stack中,將irq模式下的lr作為頂端PC的返回值入棧,將SVC模式下的r6-r14入棧,將irq模式下的sp保存至r4中入棧,最後將保存在irq_stack中的r0-r4入棧
(5)如果是嵌套中斷,中斷的嵌套發生在LISR中,在執行LISR時已經切換至system stack,因此嵌套中斷要將中斷的上下文保存至system stack中,與task stack中interrupt stack相比只是少了棧頂用來標記嵌套的標志(1 not nested)
(6)有一個分支判斷,就是如果當前線程是空,即TCD_Current_Thread == NULL,表明當前是schele中,因為初始化線程是關中斷的,這樣就不為schele線程建立棧幀,因為schele不需要保存上下文,在restore中斷上下文時直接跳轉至schele。
中斷上下文的恢復
全局的中斷計數器INT_Count是否為0來判定當前出棧的信息,如果是嵌套則返回LISR中,否則切換至system stack執行schele
timer
timer與中斷緊密相關,其實timer也是中斷的一種,只是發生中斷的頻率較高,且作用重大,一個實時操作系統,時間是非常重要的一部分,NU中的timer主要有四個作用:
(1)維護系統時鍾 TMD_system_clock
(2)task的time slice
(3)task的suspend timeout timer
(4)application timer
其中(3)(4)共用一種機制,一個全局的時間軸TMD_timer,timeout timer和app timer都建立在一個TM_TCB的數據結構上,通過tm_remaining_time來表徵當前timer的剩餘時間,例如當前有timer_list上有三個TM_TCB,依次是Ta = 5,Tb = 7, Tc = 20,那麼建立的鏈表上剩餘時間依次是5,2,8,如果現在要加入一個新的timer根據timer值插入至合適的位置,如果插入的timer為13,則安排在Tb後面,剩餘時間為1,後面的8改為7,當發生了timer expired,則觸發timer_HISR,如果是app timer則執行timer callback,如果是task timeout timer,則執行TCC_Task_Timeout喚醒task。
(2)的實現也是依賴於全局的time slice時間軸,每一個task在執行時都會將自己的時間片信息更新至全局的時間軸上,當一個task的time slice執行完在timer HISR中調用TCC_task_Timeout將當前的task放在相同優先順序list的最尾端,並設置下一個最高優先順序的任務。task在執行的過程中只有被中斷後time slice會保存下來,其他讓出處理器的情況都會將time slice更新為預設值。
protect
protect與linux的鎖機制類似,互斥訪問,利用開關中斷來實現,並且擁有protect的task是不可以suspend的,必須要將protect釋放後才可以掛起,當一個優先順序較低的task佔有protect資源,如果被搶占,一個高優先順序的task或HISR在請求protect資源時會執行TCC_schele_protect()讓出處理器給低優先順序的task執行,直到低優先順序的task執行unprotect()為止,此時task或HISR建立的是solicited stack,同時在control_to_thread前開關中斷一次,這樣可以減少一次上下文的切換。NU中常用到的是system_protect,它就是一把大鎖,保護內核中所有全局數據結構的順序訪問,粒度很大。
LISR中不可以請求protect資源,因為LISR是中斷task後執行,如果task佔有protect資源,這時LISR又去請求protect資源,會發生死鎖,因為LISR讓出處理器後,schele沒辦法再次調度到LISR執行,則發生死鎖錯誤,因此在LISR中除了activate_HISR()以外不可以使用system call,例如resume_task等等,這寫系統調用都會請求protect資源。
對於protect的請求按照一定的順序可以防止死鎖,NU的源碼中一般將system_protect資源的請求放在後面,其他如DM_protect先請求。
4. 誰能給我介紹下Nucleus操作系統
NucleusPLUS是為實時嵌入式應用而設計的一個搶先式多任務操作系統內核,其95%的代碼是用ANSIC寫成的,因此非常便於移植並能夠支持大多數類型的處理器。從實現角度來看,NucleusPLUS是一組C函數庫,應用程序代碼與核心函數庫連接在一起,生成一個目標代碼,下載到目標板的RAM中或直接燒錄到目標板的ROM中執行。
簡介
NucleusPLUS是目前最受歡迎的嵌入式操作系統之一。
性能
在典型的目標環境中,NucleusPLUS核心代碼區一般不超過20K位元組大小。NucleusPLUS採用了軟體組件的方法。每個組件具有單一而明確的目的,通常由幾個C及匯編語言模塊構成,提供清晰的外部介面,對組件的引用就是通過這些介面完成的。除了少數一些特殊情況外,不允許從外部對組件內的全局進行訪問。由於採用了軟體組件的方法,NucleusPLUS各個組件非常易於替換和復用。NucleusPLUS的組件包括任務控制、內存管理、任務間通信、任務的同步與互斥、中斷管理、定時器及I/O驅動等。
編輯本段特點
Nucleus具有如下特點:
提供源代碼
1、提供源代碼 NucleusPLUS提供注釋嚴格的C源級代碼給每一個用戶。這樣,用戶能夠深入地了解底層內核的運作方式,並可根據自己的特殊要求刪減或改動系統軟體,這對軟體的規范化管理及系統軟體的測試都有極大的幫助。另外,由於提供了RTOS的源級代碼,用戶不但可以進行RTOS的學習和研究,而且產品在量產時也不必支付License,可以省去大量的費用。對於軍方來說,由於提供了源代碼,用戶完全可以控制內核而不必擔心操作系統中可能會存在異常任務導致系統崩潰。
性價比高
2、性價比高 NucleusPLUS由於採用了先進的微內核(Micro-kernel)技術,因而在優先順序安排,任務調度,任務切換等各個方面都有相當大的優勢。另外,對C++語言的全面支持又使得NucleusPLUS的Kernel成為名副其實的面向對象的實時操作系統內核。然而,其價格卻比較合理。所以,容易被廣大的研發單位接受。
易學易用
3、易學易用 NucleusPLUS能夠結合Paradigm,SDS以及ATI自己的多任務調試器組成功能強大的集成開發環境,配合相應的編譯器和動態聯結庫以及各類底層驅動軟體,用戶可以輕松地進行RTOS的開發和調試。另外,由於這些集成開發環境(IDE)為所有的開發工程師所熟悉,因而,容易學習和使用。
功能模塊豐富
4、功能模塊豐富 NucleusPLUS除提供功能強大的內核操作系統外,還提供種類豐富的功能模塊。例如用於通訊系統的局域和廣域網路模塊,支持圖形應用的實時化Windows模塊,支持Internet網的WEB產品模塊,工控機實時BIOS模塊,圖形化用戶介面以及應用軟體性能分析模塊等。用戶可以根據自己的應用來選擇不同的應用模塊。
5. MTK手機測試系統後開不了機,高手進。。。。
MTK平台的操作系統為nucleus。Nucleus Plus是美國源代碼操作系統商ATI公司推出的新一代嵌入式操作系統,屬於搶先式實時多任務操作系統內核, 95%的代碼使用ANSI C編寫,非常便於移植於各種處理器家族。從實現的角度講,不同於傳統嵌入式開發,Nucleus Plus是以函數庫的形式鏈接到目標應用程序中,形成可執行目標代碼,下載到目標板上或燒到ROM/FLASH ROM 中去執行。Nucleus Plus內核在典型的CISC體系結構上占據大約20k空間,而在典型的RISC體系結構上占據空間為40k左右,其內核數據結構占據1.5k位元組的空間。Nucleus Plus以其實時響應、搶先、多任務以及源代碼開放特性獲得在通訊、國防、工業控制、航空/航天、鐵路、網路、POS、自動化控制、智能家電等領域的廣泛應用。
9 Z% W$ M, ?3 U8 W$ a) `2 | q9 F5.展訊:/ ^+ b; Q" l" T$ g
展訊平台07年也發展很快,利用MTK下半年PA放大器缺貨的機會,趁勢而入,搶走mtk很多市場份額。展訊的開發模式和MTK的很類似,基本也是給廠家提供整體解決方案,國內主要是夏新、聯想、文泰等採用展訊平台。展訊平台採用的嵌入式操作系統是threadx。同MTK平台一樣,為封閉平台,開發語言為C。
1 ?. E& }& L' P6.J2ME:( s- j* B0 f2 C: j4 g2 X
J2ME平台為手機上運用最廣泛的開放式平台,絕大部分手機均已經支持J2ME了。我們的MTK平台支持的java就是他了。% m/ W) `3 ] E5 d B. a' z
7.Brew
1 d4 ]( B" G* ^$ b/ e/ W$ @% S Brew 的全稱是無線二進制運行時環境。Brew平台是高通公司開發的,從無線應用程序開發、設備配置、應用程序分發以及計費和支付的完整端到端解決方案中的無線應用程序開發部分。目前絕大部分CDMA手機都支持Brew平台。
' S- q6 W7 k. `; l8.iPhone* F0 k; A& S+ V2 `4 B, ^. i& c
這個就不用介紹了,只有MAC一家在用。* \6 T5 E; L2 F* S( m" K
9 其它Feather phone平台. g7 b/ i+ R3 V8 q6 L" m
其它feather phone平台,如TI、飛利浦、英飛凌(Infineon)、飛思卡爾(Freescale)、Broadcom、Skyworks等平台,由於平台私有,並且不提供第三方sdk,所以也沒有相關資料和文檔。
6. 請教:Nucleus PLUS 與Nucleus 區別
Nucleus 是指整個操作系統,而Nucleus PLUS 是這個系統的內核代碼,整體和部分的關系,不是什麼工具。
7. 聯想手機是這個系統,,系統類型:Nucleus
[編輯本段]一、NucleusPLUS嵌入式操作系統
NucleusPLUS嵌入式操作系統是目前最受歡迎的操作系統NucleusPLUS是為實時嵌入式應用而設計的一個搶先式多任務操作系統內核,其95%的代碼是用ANSIC寫成的,因此非常便於移植並能夠支持大多數類型的處理器。從實現角度來看,NucleusPLUS是一組C函數庫,應用程序代碼與核心函數庫連接在一起,生成一個目標代碼,下載到目標板的RAM中或直接燒錄到目標板的ROM中執行。在典型的目標環境中,NucleusPLUS核心代碼區一般不超過20K位元組大小。NucleusPLUS採用了軟體組件的方法。每個組件具有單一而明確的目的,通常由幾個C及匯編語言模塊構成,提供清晰的外部介面,對組件的引用就是通過這些介面完成的。除了少數一些特殊情況外,不允許從外部對組件內的全局進行訪問。由於採用了軟體組件的方法,NucleusPLUS各個組件非常易於替換和復用。NucleusPLUS的組件包括任務控制、內存管理、任務間通信、任務的同步與互斥、中斷管理、定時器及I/O驅動等。Nucleus具有如下特點:1、提供源代碼NucleusPLUS提供注釋嚴格的C源級代碼給每一個用戶。這樣,用戶能夠深入地了解底層內核的運作方式,並可根據自己的特殊要求刪減或改動系統軟體,這對軟體的規范化管理及系統軟體的測試都有極大的幫助。另外,由於提供了RTOS的源級代碼,用戶不但可以進行RTOS的學習和研究,而且產品在量產時也不必支付License,可以省去大量的費用。對於軍方來說,由於提供了源代碼,用戶完全可以控制內核而不必擔心操作系統中可能會存在異常任務導致系統崩潰。2、性價比高NucleusPLUS由於採用了先進的微內核(Micro-kernel)技術,因而在優先順序安排,任務調度,任務切換等各個方面都有相當大的優勢。另外,對C++語言的全面支持又使得NucleusPLUS的Kernel成為名副其實的面向對象的實時操作系統內核。然而,其價格卻比較合理。所以,容易被廣大的研發單位接受。3、易學易用NucleusPLUS能夠結合Paradigm,SDS以及ATI自己的多任務調試器組成功能強大的集成開發環境,配合相應的編譯器和動態聯結庫以及各類底層驅動軟體,用戶可以輕松地進行RTOS的開發和調試。另外,由於這些集成開發環境(IDE)為所有的開發工程師所熟悉,因而,容易學習和使用。4、功能模塊豐富NucleusPLUS除提供功能強大的內核操作系統外,還提供種類豐富的功能模塊。例如用於通訊系統的局域和廣域網路模塊,支持圖形應用的實時化Windows模塊,支持Internet網的WEB產品模塊,工控機實時BIOS模塊,圖形化用戶介面以及應用軟體性能分析模塊等。用戶可以根據自己的應用來選擇不同的應用模塊。NucleusPLUS支持的CPU類型:NucleusPLUS的RTOS內核可支持如下類型的CPU:x86,68xxx,68HCxx,NECV25,ColdFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7,StrongARM,H8/300H,SH1/2/3,PowerPC,V8xx,Tricore,Mcore,PanasonicMN10200,Tricore,Mcore等。可以說NUCLEUS+是支持CPU類型最豐富的實時多任務操作系統。針對各種嵌入式應用,NucleusPLUS還提供相應的網路協議(如TCP/IP,SNMP等),以滿足用戶對通訊系統的開發要求。另外,可重入的文件系統、可重入的C函數庫以及圖形化界面等也給開發者提供了方便。針對不同的CPU類型,Nucleus還提供編譯器、動態連接庫、多任務調試器等相應的工具來配置用戶的開發環境。值得提出的是ATI公司最近還發表了基於MicrosoftDevelopersStudio的嵌入式集成開發環境-NUCLEUSEDE。從而率先將嵌入式開發工具與Microsoft的強大開發環境結合起來,提供給工程師們強大的開發手段。三、源代碼帶來的優勢眾所周知,Nucleus實時多任務操作系統提供給用戶源代碼。這除商務上給用戶帶來巨大益處(免交Royalty)外,還在技術方面給用戶極大的方便,即無需編寫和調試BSP,從而達到易學易用的目的,加速產品上市。對RTOS有一定知識的工程師一定清楚,使用RTOS最大的障礙在於編寫和調試BSP。大家知道,在調試目標系統的軟體之前,必須將目標與主機連接起來並建立通訊。為此,我們可以編寫一段監控程序(Monitor)。然而,如果要調試基於RTOS內核的程序,主機上的調試器(Debugger)除要與目標建立通訊外,更重要的是必須識別RTOS的任務,這樣才能進行任務級調試(Task-awareDebugger)。因此,只有Monitor是不夠的。如果我們選用的RTOS不提供源代碼,那麼,主機上的調試器(Debugger)就只有通過用戶編寫的BSP來了解Kernel在現有硬體平台上對各個任務進行調度的情況。顯然,編寫BSP必須對CPU目標系統的硬體以及應用軟體等有全面而深入的了解。一般說來,對於一個有一定硬體開發經驗的工程師來說,編寫一個新的BSP要花的平均時間為兩個月左右。這對於一個新手來說可是比較困難的。對於編寫BSP的工程師來說,另外一個更大的挑戰就是如何調試BSP,即如何驗證所編寫的BSP是否正確。通常剛剛焊接安裝好的PCB板中,硬體或軟體的故障(Bugs)是比較多的。甚至更常見的是CPU部分都沒有運作正常。有時時序錯誤和匯流排錯誤都還存在。在您把寫好的BSP燒入EPROM(或FLASH)中試圖將目標與主機建立聯系時,您幾乎100%地會發現根本無法通訊,眼前一團漆黑,不知是軟體有錯誤還是硬體不運轉。BSP在正常運行嗎?不得而知。在焦急和摸索中您可能發現幾個月已悄然而過。對於早期的實時操作系統來說,BSP是必由之路。然而,新一代的RTOS-NucleusPLUS則避免了BSP帶來的痛苦過程。因為Nucleus的調試是基於全新的動態連接庫(DLL)。用戶只須通過監控程序(Monitor)或者BDM調試口(或者JTAG調試口)建立目標系統(Target)與主機(Host)之間的通訊,並給主機上的Debugger初始化特性中加入Nucleus的動態連接庫(DLLs),這時,調試器就能夠自動地去識別運行在目標系統中的Nucleus內核和各個應用任務,從而完成任務級調試。上述的動態連接庫(DLLs)是由RTOS廠商和Debugger廠商合作完成的,用戶無須自行編寫。因此,Nucleus的用戶只需要將精力放在基於Nucleus的編程工作中。對於一個新手,往往經過一天到兩天的學習和培訓,就可以投入到應用程序編制工作中去,無需花大量的時間去研究CPU,特定的硬體等。另外,由於有了源程序,用戶在調試程序時可以清楚地通過STEPINTO命令,追蹤到RTOS的內層中去,觀看和學習Kernel對任務的管理和調度機制。對於有志研究RTOS深層技術的工程師來說極為方便。對於Motorola68K和PowerPC,用戶可以利用GreenHill公司的Mutil調試器或TRACE-ICD來完成NucleusPLUS的調試;對於ARM和StrongARM,用戶可以利用ARM公司的SDT251調試器或TRACE-ICD來完成NucleusPLUS的調試;對於Intelx86實模式,用戶可以利用Paradigm公司的調試器及其DLL來進行任務級調試;對於Intelx86保護模式則可以利用SSI公司Softprobe調試器和SSIDLL來調試;對於i960,SH3/4,ARM6/7,MIPS等晶元,則可以使用ATI公司自己的UDB調試器來進行任務的調試。結論:動態連接庫(DLL)是在RTOS工具中新出現的應用趨勢,通過這種方式,用戶可以免去BSP帶來的麻煩,靈活方便地進行開發和調試,大大加速開發進度。Nucleus實時操作系統提供源代碼,支持豐富的CPU種類,配合各類DLL動態連接庫,為使用和研究RTOS技術的工程帶來極大的利益。
進行ARM系列的開發需要大量的設備投入,另外如果做比較大型的系統,還必須要操作系統,購買一個好的操作系統也是需要幾十萬元。ARM的應用層研發可以建立在C,C++及其他的大多數開發語言上,這對於軟體公司來說是很方便的,只要准備好硬體及操作系統,其他的工作就可以分模塊給N個人來進行。而對於底層的東西,ARM公司也可以有比較大力度的支持,因此如果需要用ARM系列開發高端產品,可行性是比較高的,開發周期也不會很長。當然,對於arm晶元,還是有一定的限制,比如沒有除法指令,這樣在編程時就要盡量避免用除法,否則會帶來程序代碼的增加和執行速度的降低。一般說,除法還是可以通過移位和乘法來代替。
8. MTK系統的手機能用安卓軟體嗎
MTK平台採用的是Nucleus OS,Nucleus是Accelerated Technology公司開發的嵌入式實時操作系統,使用標准C開發,其中Nucleus Plus提供源代碼下載。是一個非智能的系統,系統所帶的軟體全部需要嵌入式把代碼寫入到系統平台,然後燒機才可以使用。
Android是一種基於Linux的自由及開放源代碼的操作系統,安卓軟體是基於Android系統平台代碼介面編程從而打包好的一個apk文件,可以實現在該平台上直接安裝、運行、卸載等操作的軟體。
MTK系統和Android系統有根本上的區別,所以安卓軟體是不可能運行在MTK系統上的哦。