第一篇:嵌入式Linux操作系統學習規劃
嵌入式Linux操作系統學習規劃
嵌入式Linux操作系統學習規劃
ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:
(1)掌握主流嵌入式微處理器的結構與原理(初步定為arm9)
(2)必須掌握一個嵌入式操作系統(初步定為uclinux或linux,版本待定)
(3)必須熟悉嵌入式軟件開發流程并至少做一個嵌入式軟件項目。
從事嵌入式軟件開發的好處是:
(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。
(2)與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟件那樣容易被盜版。硬件設計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設計軟件就變成自己的產品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟件開發的缺點是:
(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬件基礎不好,特別是操作系統級軟件功底不深,則可能不適于此行。
(2)這方面的企業數量要遠少于企業計算類企業。
(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數公司也并無此要求,只要有經驗即可。
(4)平臺依托強,換平臺比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰邏輯思維。
3、喜歡C
C是一種能發揮思維極限的語言。關于C的精神的一些方面可以被概述成短句如下:相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精干。
一種方法做一個操作。
使得它運行的夠快,盡管它并不能保證將是可移植的。
4、喜歡底層開發,討厭vb類開發工具(并不是說vb不好)。
5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。
方法步驟:
1、基礎知識:
目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統級軟件,那將是我的優勢。
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
匯編語言、C/C++、編譯原理、離散數學。
數據結構和算法、操作系統、軟件工程、網絡、數據庫。
方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。
2、學習linux:
目的:深入掌握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍后,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最后深入代碼。
主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
3、學習嵌入式linux:
目的:掌握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而后深入研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。
4、深入學習:
A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼算法和技術。
B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、網絡與信息安全技術:如加密技術,數字證書CA等。
D、DSP技術:Digital Signal Process,DSP處理器通過硬件實現數字信號處理算法。說明:太多細節未說明,可根據實際情況調整。重點在于1、3,不必完全按照順序作。對于學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對于linux內核,學習編程,讀一些優秀代碼也是有必要的。
注意:要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結合實踐。不要一味鉆研技術,雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不愿意做但必須要做的!技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。
嵌入式書籍推薦
Linux基礎
1、《Linux與Unix Shell 編程指南》
C語言基礎
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W.Kernighan David M.Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應用程序開發詳解》
Linux內核
1、《深入理解Linux內核》(第三版)
2、《Linux內核源代碼情景分析》毛德操 胡希明著
研發方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內核編程》
4、《Linux設備驅動開發》(LDD)
5、《Linux高級程序設計》 楊宗德著
硬件基礎
1、《ARM體系結構與編程》杜春雷著
2、S3C2410 Datasheet
英語基礎
1、《計算機與通信專業英語》
系統教程
1、《嵌入式系統――體系結構、編程與設計》
2、《嵌入式系統――采用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系統原理與實例開發》 楊宗德著
理論基礎
1、《算法導論》
2、《數據結構(C語言版)》
3、《計算機組織與體系結構?性能分析》
4、《深入理解計算機系統》【美】Randal E.Bryant David O''Hallaron著
5、《操作系統:精髓與設計原理》
6、《編譯原理》
7、《數據通信與計算機網絡》
8、《數據壓縮原理與應用》
C語言書籍推薦
1.The C programming language 《C程序設計語言》
2.Pointers on C 《C和指針》
3.C traps and pitfalls 《C陷阱與缺陷》
4.Expert C Lanuage 《專家C編程》
5.Writing Clean Code-----Microsoft Techiniques for Developing Bug-free C Programs
《編程精粹--Microsoft 編寫優質無錯C程序秘訣》
6.Programming Embedded Systems in C and C++ 《嵌入式系統編程》
7.《C語言嵌入式系統編程修煉》
8.《高質量C++/C編程指南》林銳
盡可能多的編碼,要學好C,不能只注重C本身。算法,架構方式等都很重要。
第二篇:嵌入式linu學習心得
嵌入式Linux學習心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當前的目錄
cd:改變當前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當前文件的內容信息
mkdir:創建目錄
fdisk: 查看硬盤分區信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復制命令,例子cp 文件名 /home/dir/
mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個命令的幫助,man 命令
2、各系統目錄的功能
drw—r—w--:d代表是目錄,drw代表當前用戶的權限,r代表組用戶的權限,w代表其它用戶的權限。x代表有執行權限。
/boot/gruff.conf: 啟動引導程序
/dev:brw—rw--:b代表是塊設備。Linux設備有三種,塊設備(b開頭)、字符設備(c開頭)、網絡設備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區。3,67代表主設備為3,從設備為67./etc:存放的是系統的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應著6個level的目錄,respawn代表當一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態鏈接庫。
/lost+found:系統意外終止,存放一些可以找回的文件。
/mnt:掛載外部設備,如掛載光驅:mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統中,要查看windows中D盤的文件,首先應該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應用程序
/proc:是系統運行的映射,比較重要。里面的文件數字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內核支持的文件系統filesystem等。系統支持的中斷interrupts,iomen代表內存分配情況。ioport存放IO端口號。還有分區信息,modole信息,狀態信息,版本信息
對于Linux的設備驅動程序,有兩種加載模式,一種是直接加載進linux內核,一種是以模塊的方式加載到內核。
/sbin: 系統管理的一些工具。如poweroff關機工具。
/usr: 安裝系統時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內核源碼
/var:存放是臨時變量
3、
第三篇:嵌入式操作系統實驗報告
實驗一 嵌入式開發環境的建立
一、實驗目的
通過此實驗系統,讀者可以了解嵌入式實時操作系統 uC/OS-II 的內核機制和運行原理。本實驗系統展示了 uC/OS-II 各方面的管理功能,包括信號量、隊列、內存、時鐘等。在各個實驗中具體介紹了 uC/OS-II 的相關函數。讀者在做實驗的同時能夠結合理論知識加以分析,了解各個函數的作用和嵌入式應用程序的設計方法,最終對整個 uC/OS-II 和嵌入式操作系統的應用有較為清楚的認識。
二、實驗步驟
1.安裝集成開發環境LambdaEDU 集成開發環境LambdaEDU 的安裝文件夾為 LambdaEDU,其中有一個名為“Setup.exe” 的文件,直接雙擊該文件便可啟動安裝過程。具體的安裝指導請看“LambdaEDU 安裝手 冊.doc”文件。
當 LambdaEDU 安裝完畢之后,我們看到的是一個空的界面,現在就開始一步一步地將 我們的實驗項目建立并運行起來。
2.建立項目
為了我們的實驗運行起來,需要建立1 個項目基于x86 虛擬機的標準應用項目。通過點 擊“文件”、“新建”、“項目”開始根據向導創建一個項目。
在隨后出現的對話框中選擇“Tool/標準應用項目”,點擊下一步,開始創建一個標準的 可執行的應用程序項目。
在隨后出現的對話框中填入項目名稱“ucos_x86_demo”。點擊“下一步”。
選擇“pc386 uC/OS-II 應用(x86)”作為該項目的應用框架。點擊“下一步”
選擇“pc386_elf_tra_debug”作為該項目的基本配置。點擊“完成”。
新創建的項目“ucos_x86_demo”將會被添加到項目列表。src 文件夾下保存了該項目中 包含的源文件。ucos2 文件夾中包含了移植到x86 虛擬機的全部代碼。init.c 文件是基于ucos2 和本虛擬機的一個應用程序。在進行ucos2 內核實驗中,只需要替換init.c 文件,即可。文
件名不限,但是文件名中最好不要使用英文符號和數字以外的其他字符,3.構建項目
到這里,項目配置全部完成。接下來就可以進行構建項目了。
第一次構建本項目,在此項目上點擊右鍵,選擇“重建BSP 及項目”。即可開始構建。
之后彈出的對話框顯示了構建的進度。可以點擊“在后臺運行”,以隱藏該對話框
在構建的同時,在右下角的“構建信息”視圖輸出構建過程中的詳細信息:
注:“重新構建”將本項目中的全部源代碼進行一次完全的編譯和連接,花費時間較多。“構建項目”則僅僅將新修改過的源代碼進行編譯和連接,花費時間最少。“重建BSP及項 目”,不但要完成“重新構建”的全部工作,另外還要編譯與該項目有關的的LambdaEDU 中內置的部分代碼,花費時間最多。但是在項目剛建立后,第一次構建時需要選擇“重建 BSP 及項目”。以后的構建中選擇“重新構建”或“構建項目”即可。另外,在替換了源代 碼中的文件后,需要選擇“重新構建”來完成該項目的構建。
4.配置虛擬機和目標機代理
(1)制作X86啟動盤
在 LambdaEDU 中依次點擊“工具”、“Bochs”、“制作虛擬機啟動映象”。對啟動盤進行一些參數設置后(如下圖所示),系統將自動為你生成一個PC 虛擬機的 啟動盤映像。
(2)配置虛擬機 選擇使用的網絡適配器(網卡)后,點擊“確定”完成配置。
注意:如果計算機上有多網卡,請將其他網卡停用(包括 VMware 虛擬機添加的虛擬 網卡)。
(3)創建目標機代理
配置好虛擬機后,創建目標機代理:點擊LambdaEDU 左下方窗口中綠色的十字符號,在彈出的窗口中選擇“基于TA 的連接方式”,并點擊“下一步”。
在彈出的“新目標機連接配置中”的這些參數,應該與之前制作啟動盤時設置的參數一致。
注意:
名字:輸入目標機的名字(缺省是 default),注意如果和現有目標機重名的話,改個名 字。
連接類型:默認選擇 UDP IP地址:這里輸入目標機(在本實驗系統中是虛擬機)的 IP地址;
最后點擊“確定”,在目標機管理窗口中,可以看到新增加了一個名為default 的目標機 節點
(4)調試應用 啟動虛擬機。
虛擬機啟動后的畫面如下(其中顯示的IP 地址創建虛擬機啟動盤時填入的IP 地址)中設置的IP 地址):
在成功完成構建的項目ucos_x86_demo 中的“pc386_elf_tra_debug”上點擊鼠標右鍵,在彈出的菜單中選擇“調試”,啟動調試器調試生成的程序:
第一次進行調試/運行,需要選擇目標機,如下圖,選擇“Default”,點擊“確定”,開 始向目標機(虛擬機)下載應用程序。程序下載完成后,會彈出一個“確認透視圖切換”對話框,選擇“是”,切換到調試透 視圖。
調試的界面如下:
點擊綠色的按鈕,全速運行。
注意:全速運行后,程序不能夠被暫停和停止。
三、實驗過程中遇到的問題及體會
在設置IP地址時,要求該IP地址與本計算機在同一個子網中,同時要求該 IP地址沒有被網絡上其他計算機使用。此外,通過構建開發環境,處次體驗到了嵌入式開發工作的樂趣。
實驗二 任務的基本管理
一、實驗目的
1.理解任務管理的基本原理,了解任務的各個基本狀態及其變遷過程; 2.掌握 uC/OS-II 中任務管理的基本方法(創建、啟動、掛起、解掛任務); 3.熟練使用 uC/OS-II 任務管理的基本系統調用。
二、實驗原理及程序結構
1.實驗設計
為了展現任務的各種基本狀態及其變遷過程,本實驗設計了 Task0、Task1 兩個任務: 任務 Task0 不斷地掛起自己,再被任務 Task1 解掛,兩個任務不斷地切換執行。通過本實驗,讀者可以清晰地了解到任務在各個時刻的狀態以及狀態變遷的原因。2.運行流程 描述如下:
(1)系統經歷一系列的初始化過程后進入 boot_card()函數,在其中調用 ucBsp_init()進 行板級初始化后,調用 main()函數;
(2)main()函數調用 OSInit()函數對 uC/OS-II 內核進行初始化,調用 OSTaskCreate 創 建起始任務 TaskStart;
(3)main()函數調用函數 OSStart()啟動 uC/OS-II 內核的運行,開始多任務的調度,執 行當前優先級最高的就緒任務 TaskStart;(4)TaskStart 完成如下工作:
a、安裝時鐘中斷并初始化時鐘,創建 2 個應用任務;
b、掛起自己(不再被其它任務喚醒),系統切換到當前優先級最高的就緒任務Task0。之后整個系統的運行流程如下:
? t1 時刻,Task0 開始執行,它運行到 t2 時刻掛起自己;
? t2 時刻,系統調度處于就緒狀態的優先級最高任務 Task1 執行,它在 t3 時刻喚醒Task0,后者由于優先級較高而搶占 CPU;
? Task0 執行到 t4 時刻又掛起自己,內核調度 Task1 執行; ? Task1 運行至 t5 時刻再度喚醒 Task0; ? ……
3.μC/OS-Ⅱ中的任務描述
一個任務通常是一個無限的循環,由于任務的執行是由操作系統內核調度的,因此任務是絕不會返回的,其返回參數必須定義成 void。在μC/OS-Ⅱ中,當一個運行著的任務使一個比它優先級高的任務進入了就緒態,當前任務的 CPU 使用權就會被搶占,高優先級任務會立刻得到 CPU 的控制權(在系統允許調度和任務切換的前提下)。μC/OS-Ⅱ可以管理多達 64 個任務,但目前版本的μC/OS-Ⅱ有兩個任務已經被系統占用了(即空閑任務和統計任務)。必須給每個任務賦以不同的優先級,任務的優先級號就是任務編號(ID),優先級可以從 0 到 OS_LOWEST_PR10-2。優先級號越低,任務的優先級越高。μC/OS-Ⅱ總是運行進入就緒態的優先級最高的任務。4.源程序說明(1)TaskStart任務
TaskStart 任務負責安裝操作系統的時鐘中斷服務例程、初始化操作系統時鐘,并創建所 有的應用任務:
UCOS_CPU_INIT();/* Install uC/OS-II's clock tick ISR */ UCOS_TIMER_START();/*Timer 初始化*/ TaskStartCreateTasks();/* Create all the application tasks */ OSTaskSuspend(OS_PRIO_SELF);
具體負責應用任務創建的 TaskStartCreateTasks 函數代碼如下,它創建了兩個應用任務 Task0 和 Task1:
void TaskStartCreateTasks(void){
INT8U i;
for(i = 0;i < N_TASKS;i++)// Create tasks {
TaskData[i] = i;// Each task will display itsown information }
OSTaskCreate(Task0,(void *)&TaskData[0], &TaskStk[0][TASK_STK_SIZE1], 6);}
TaskStart 任務完成上述操作后將自己掛起,操作系統將調度當前優先級最高的應用任務Task0 運行。(2)應用任務
應用任務 Task0 運行后將自己掛起,之后操作系統就會調度處于就緒狀態的優先級最高的任務,具體代碼如下: void Task0(void *pdata){
INT8U i;INT8U err;i=*(int *)pdata;for(;;){
printf(“Application tasks switched %d times!nr”,++count);
printf(“TASK_0 IS RUNNING..............................................................nr”);printf(“task_1 is suspended!nr”);
printf(“**************************************************nr”);err=OSTaskSuspend(5);// suspend itself } }
應用任務 Task1 運行后將 Task0 喚醒,使其進入到就緒隊列中: void Task1(void *pdata){
INT8U i;INT8U err;i=*(int *)pdata;for(;;){
OSTimeDly(150);
printf(“Application tasks switched %d times!nr”,++count);printf(“task_0 is suspended!nr”);printf(“TASK_1 IS RUNNING..............................................................nr”);printf(“**************************************************nr”);OSTimeDly(150);
err=OSTaskResume(5);/* resume task0 */ } }
三、運行及觀察應用輸出信息
按照本實驗手冊第一部分所描述的方法建立應用項目并完成構建,當我們在 LambdaEDU 調試器的控制下運行構建好的程序后,將看到在μC/OS-Ⅱ內核的調度管理下,兩個應用任務不斷切換執行的情形:
四、本實驗中用到的μC/OS-Ⅱ相關函數
4.1 OSTaskCreate()
OSTaskCreate()建立一個新任務。任務的建立可以在多任務環境啟動之前,也可以在 正在運行的任務中建立。中斷處理程序中不能建立任務。一個任務必須為無限循環結構,且 不能有返回點。
OSTaskCreate()是為與先前的μC/OS 版本保持兼容,新增的特性在 OSTaskCreateExt()函數中。
無論用戶程序中是否產生中斷,在初始化任務堆棧時,堆棧的結構必須與 CPU 中斷后 寄存器入棧的順序結構相同。詳細說明請參考所用處理器的手冊。函數原型:
INT8U OSTaskCreate(void(*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);
參數說明:
task 是指向任務代碼首地址的指針。
pdata 指向一個數據結構,該結構用來在建立任務時向任務傳遞參數。
ptos 為指向任務堆棧棧頂的指針。任務堆棧用來保存局部變量,函數參數,返回地址 以及任務被中斷時的 CPU 寄存器內容。任務堆棧的大小決定于任務的需要及預計的中斷嵌 套層數。計算堆棧的大小,需要知道任務的局部變量所占的空間,可能產生嵌套調用的函數,及中斷嵌套所需空間。如果初始化常量 OS_STK_GROWTH 設為 1,堆棧被設為從內存高地址 向 低 地 址 增 長,此時 ptos 應 該 指 向任 務堆 棧 空 間 的 最 高 地 址。反 之,如 果OS_STK_GROWTH 設為 0,堆棧將從內存的低地址向高地址增長。prio 為任務的優先級。每個任務必須有一個唯一的優先級作為標識。數字越小,優先級越高。返回值:
OSTaskCreate()的返回值為下述之一: ? OS_NO_ERR:函數調用成功。
? OS_PRIO_EXIST:具有該優先級的任務已經存在。
? OS_PRIO_INVALID:參數指定的優先級大于 OS_LOWEST_PRIO。? OS_NO_MORE_TCB:系統中沒有 OS_TCB 可以分配給任務了。注意:
任務堆棧必須聲明為 OS_STK 類型。
在任務中必須調用μC/OS 提供的下述過程之一:延時等待、任務掛起、等待事件發生(等待信號量,消息郵箱、消息隊列),以使其他任務得到 CPU。用 戶 程 序 中 不 能 使 用 優 先 級 0,1,2,3,以 及 OS_LOWEST_PRIO-3, OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO。這些優先級μC/OS 系統
保留,其余的 56 個優先級提供給應用程序。4.2 OSTaskSuspend()
OSTaskSuspend()無條件掛起一個任務。調用此函數的任務也可以傳遞參數
OS_PRIO_SELF,掛起調用任務本身。當前任務掛起后,只有其他任務才能喚醒。任務掛起 后,系統會重新進行任務調度,運行下一個優先級最高的就緒任務。喚醒掛起任務需要調用 函數 OSTaskResume()。
任務的掛起是可以疊加到其他操作上的。例如,任務被掛起時正在進行延時操作,那么 任務的喚醒就需要兩個條件:延時的結束以及其他任務的喚醒操作。又如,任務被掛起時正 在等待信號量,當任務從信號量的等待對列中清除后也不能立即運行,而必須等到被喚醒后。函數原型:
INT8U OSTaskSuspend(INT8U prio);參數說明:
prio 為指定要獲取掛起的任務優先級,也可以指定參數 OS_PRIO_SELF,掛起任務本 身。此時,下一個優先級最高的就緒任務將運行。返回值:
OSTaskSuspend()的返回值為下述之一: ? OS_NO_ERR:函數調用成功。
? OS_TASK_ SUSPEND_IDLE:試圖掛起 μC/OS-II 中的空閑任務(Idle task)。此為非法操作。
? OS_PRIO_INVALID :參數指定的優先級大于 OS_LOWEST_PRIO 或沒有設定 ? OS_PRIO_SELF 的值。
? OS_TASK_ SUSPEND _PRIO:要掛起的任務不存在。注意:
在程序中 OSTaskSuspend()和 OSTaskResume()應該成對使用。用 OSTaskSuspend()掛起的任務只能用 OSTaskResume()喚醒。4.3 OSTaskResume()
OSTaskResume()喚醒一個用 OSTaskSuspend()函數掛起的任務。OSTaskResume()也是唯一能“解掛”掛起任務的函數。函數原型:
INT8UOSTaskResume(INT8U prio);參數說明:
prio 指定要喚醒任務的優先級。返回值:
OSTaskResume()的返回值為下述之一: ? OS_NO_ERR:函數調用成功。
? OS_TASK_RESUME_PRIO:要喚醒的任務不存在。
? OS_TASK_NOT_SUSPENDED:要喚醒的任務不在掛起狀態。
? OS_PRIO_INVALID:參數指定的優先級大于或等于 OS_LOWEST_PRIO。
五、實驗過程中遇到的問題及體會
實驗過程中體會到了嵌入式開發的樂趣,對上課老師所講的內容有了進一步的認識與理解。17 實驗三 信號量:哲學家就餐問題的實現
一、實驗目的
掌握在基于嵌入式實時操作系統 uC/OS-II 的應用中,任務使用信號量的一般原理。通 過經典的哲學家就餐實驗,了解如何利用信號量來對共享資源進行互斥訪問。
二、實驗原理及程序結構
1.實驗設計
掌握在基于嵌入式實時操作系統 uC/OS-II 的應用中,任務使用信號量的一般原理。通 過經典的哲學家就餐實驗,了解如何利用信號量來對共享資源進行互斥訪問。2.源程序說明
五個哲學家任務(ph1、ph2、ph3、ph4、ph5)主要有兩種過程:思考(即睡眠一段時
間)和就餐。每個哲學家任務在就餐前必須申請并獲得一左一右兩支筷子,就餐完畢后釋放 這兩支筷子。五個哲學家圍成一圈,每兩人之間有一支筷子。一共有五支筷子,在該實驗中 用了五個互斥信號量來代表。每個任務的代碼都一樣,如下所示: void Task(void *pdata){
INT8U err;INT8U i;INT8U j;
i=*(int *)pdata;j=(i+1)% 5;
uC/OS-II 實驗指導書 for(;;){
TaskThinking2Hungry(i);OSSemPend(fork[i], 0, &err);
OSSemPend(fork[j], 0, &err);/* Acquire semaphores to eat */ TaskEat(i);
OSSemPost(fork[j]);
OSSemPost(fork[i]);/* Release semaphore */ OSTimeDly(200);/* Delay 10 clock tick */ } }
操作系統配置
修改 uC_OS-II/OS_CFG.h: :: :
#define OS_MAX_EVENTS 10 /*最多可以有 10 個事件*/ #define OS_MAX_FLAGS 5 /*最多可以有 5 個事件標志*/
#define OS_MAX_MEM_PART 5 /*最多可以劃分 5 個內存塊*/ #define OS_MAX_QS 2 /*最多可以使用 2 個隊列*/ #define OS_MAX_TASKS 8 /*最多可以創建 8 個任務*/
#define OS_LOWEST_PRIO 14 /*任務優先級不可以大于 14*/ #define OS_TASK_IDLE_STK_SIZE 1024 /*空閑任務堆棧大小*/ #define OS_TASK_STAT_EN 1 /*是否允許使用統計任務*/ #define OS_TASK_STAT_STK_SIZE 1024 /*統計任務堆棧大小*/ #define OS_FLAG_EN 1 /*是否允許使用事件標志功能*/
#define OS_FLAG_WAIT_CLR_EN 1 /*是否允許等待清除事件標志*/ #define OS_FLAG_ACCEPT_EN 1 /*是否允許使用 OSFlagAccept()*/ #define OS_FLAG_DEL_EN 1 /*是否允許使用 OSFlagDel()*/
#define OS_FLAG_QUERY_EN 1 /*是否允許使用 OSFlagQuery()*/ #define OS_MBOX_EN 0 /*是否允許使用郵箱功能*/
#define OS_MEM_EN 0 /*是否允許使用內存管理的功能*/
#define OS_MUTEX_EN 0 /*是否允許使用互斥信號量的功能*/ #define OS_Q_EN 0 /*是否允許使用隊列功能*/ #define OS_SEM_EN 1 /*是否允許使用信號量功能*/
#define OS_SEM_ACCEPT_EN 1 /*是否允許使用 OSSemAccept()*/ #define OS_SEM_DEL_EN 1 /*是否允許使用OSSemDel()*/
#define OS_SEM_QUERY_EN 1 /*是否允許使用OSSemQuery()*/ #define OS_TASK_CHANGE_PRIO_EN 1 /* 是 否 允 許 使 用 OSTaskChangePrio()*/
#define OS_TASK_CREATE_EN 1 /*是否允許使用 OSTaskCreate()*/
#define OS_TASK_CREATE_EXT_EN 1 /*是否允許使用 OSTaskCreateExt()*/ #define OS_TASK_DEL_EN 1 /*是否允許使用 OSTaskDel()*/
#define OS_TASK_SUSPEND_EN 1 /* 是 否 允 許 使 用 OSTaskSuspend()and OSTaskResume()*/
#define OS_TASK_QUERY_EN 1 /*是否允許使用 OSTaskQuery()*/ #define OS_TIME_DLY_HMSM_EN 1 /* 是 否 允 許 使 用 OSTimeDlyHMSM()*/
#define OS_TIME_DLY_RESUME_EN 1 /* 是 否 允 許 使 用 OSTimeDlyResume()*/
#define OS_TIME_GET_SET_EN 1 /* 是否允許使用 OSTimeGet()和 OSTimeSet()*/
#define OS_SCHED_LOCK_EN 1 /* 是 否 允 許 使 用 OSSchedLock()和 OSSchedUnlock()*/
#define OS_TICKS_PER_SEC 200 /*設置每秒之內的時鐘節拍數目*/
三、運行及觀察應用輸出信息
開始,所有的哲學家先處于 thinking 狀態,然后都進入 hungry 狀態:
后首先獲得兩個信號量的 1、3 號哲學家開始 eating,待他們釋放相關信號量之后,哲
學家 2、5、4 獲得所需的信號量并 eating: 應用如此這般地循環執行程序下去??
四、本實驗中用到的μC/OS-Ⅱ相關函數
4.1 OSSemCreate()
OSSemCreate()函數建立并初始化一個信號量。信號量的作用如下: ? 允許一個任務和其他任務或者中斷同步 ? 取得設備的使用權 ? 標志事件的發生
函數原型:
OS_EVENT *OSSemCreate((((WORD value))))參數說明:
value 參數是所建立的信號量的初始值,可以取 0 到 65535 之間的任何值。返回值:
OSSemCreate()函數返回指向分配給所建立的信號量的控制塊的指針。如果沒有可用的 控制塊,OSSemCreate()函數返回空指針。注意:
必須先建立信號量,然后使用。4.2 OSSemPend()
OSSemPend()函數用于任務試圖取得設備的使用權,任務需要和其他任務或中斷同
步,任務需要等待特定事件的發生的場合。如果任務調用 OSSemPend()函數時,信號量 的值大于零,OSSemPend()函數遞減該值并返回該值。如果調用時信號量等于零,OSSemPend()函數函數將任務加入該信號量的等待隊列。OSSemPend()函數掛起當前 任務直到其他的任務或中斷置起信號量或超出等待的預期時間。如果在預期的時鐘節拍內信 號量被置起,μC/OS-Ⅱ默認最高優先級的任務取得信號量恢復執行。一個被 OSTaskSuspend()函數掛起的任務也可以接受信號量,但這個任務將一直保持掛起狀態直到通過調用 OSTaskResume()函數恢復任務的運行。函數原型: :: :
Void OSSemPend(OS_EVNNT *pevent, INT16U timeout, int8u *err);參數說明: :: :
pevent
是指向信號量的指針。該指針的值在建立該信號量時可以得到。(參考 OSSemCreate()函數)。
Timeout
允許一個任務在經過了指定數目的時鐘節拍后還沒有得到需要的信號量時 恢復就緒狀態。如果該值為零表示任務將持續地等待信號量,最大的等待時間為 65535 個時
鐘節拍。這個時間長度并不是非常嚴格的,可能存在一個時鐘節拍的誤差。
Err 是指向包含錯誤碼的變量的指針。OSSemPend()函數返回的錯誤碼可能為下述幾 種:
? OS_NO_ERR :信號量不為零。
? OS_TIMEOUT :信號量沒有在指定數目的時鐘周期內被設置。
? OS_ERR_PEND_ISR :從中斷調用該函數。雖然規定了不允許從中斷調用該函數,但 μC/OS-Ⅱ仍然包含了檢測這種情況的功能。
?
OS_ERR_EVENT_TYPE :pevent 不是指向信號量的指針。返回值: 無 注意:
必須先建立信號量,然后使用。不允許從中斷調用該函數。
4.3 OSSemPost()
OSSemPost()函數置起指定的信號量。如果指定的信號量是零或大于零,OSSemPost()函數遞增該信號量并返回。如果有任何任務在等待信號量,最高優先級的任務將得到信
號量并進入就緒狀態。任務調度函數將進行任務調度,決定當前運行的任務是否仍然為最高 優先級的就緒狀態的任務。函數原型:
INT8U OSSemPost(OS_EVENT *pevent);參數說明:
pevent
是指向信號量的指針。該指針的值在建立該信號量時可以得到。(參考 OSSemCreate()函數)。返回值:
OSSemPost()函數的返回值為下述之一: ?
OS_NO_ERR :信號量被成功地設置 ?
OS_SEM_OVF :信號量的值溢出
?
OS_ERR_EVENT_TYPE :pevent 不是指向信號量的指針 注意:
必須先建立信號量,然后使用。4.4 OSTimeDly()
OSTimeDly()將一個任務延時若干個時鐘節拍。如果延時時間大于 0,系統將立即進 行任務調度。延時時間的長度可從 0 到 65535 個時鐘節拍。延時時間 0 表示不進行延時,函
數將立即返回調用者。延時的具體時間依賴于系統每秒鐘有多少時鐘節拍(由文件 SO_CFG.H 中的常量 OS_TICKS_PER_SEC 設定)。函數原型:
void OSTimeDly(INT16U ticks);參數說明:
ticks 為要延時的時鐘節拍數。返回值:
無
注意:
注意到延時時間 0 表示不進行延時操作,而立即返回調用者。為了確保設定的延時時間,建議用戶設定的時鐘節拍數加 1。例如,希望延時 10 個時鐘節拍,可設定參數為 11。
五、實驗過程中遇到的問題及體會
在實驗前要對該問題進行深入的理解,即五個哲學家任務(ph1、ph2、ph3、ph4、ph5)主要有兩種過程:思考(即睡眠一段時間)和就餐。每個哲學家任務在就餐前必須申請并獲得一左一右兩支筷子,就餐完畢后釋放這兩支筷子。五個哲學家圍成一圈,每兩人之間有一支筷子。只有理解了,才能更好的進行實驗。
第四篇:嵌入式操作系統課程報告
華北水利水電大學
North China University of Water Resources and Electric Power
嵌入式操作系統課程報告
題目 嵌入式系統課程綜和論述
學 院 物理與電子學院
專 業 電子信息工程
姓 名 李天澤
學 號 201816516
組 員
完成時間 2020.12.22
目 錄
一、嵌入式系統的介紹
(1)、嵌入式系統的概念……………………………………3
(2)、嵌入式系統的特點……………………………………4
二、嵌入式系統的發展和應用……………………………5
三、總結和心得……………………………………………7
參考文獻……………………………………………7
附錄…………………………………………………8
摘要:
如今,嵌入式系統經過半個多實際的發展和革新,在各個產業都可以看見它的身影。在電子消費領域,它已經廣泛應用于手機、VCD、數字電視和路由器等常見家用電器和電子產品,或許在你的家里有著幾十甚至幾百個微型嵌入式計算機無時無刻地不在為你服務。
在工業控制方面,一輛豪華轎車的控制系統就包含著至少50個嵌入式微處理器,它們分布于火花塞、傳動軸和安全氣囊等等。而一架先進的飛機,一臺人造衛星就可能包含著幾十套嵌入式系統和上百臺微型嵌入式計算機,沒有這些裝載,飛機和衛星的控制系統就不能有效地工作,它們的導航系統就不能滿足嚴格的要求。
在通信領域也有著數不勝數的嵌入式系統的應用,由于帶寬網絡的發展,交換機、路由器和各種傳輸設備等都逐漸需要更多的嵌入式系統來滿足它們互聯的需求,而這些基于32位的嵌入式系統品種多樣,絕大多數都價格低廉,能夠為企業和家庭的網絡選擇提供更加廉價而多樣的方案。
一、嵌入式系統的介紹
1、嵌入式系統的概念:
上世紀的40年代人類社會誕生了當時最偉大的發明之一——計算機。1946年賓夕法尼亞大學研制出了世界上第一臺計算機“ENIAC”,吹響了人類向信息時代進發的號角。如今半個多世紀過去了,總體來看,計算機已經經歷了兩個大的發展階段:大型計算機階段和個人中小型計算機階段。而今后,計算機技術將邁入下一個充滿機遇和挑戰的新階段—— “無處不在的計算機”階段,即“后PC發展階段”。“無處不在的計算機”是指在數以千計乃至萬計的計算機之間彼此相互關聯,其與使用者的比例高達100%,這些計算機中包括有傳統的通用式計算機和嵌入式計算機,而后者占絕大多數,可以達到95%的比例。
施樂公司研究中心的主任Mark Weiser 認為:“以長遠的發展來看,PC和計算機工作站將逐漸衰落,因為計算機將會變得無處不在,它們會在墻上,在手腕上,在口袋里等等,計算機將會像手寫紙一樣,隨用隨取,伸手可得。”
目前全世界范圍的計算機研究者都在逐步形成一種共識,那就是在計算機將來的發展中,它必然不會成為像科幻電影中的那種會背叛人類,傷害人類的機械怪物,恰恰相反它們將變得小巧玲瓏而且無處不在。它們會出現在任何你能看的見、聽得到、摸得著的地方,功能強大而且隨處可用,這就是“無處不在的計算機”。
嵌入式計算機系統就是所謂的“看不見的計算機”,一般情況下它只是運行平臺,并不能作為獨立的開發平臺來使用。而且它不能夠被用戶編程,對用戶的I/O接口是專用的。所以不嚴謹地說:任意包含可編程計算機的設備而且這種設備不是作為通用計算機而設計的都可以稱作嵌入式系統。
時至今日嵌入式系統已經逐漸滲透到人們的日常生活中,但因為其不同的應用形式和相異的名稱,目前對嵌入式系統還沒有一個統一的定義。但一般認為,它有以下概念:
(1)嵌入式系統的中心是應用功能,基礎是計算機技術,其軟件和硬件可以裁剪,對應用系統的功能、可靠性、成本、體積大小和功率損耗都有十分嚴格的要求和指標。
(2)國際電氣和電子工程師協會認為嵌入式系統的定義是“Device used to control, monitor, or assist the operation of equipment , machinery or plants.”
(3)嵌入式系統是計算機技術、半導體技術、電子技術等與各個行業的具體應用相結合后的產物,是一個技術集中、資源集中、應用高度分散、技術不斷革新的集成系統。
2、嵌入式系統的特點:
1)嵌入式系統通常都是多樣的有特定應用功能的軟硬件綜合體,用于特定的任務,其硬件和軟件設計都是高效而簡潔的。其中嵌入式軟件的應用程序和操作程序是一體化的,不同于傳統的通用計算機操作系統和應用程序有著分明的界限。
2)嵌入式系統能夠受到多個處理器和體系結構的支持,不同于通用的計算機只能夠使用少數的處理器類型和體系結構。目前已經生產有上千種嵌人式微處理器和幾十種微處理器的體系結構,其中比較主流常見的有ARM,MIPS, PowerPC,X86和SuperH等。
4)嵌入式系統有實時性和可靠性的特點,其主要表現在:目前絕大多數實時操作系統都是嵌人式系統;嵌人式系統都有實時性的要求,其軟件通常都是固化或直接加載到內存中運行的,啟動十分快速
另外,嵌人式系統通常都有處錯能力和自動復位的功能,目前在絕大多數嵌式系統中都包含著用于保證系統運行可靠性的軟硬件處理機制,比如看門狗定時器和內存保護重啟機制等。
5)嵌入式系統通常都使用可以適應多種類型處理器、可裁剪量輕、實時性和可靠性高以及可以固化的。同嵌入式微處理器,嵌入式的操作系統也是多種多樣的,不僅可以支持多種處理器,還可以進行裁剪量輕來匹配應用的功能,而且規模較小,能夠節省資源等等。
二、嵌入式系統的發展和應用
第一代電子計算機體積大,耗電快,而且可靠性和實時性都無法滿足嵌入式計算的要求。到了20世紀60年代,由晶體管、磁芯存儲制造的第二代計算機開始用于航海航空等領域,它的CPU能夠處理從電子系統傳來的信號,具有了數據總線的一些基本特性。而與此同時,嵌人式計算機也逐步應用于工業和制造等方面。
至60年代末,采用集成電路的第三代計算機問世,1965年發射Gemini3號是人們第一次使用機載數字計算機。而后的阿波羅探測飛船則使用了嵌人式計算機系統來提供和保障人機的交互功能來用于引導飛行。1963年DEC公司推廣了第一臺商用小型機,它具有嵌入式系統的結構,具備單總線結構、高速寄存器和實時性、可靠性強的中斷系統以及交叉存取功能,標志著嵌入式系統的興起。
1971 年,英特爾公司成功推出了世界上第一片微處理器Intel 4004。它的體積小、質量輕、價格實惠、使用方便,在當時銷量很好,Intel公司將它進一步改進后推出了4位的微處理器4040和8位的8008。
1973-1977 年短短四年之間全球許多廠家推出了各種各樣的8位微處理器,其中比較流行的有英特爾公司的8080/ 8085系列,摩托羅拉公司的6800/6802系列,齊洛格公司的Z80和羅克韋爾公司的6502等。這些微處理器的廣泛應用為嵌入式系統開辟了廣闊的市場,促成了嵌入式系統的快速發展。計算機廠商開始以插件的形式為用戶提供所需的OEM產品,并構成符合用戶要求的微型控制計算機,嵌入到系統設備中。
嵌入式系統的大發展還要歸功于20世紀80年代軟件技術的進步。最初的嵌入式計算機的軟件都是十分專用的,其程序也只能用匯編語言來編寫,因此嵌入式系統的開發周期過長,效率太低,不利于廣泛地推廣和應用。得益于微電子技術的進步,嵌入式計算機的軟件開發不再局限于匯編語言,可以使用C或PL等高級語言,是編程更加多樣和簡潔化,加快了嵌入式系統的開發效率。時間步入20世紀90年代,當時對分布控制、柔性制造和數字通信電等技術有著巨大需求,而這種需求也刺激著嵌人式系統的軟硬技術的革新和發展,促進了嵌入式系統的應用擴大化。
如今,嵌入式系統經過半個多實際的發展和革新,在各個產業都可以看見它的身影。在電子消費領域,它已經廣泛應用于手機、VCD、數字電視和路由器等常見家用電器和電子產品,或許在你的家里有著幾十甚至幾百個微型嵌入式計算機無時無刻地不在為你服務。
在工業控制方面,一輛豪華轎車的控制系統就包含著至少50個嵌入式微處理器,它們分布于火花塞、傳動軸和安全氣囊等等。而一架先進的飛機,一臺人造衛星就可能包含著幾十套嵌入式系統和上百臺微型嵌入式計算機,沒有這些裝載,飛機和衛星的控制系統就不能有效地工作,它們的導航系統就不能滿足嚴格的要求。
在通信領域也有著數不勝數的嵌入式系統的應用,由于帶寬網絡的發展,交換機、路由器和各種傳輸設備等都逐漸需要更多的嵌入式系統來滿足它們互聯的需求,而這些基于32位的嵌入式系統品種多樣,絕大多數都價格低廉,能夠為企業和家庭的網絡選擇提供更加廉價而多樣的方案。
時至今日,嵌入式系統的應用已經從微至著,廣泛分布。但它還在不斷地更新發展,其構成的計算機也會變得更小巧,更靈敏,更高效,更智能,相信在未來的某一天,會如Mark Weiser所說的那樣:“它們會在墻上,在手腕上,在口袋里,就像手寫紙一樣,隨用隨取,伸手可得。”
三、總結和心得
嵌入式系統作為一門計算機開發的學科,有著不同于傳統通用計算機系統的特點和概念,具有獨特長處。同時它的應用遍布于電子消費、通信工程、工業控制和軍事國防等多種領域,其發展前景是非常廣闊的,是一門十分值得深入學習和研究的學科。
通過一個學期的學習,我了解了許多嵌入式實時操作系統的應用知識,比如“任務的管理和調度”、“同步、互斥與通信”以及“中斷和時間管理”等全新的理論知識,同時也通過多次的實驗操作理解了對嵌入式系統軟硬件工作方式和應用。所謂溫故而知新,通過撰寫課程報告,我對嵌入式系統的各個方面有了新的了解,大大提高了對這門學科的興趣,在今后的學習中,我也會更加深入地去學習這門課程的相關內容,豐富自己的知識領域,開闊眼界,掌握更多的技能,為自己將來的發展做好鋪墊。
參考文獻:
甄鵬------《嵌入式實時Linux的移植及應用技術的研究》2008,(02)
郭軍------《基于Petri網的嵌入式系統高層級設計方法與技術研究》2007,(04)
吳敏------《基于嵌入式的家庭網關控制平臺的研究與設計》2007,(05)
劉青云;焦鉻-------《嵌入式Web Service模型實現及應用》2019,(01)
田婧---------《嵌入式μCOSⅡ在DSP中的移植與應用研究》2007,(04)
附錄
附查重報告:
第五篇:七款嵌入式Linux操作系統簡介
除了智能數字終端領域以外,Linux在移動計算平臺、智能工業控制、金融業終端系統,甚至軍事領域都有著廣泛的應用前景。這些Linux被統稱為“嵌入式Linux”。下面就來看看都有哪些嵌入式Linux在以上領域縱橫馳騁吧!
RT-Linux
這是由美國墨西哥理工學院開發的嵌入式Linux操作系統。到目前為止,RT-Linux已經成功地應用于航天飛機的空間數據采集、科學儀器測控和電影特技圖像處理等廣泛領域。RT-Linux開發者并沒有針對實時操作系統的特性而重寫Linux的內核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內核,并把標準的Linux核心作為實時核心的一個進程,同用戶的實時進程一起調度。這樣對Linux內核的改動非常小,并且充分利用了Linux下現有的豐富的軟件資源。
uClinux
uCLinux是Lineo公司的主打產品,同時也是開放源碼的嵌入式Linux的典范之作。uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit)的嵌入式系統而設計的。它已經被成功地移植到了很多平臺上。由于沒有MMU,其多任務的實現需要一定技巧。uCLinux是一種優秀的嵌入式 Linux版本,是micro-Conrol-Linux的縮寫。它秉承了標準Linux的優良特性,經過各方面的小型化改造,形成了一個高度優化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,卻仍然保留了Linux的大多數的優點:穩定、良好的移植性、優秀的網絡功能、對各種文件系統完備的支持和標準豐富的API。它專為嵌入式系統做了許多小型化的工作,目前已支持多款CPU。其編譯后目標文件可控制在幾百KB數量級,并已經被成功地移植到很多平臺上。
Embedix
Embedix是由嵌入式Linux行業主要廠商之一Luneo推出的,是根據嵌入式應用系統的特點重新設計的Linux發行版本。Embedix提供了超過25種的Linux系統服務,包括Web服務器等。系統需要最小8MB內存,3MB ROM或快速閃存。Embedix基于Linux 2.2內核,并已經成功地移植到了Intel x86和PowerPC處理器系列上。像其它的Linux版本一樣,Embedix可以免費獲得。Luneo還發布了另一個重要的軟件產品,它可以讓在 Windows CE上運行的程序能夠在Embedix上運行。Luneo還將計劃推出Embedix的開發調試工具包、基于圖形界面的瀏覽器等。可以說,Embedix 是一種完整的嵌入式Linux解決方案。
XLinux
XLinux是由美國網虎公司推出,主要開發者是陳盈豪。他在加盟網虎幾個月后便開發出了基于XLinux的、號稱是世界上最小的嵌入式Linux系統,內核只有143KB,而且還在不斷減小。XLinux核心采用了“超字元集”專利技術,讓Linux核心不僅可能與標準字符集相容,還含蓋了12個國家和地區的字符集。因此,XLinux在推廣Linux的國際應用方面有獨特的優勢。
PoketLinux
PoketLinux由Agenda公司采用、作為其新產品“VR3 PDA”的嵌入式Linux操作系統。它可以提供跨操作系統構造統一的、標準化的和開放的信息通信基礎結構,在此結構上實現端到端方案的完整平臺。PoketLinux資源框架開放,使普通的軟件結構可以為所有用戶提供一致的服務。PoketLinux平臺使用戶的視線從設備、平臺和網絡上移開,由此引發了信息技術新時代的產生。在PoketLinux中,稱之為用戶化信息交換(CIE),也就是提供和訪問為每個用戶需求而定制的“主題”信息的能力,而不管正在使用的設備是什么。
MidoriLinux
由Transmeta公司推出的MidoriLinux操作系統代碼開放,在GUN普通公共許可(GPL)下發布,可以在http://midori.transmeta.com上立即獲得。該公司有個名為“MidoriLinux計劃”。
“MidoriLinux”這個名字來源于日本的“綠色”——Midori,用來反映其Linux操作系統的環保外觀。
紅旗嵌入式Linux
由北京中科院紅旗軟件公司推出的嵌入式Linux是國內做得較好的一款嵌入式操作系統。目前,中科院計算所自行開發的開放源碼的嵌入式操作系統—— Easy Embedded OS(EEOS)也已經開始進入實用階段了。該款嵌入式操作系統重點支持p-Java。系統目標一方面是小型化,另一方面能重用Linux的驅動和其它模塊。由于有中科院計算所的強大科研力量做后盾,EEOS有望發展成為功能完善、穩定、可靠的國產嵌入式操作系統平臺。
思考與展望
以上列舉的眾多嵌入式Linux操作系統中,國內對于uClinux和RT-Linux研究的較多,很多基于它們的產品已經面世,比如華恒公司已經把uClinux成功移植,并投放到市場。
正是由于Linux開放源代碼的特點,所以全世界的開發廠商都站在同一個起跑線上。國內的研究機構和企業也正在積極投入人力、物力,力爭在嵌入式操作系統上有所為。但應該清醒認識到,絕大多數的嵌入式系統的硬件平臺還掌握在外國公司的手中。國產的嵌入式操作系統在技術含量、兼容性、市
場運作模式等方面還有很多工作要做。國家對嵌入式領域的發展也極為重視。信息產業部《2003電子發展基金項目指南》在軟件類重點產品項目中,第五小類就是關于嵌入式軟件與系統開發的,并提出要重點進行如下重點項目的研制與開發:嵌入式實時操作系統、嵌入式軟件集成開發平臺和嵌入式數據庫管理軟件。由于嵌入式系統研發在國內起步比較晚,我國目前還基本處于實驗室階段。但是嵌入式操作系統的巨大的商業價值和Linux的開放性,為民族軟件產業的發展提供了難得的機會。在跟蹤國外嵌入式操作系統最新技術的同時,國內廠商要堅持自主產權,力爭找到自己的突破點,探索出一條適合中國國情的嵌入式操作系統的發展道路。