久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式操作系統的發展歷程、特點及發展趨勢

時間:2019-05-12 12:21:37下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《嵌入式操作系統的發展歷程、特點及發展趨勢》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式操作系統的發展歷程、特點及發展趨勢》。

第一篇:嵌入式操作系統的發展歷程、特點及發展趨勢

嵌 入 式 課 程 作 業

嵌入式操作系統的發展歷程、特點及發展趨勢

摘 要:本文回顧了嵌入式操作系統發展的歷史,通過與通用桌面操作系統的比較,分析了嵌入式操作系統的特點,并且從嵌入式操作系統市場和技術的發展著手,探討了嵌入式系統的未來發展趨勢。

關鍵詞:嵌入式系統;嵌入式操作系統;實時性

1.嵌入式操作系統的發展歷程

嵌入式系統是以應用為中心,軟硬件可裁減的,適用于對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。具有軟件代碼小、高度自動化、響應速度快等特點,特別適合于要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬件、嵌入式操作系統及應用軟件系統等組成,它是可獨立工作的“器件”。綜觀嵌入式技術的發展,大致經歷了以下3個階段:

第一階段:嵌入技術的早期階段,以功能簡單的專用計算機或單片機為核心的可編程控制器形式存在,具有監測、伺服、設備指示等功能。這種系統大部分應用于各類工業控制和飛機、導彈等武器裝備中。

第二階段:以嵌入式CPU和嵌入式操作系統為標志的嵌入式系統。這一階段系統的主要特點是:計算機硬件出現了高可靠、低功耗的嵌入式CPU,如Power PC等。

第三階段:以芯片技術和Internet技術為標志的嵌入式系統。微電子技術發展迅速,SOC(片上系統)使嵌入系統越來越小,功能卻越來越強。目前大多數嵌入式系統還孤立于Internet之外,但隨著Internet的發展以及Internet技術與信息家電、工業控制技術等結合日益密切,嵌入式技術與Internet技術的結合正推動嵌入式技術的快速發展。

嵌入式操作系統是嵌入式系統極為重要的組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬件虛擬化,使得開發人員從繁忙的驅動程序移植和維護中

第 1 頁

共 5 頁

嵌 入 式 課 程 作 業

解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬件的相關依賴性、軟件固態化以及應用的專用性等方面具有較為突出的特點。嵌入式操作系統伴隨著嵌入式系統的發展經歷了三個比較明顯的階段:

第一階段:無操作系統的嵌入算法階段,通過匯編語言編程對系統進行直接控制,運行結束后清除內存。系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶接口,比較適合于各類專用領域中。

第二階段:以嵌入式CPU為基礎、簡單操作系統為核心的嵌入式系統。CPU 種類繁多,通用性比較差;系統開銷小,效率高;一般配備系統仿真器,操作系統具有一定的兼容性和擴展性;應用軟件較專業,用戶界面不夠友好;系統主要用來控制系統負載以及監控應用程序運行。

第三階段:通用的嵌入式實時操作系統階段,以嵌入式操作系統為核心的嵌入式系統。能運行于各種類型的微處理器上,兼容性好;內核精小、效率高,具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網絡支持、圖形窗口以及用戶界面等功能;具有大量的應用程序接口API;嵌入式應用軟件豐富。

2.嵌入式操作系統的特點 1)實時性

在信息時代,人們需要在有效的時間里對接受的信息進行處理,為進一步的工作和決策爭取時間,這就要求工作系統具有很高的實時性。所謂實時性,其核心含義在于操作系統在規定時間內準確完成應該做的事情,并且操作系統的執行線索是確定的,而不是單純的速度快。

大多數嵌入式操作系統工作在對實時性要求很高的場合,主要對儀器設備的動作進行檢測控制,這種動作具有嚴格的、機械的時序;而一般的桌面操作系統基本上是根據人在鍵盤和鼠標發出的命令進行工作,人的動作和反應在時序上并不很嚴格。比如,用于控制火箭發動機的嵌入式系統,它所發出的指令不僅要求速度快,而且多個發動機之間的時序要求非常嚴格,否則就會失之毫厘,謬以千里。在這樣的應用環境中,非實時的普通操作系統無論如何是無法適應的。即使

第 2 頁

共 5 頁

嵌 入 式 課 程 作 業

我們所開發的并不是生命攸關的或者生產控制那樣的關鍵任務系統,例如對嵌入式操作系統應用來說很有前途的領域-----消費電子產品,設備的高可靠性可以有效地減低維護成本,軟件運行效率高也會降低對CPU的要求,從而降低硬件成本。對于此類價格十分敏感的產品,實時性、可靠性仍然是非常值得重視的問題。因此,實時性是嵌入式系統最大的優點,在嵌入式軟件中最核心的莫過于嵌入式RTOS實時操作系統。2)可剪裁性

能否根據悠揚的樂曲對系統的功能模塊進行配置是嵌入式系統與普通系統的另一區別。這可以從以下幾個方面分析: i.從硬件環境來看,普通系統具有標準化的CPU存儲和I/O架構,而嵌入式環境的硬件環境只有標準化的CPU,沒有標準的存儲、I/O和顯示器單元。

ii.從應用環境來看,桌面操作系統面向復雜多變的應用,而嵌入式操作系統面向單一設備的固定的應用。

iii.從開發界面來看,桌面操作系統給開發人員提供一個“黑箱”,讓開發人員通過一系列標準的系統調用來使用操作系統的功能,而嵌入式試圖為開發人員提供一個“白箱”,讓開發人員可以自主控制系統的所有資源。普通系統的研究開發是盡可能在不改變自身的前途下具有廣泛的適應性。也就是說:不論應用環境怎么改變,都不應對自身做太多的變化。而應用于嵌入式環境的RTOS,在研發的時候就必須立足于面向對象,改變自身、開放自身,讓開發人員可以根據硬件環境和應用環境的不同而對操作系統進行靈活的裁剪和配置,因為對于任何一個具體的嵌入式設備,它的功能是確定的,因此只要從原有操作系統中把這個特定應用所需的功能拿來即可以。可剪裁性在軟件工程階段是利用軟件配置方法實現軟件構建的“即插即用”。

3)可靠性

一般來說,嵌入式系統一旦開始運行就不需要人的過多干預。在這種條件下,要求負責系統管理的嵌入式操作系統具有較高的穩定性和可靠性。而普通操作系統則不具備這種特點。這導致桌面操作環境與嵌入式環境在設計思路上有重大的不同。

第 3 頁

共 5 頁

嵌 入 式 課 程 作 業

i.桌面環境假定應用軟件與操作系統相比而言是不可靠的,而嵌入式環境假定應用軟件與操作系統一樣可靠。運行于嵌入式環境中的RTOS要求應用軟件具有與操作系統同樣的可靠性,這種設計思路對應用開發人員提出了更高的要求,同時也要求操作系統自身足夠開放。

ii.桌面操作系統比較龐大復雜,而嵌入式系統提供的資源有限,由于硬件的限制,嵌入式操作系統必須小巧簡捷。對于系統來說,組成越簡單、性能越可靠,組成越復雜,故障概率越大是一個常理。局部的不足會導致整體的缺陷,系統中任何部分的不可靠都會導致系統整體的不可靠。

3.嵌入式操作系統的發展趨勢

目前各種嵌入式Linux操作系統正迅速發展,已經形成了能與Windows CE等嵌入式操作系統進行有力競爭的局面。嵌入式Linux操作系統的迅速崛起,主要由于人們對自由軟件的渴望與嵌入式系統應用的特制性,要求提供系統源碼層次上的支持,而嵌入式Linux正適應了這一需求,它不僅具有開放源代碼,系統內核小、效率高、內核網絡結構完整,裁減后的系統很適于如信息家電等嵌入式系統的開發。嵌入式Linux操作系統的產品化及可靠性是目前受制約的一個重要因素。

微軟的Win CE是一個較具代表性的、由桌面操作系統演變而成的實時嵌入式操作系統。雖然提供了較為強大的類似于桌面操作系統的功能,但針對嵌入式系統的特征與特性而言,Win CE顯得笨拙且在內核結構的設計中并未考慮適應系統的高度可裁減性的要求。以VxWorks為代表的傳統嵌入式操作系統是應用最廣泛、市場占有率較具優勢的幾個系統,它們是專門為嵌入式微處理器設計的高模塊化、高性能的實時操作系統,廣泛應用于高科技產品中,包括消費電子設備、工業自動化、無線通信產品、醫療儀器、數字電視與多媒體設備,具有很好的 安全性、容錯性以及系統靈活性。雖然它們都提供專有的API接口,但是缺乏應用的高效性,網絡連接功能較差,系統對應用程序開發支持相對較弱。對現在復雜的、網絡化的、多處理器的嵌入式系統的許多應用需要而言,它已顯得力不從心。

隨著硬件技術、應用需求和開發需求的變化,如,微電子技術--芯片的集成第 4 頁

共 5 頁

嵌 入 式 課 程 作 業

技術和片上系統;強實時、高可靠應用需求--飛機、火箭控制等;開發需求--信息家電需要越來越多的研究和設計人員參與嵌入系統的開發,如同臺式系統一 樣嵌入系統需要使用方便、功能強大的開發系統,嵌入操作系統也需要支持面向對象和可重用等技術。

4.結束語

嵌入式操作系統與普通系統相比是更為健壯的、低成本的、特性完備的操作系統。它的應用將大大提高嵌入式系統開發的效率,改變以往嵌入式軟件設計只能針對具體的應用從頭做起的狀況,在嵌入式系統之上開發嵌入式系統將減少系統開發的工作量,增強嵌入式應用軟件的可移植性,是嵌入式系統的開發方法更具科學性。

參考文獻:

1. 林建明。嵌入式操作系統技術發展趨勢。計算機工程,2001年27卷第10期。

2. 宋延昭。嵌入式操作系統介紹及選型原則。工業控制計算機,2005年18卷第7期。

第 5 頁

共 5 頁

第二篇:嵌入式操作系統實驗報告

實驗一 嵌入式開發環境的建立

一、實驗目的

通過此實驗系統,讀者可以了解嵌入式實時操作系統 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)

附錄

附查重報告:

“"

第四篇:嵌入式系統發展趨勢

未來嵌入式系統的發展趨勢 在網絡、通信、微電子發展的基礎上,以及勢不可擋的數字化信息產品的強大需求推動下,嵌入式技術具有廣闊的發展創新空間。

(1)低功耗、高性能、高可靠性的系統需求對我國芯片設計是一個機遇。以嵌入式處理 器為領頭的國產CPU、片上系統(SoC)、片上網絡系統(NoC)將有很大的發展。

(2)Linux正逐漸成為嵌入式操作系統的主流;J2ME技術也將對嵌入式軟件的發展產生深遠影響。目前自由軟件技術備受青睞,并對軟件技術的發展產生了巨大的推動作用。嵌入式操作系統內核不僅需要具有微型化、高實時性等基本特征,還將向高可信性、自適應性、構件組件化方向發展;支撐開發環境將更加集成化、自動化、人性化;系統軟件對無線通信和能源管理的功能支持將日益重要。近幾年來,為使嵌入式設備更有效地支持Web服務而開發的操作系統不斷推出。這種操作系統在體系結構上采用面向構件、中間件技術,為應用軟件乃至硬件的動態加載提供支持,即所謂的“即插即用”,在克服以往的嵌入式操作系統的局限性方面顯示出明顯的優勢。

(3)Java虛擬機與嵌入式Java將成為開發嵌入式系統的有力工具。嵌入式系統的多媒體化將變成現實。它在網絡環境中的應用已是不可抗拒的潮流,并將占領網絡接入設備的主導地位。

(4)嵌入式系統與人工智能、模式識別技術的結合,將開發出各種更具人性化、智能化的實際系統。智能手機、數字電視,以及汽車電子的嵌入式應用,是這次機遇中的切入點。伴隨網絡技術、網格計算的發展,以嵌入式移動設備為中心的“無所不在的計算”將成為現實。

第五篇:嵌入式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本身。算法,架構方式等都很重要。

下載嵌入式操作系統的發展歷程、特點及發展趨勢word格式文檔
下載嵌入式操作系統的發展歷程、特點及發展趨勢.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    七款嵌入式Linux操作系統簡介

    除了智能數字終端領域以外,Linux在移動計算平臺、智能工業控制、金融業終端系統,甚至軍事領域都有著廣泛的應用前景。這些Linux被統稱為“嵌入式Linux”。下面就來看看都有哪......

    嵌入式操作系統程課程設計報告

    目錄 一、 實習任務和目的????????????1 二、實習基本要求?????????????1 三、實習題目???????????????1 四、實習地點???......

    私募基金特點及發展歷程

    私募基金特點及發展歷程 私募股權基金的運作方式是股權投資,即通過增資擴股或股份轉讓的方式,獲得非上市公司股份,并通過股份增值轉讓獲利。股權投資的特點包括: 1.股權投資的收......

    歸納中國古代政治制度的發展歷程和特點

    歸納中國古代政治制度的發展歷程和特點 1.發展歷程: 戰國時期初步形成:法家代表韓非子提出建立君主專制中央集權制國家的主張;商鞅變法建立縣制,初步確立了君主集權的政治體制。......

    嵌入式Linux實時操作系統習題總結

    第1章 1.嵌入式系統是指操作系統和功能軟件集成于計算機硬件系統之中。嵌入式系統一般有3個主要的組成部分:硬件、實時操作系統以及應用軟件。 2.嵌入式系統的三要素是嵌入、專......

    青島理工嵌入式操作系統重點總結

    1.磁盤掛載步驟 命令:mount[選項][類型] 步驟:1.確認是否為Linux可以識別的文件系統。 2.確定設備的名稱,可通過使用命令“fdisk-l”查看。 3.必須確定掛載點已經存在,也就是在/......

    嵌入式實時操作系統 項目開發總結報告

    項目開發總結報告 分 類:軟件項目計劃 使用者:E-fanciers Version: 1.0 項 目 承 擔 隊伍:煙臺大學 計算機學院 E-fanciers小組撰 寫 人(簽名): 許超 于歌 完 成 日 期: 2009-7-1......

    各國動漫的發展歷程及特點(推薦閱讀)

    各國動漫的發展歷程及特點 論“各國動漫的發展歷程及特點” 學院:專業: 姓名:陳默 學號: 第 1 頁 共 12 頁 各國動漫的發展歷程及特點 目錄一、 摘要--------------------3 二......

主站蜘蛛池模板: 蜜臀av无码精品人妻色欲| 国内免费久久久久久久久久| 丰满熟妇乱又伦| 在线观看无码av网站永久免费| 内射人妻无套中出无码| 香蕉免费一区二区三区| 久久午夜夜伦鲁鲁片免费无码影院| 久久久久国产精品人妻aⅴ毛片| 99热精这里只有精品| 99久久国产自偷自偷免费一区| 国产av国片精品jk制服丝袜| 久久成人成狠狠爱综合网| 97se亚洲精品一区| 日本精品一区二区三区在线视频| 国外av无码精品国产精品| 国产成人精品高清在线电影| 成在线人视频免费视频| 无码少妇丰满熟妇一区二区| 蜜臀av色欲a片无人一区| 国产成人精品s8视频| 日本japanese丰满多毛| 在线a亚洲老鸭窝天堂| 手机看片aⅴ永久免费无码| 亚洲国产精品久久久久久久| 18禁无遮挡无码网站免费| 亚洲综合欧美在线一区在线播放| 国产亚洲成av人片在线观看| 日本www一道久久久免费| 国产精品一区二区av在线观看| 久久se精品一区二区三区| 国产伦子沙发午休系列资源曝光| 国产精品 视频一区 二区三区| 四川老熟女下面又黑又肥| 337p日本大胆欧美人视频| 国内揄拍国内精品人妻| 最新亚洲中文av在线不卡| 国产又色又爽又刺激在线播放| 成人免费看黄网站yyy456| 欧美日韓性视頻在線| 国产三级精品三级在专区| 国产视频一区二区|