




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本科畢業設計(論文)基基于于51 單單片片機機的的實時實時操操作作系系統統的的研研究究中文摘要中文摘要:基于基于 51 單片機的嵌入式單片機的嵌入式 rtos 操作系統技術的研究操作系統技術的研究本論文主要介紹了當前的 rtos 的發展,及當前的 rtos 的現狀。現在基于單片機軟件的發展已經從單一的線程結構方式逐漸變為多任務的設計思想,和其他的 rtos 一樣,單片機 os 也是采用了微內核的結構,內核提供的功能有:任務的調度、任務之間的通信與同步、內存管理、時鐘管理 中斷管理等。其他的應用組件可有用戶自己添加,以系統進程或函數的方式工作,因而系統是可以裁減的。smallrtos51 就是這
2、樣一內核,本論文將在此內核的基礎上利用內核中的消息隊列的函數實現串口通信的功能,先建立消息的發送和接收隊列,為了使發送和接收不沖突,再建立信號量,實現消息隊列訪問的互斥。串口通信是使用中斷的方式發送和接收數據的,要發送或接收的任務把數據放入發送或接收的消息隊列中,串口發送或接收中斷依次從消息隊列中取出數據并發送或接收,再把數據在 led 數碼顯示器上顯示。當消息隊列中沒有數據,不會產生中斷。關鍵詞:關鍵詞: 單片機 ; rtos ; 任務; 串口通信 ;英文摘要英文摘要:research on technology of embedded real-time systemsbased on 5
3、1 mirocontrollerthis thesis introduced the development of the current rtos primarily, and the present condition of the current rtos, now according to the development of the micro controller software have changed into gradually from the single line distance construction method to the design of multit
4、asking thoughts, as the other rtos , micro controller s os is construction to adopt the micro kernel construction , function of the micro kernel provided :the task management、intertask communication and synchronization、memory management 、time management 、interrupt management etc. other applied modul
5、e the useful an oneself increases, work by system progress or functions, as a result the system is what can cut. the smallrtos51 is like this a rtos kernel , this paper will make use of the kernels message queues to realizes serials functions of correspondence. first establish the message queues of
6、send out and receive, for the sake of making send out and receives to do not conflict, stablishing one more semaphore, realizing with each other scolding of serial interface. serial correspondence is a way to use the interruption to sending or receiving the data, task to sending or receiving the dat
7、a that put the data into message queues to sending or receiving, the interruption of a sending or a receiving take out from the message queues, data is on the led figures display manifestation. . when have no the data in the message queues, it cant produce the interruption.key words: mirocontroller;
8、 real time operating system; serial correspondence; 目錄目錄中文摘要:中文摘要:.i英文摘要:英文摘要:.ii第一章第一章 簡簡 介介.11.1 嵌入操作系統的發展現狀嵌入操作系統的發展現狀.11.2. 實時多任務操作系統實時多任務操作系統(rtos)簡介簡介.11.3 嵌入操作系統的特點嵌入操作系統的特點.41.4. 嵌入是系統的開發過程嵌入是系統的開發過程 .51.4.1 代碼優化注意的問題代碼優化注意的問題.61.4.2 本論文中電路所使用的單片機的簡單介紹本論文中電路所使用的單片機的簡單介紹.61.5 開發工具開發工具 keil c5
9、1 編譯器簡介編譯器簡介.8第二章第二章 rtos 設計概述設計概述.122.1 實時多任務操作系統(實時多任務操作系統(rtos)的設計思想)的設計思想 .122.2 small rtos51 原理原理.142.2.1 任務的狀態和優先級任務的狀態和優先級.142.2.2 任務調度和堆棧變換方法任務調度和堆棧變換方法.172.2.3 任務通信:消息隊列和信號量任務通信:消息隊列和信號量.35第三章第三章 基于基于 small rtos 51 應用應用.393.1 定義所需的變量和函數定義所需的變量和函數.393.2串口通信和顯示電路及程序代碼串口通信和顯示電路及程序代碼.45附錄附錄:.58
10、后記后記.58參考文獻:參考文獻:.59翻譯英文部分翻譯英文部分.60翻譯中文部分翻譯中文部分.72第一章第一章 簡簡 介介1.1 嵌入嵌入操作系統的發展現狀操作系統的發展現狀在當前數字信息技術和網絡技術高速發展的后 pc(post-pc)時代,嵌入式系統已經廣泛地滲透到科學研究、工程設計、軍事技術、各類產業和商業文化藝術以及人們的日常生活等方方面面中。隨著國內外各種嵌入式產品的進一步開發和推廣,嵌入式技術越來越和人們的生活緊密結合。 c 語言的出現使操作系統開發變得簡單。從上世紀80年代開始,出現了各種各樣的商用嵌入式操作系統百家爭鳴的局面,比較著名的有 vxworks、psos 和 win
11、dows ce等等,這些操作系統大部分是為專有系統而開發的。另外,源代碼開放的嵌入式linux,由于其強大的網絡功能和低成本,近來也得到了越來越多的應用。 隨著信息家電的普及,智能化、網絡化將會無所不在,所有這些都離不開嵌入式軟件,而在嵌入式軟件只中最核心的莫過于 rtos(real time operating system,實時操作系統) 。我們都非常熟悉 windows 這樣的操作系統,但卻不一定熟悉嵌入式系統中常用的 rtos。如今,微軟已經推出了 windows 的嵌入式版本windows ce。而風靡一時的 linux 也在嵌入式系統中扮演著重要角色。這樣看來,傳統桌面操作系統和嵌
12、入式操作系統的界線似乎也在淡化.用于嵌入式環境的操作系統 rtos 與桌面操作系統有很多本質的不同。這些不同的特性導致產品開發的不同結果1.2. 實時多任務操作系統實時多任務操作系統(rtos)簡介簡介目前嵌入式應用領域的一個發展傾向是采用實時多任務操作系統(real time operation system 即 rtos)。rtos 的應用是和前面所述的應用復雜化直接相關的。過去一個單片機應用程序所控制的外設和履行的任務不多,采取一個主循環和幾個順序調用的子程序模塊 即可滿足要求。目前單片機芯片本身的性能大幅度提高,可以適應應用復雜化這一要求,問題在于軟件上。隨著應用的復雜化,一個嵌入式控
13、制器系統可能要同時控制/監視很多外設,要求有實時響應,有很多處理任務,各個任務之間有多種信息傳遞,如果仍采用原來 的程序設計方法存在兩個問題。一是中斷可能得不到及時響應,處理時間過長,這對于一些控制場合是不允許的,對于網絡通信方面則會降低系統整體的信息流量。二是系統任務多,要考慮的各種可能也多,各種資源如調度不當就會發生死鎖,降低軟件可靠性,程序編寫的任務量成指數增加。實時操作系統是一段在嵌入式系統啟動后首先執行的背景程序,用戶的應用程序是運行于 rtos之上的各個任務,rtos 根據各個任務的要求,進行資源(包括存儲器、外設等) 管理、消息管理、任務調度、異常處理等工作。在 rtos 支持的
14、系統中,每個任務均有一個優先級,rtos 根據各個任務的優先級,動態地切換各個任務,保證對實時性的要求。 工程師在編寫程序時,可以分別編寫各個任務,不必同時將所有任務運行的各種可能情況 記在心中,大大減小了程序編寫的工作量,而且減小了出錯的可能,保證最終程序具有高可靠性。 實時多任務操作系統,以分時方式運行的多個任務,看上去好像是多個任務“同時”運行。任務之間的切換應當以優先級為根據,只有優先服務方式的 rtos 才是真正的實時操作系統,時間分片方式和協作方式的 rtos 并不是真正的“實時”。許多公司的rtos 采用全優先服務方式的任務調度,可以使中斷潛伏時間減到最小。其 rtos 的主要功
15、能模 塊有調度和中斷處理,任務管理,事件管理,定時器管理,管理,循環隊列管理,資源管理,固定存儲塊管理,規范的 uart 管理,自動掉電管理。這些也是標準的 rtos 所應具有的基本功能。rtos 也體現了一種新的系統設計思想和一個開放的軟件框架,工程師可以在不大量變動系統其它任務的情況下增加或去掉一個任務;一個項目開發的過程中,可以有多個工程師同時進行系統的軟件開發,各個人之間只要制訂好規程和協議即可,既縮短了開發時間, 又降低了最終軟件產品對于具體某個開發者個人的依賴性。為 rtos 設計的成熟和通用的任務可以以庫函數的形式供其它人繼續利用,和 c 語言的設計思想一致。嵌入式系統通常包括構
16、成軟件的基本運行環境的硬件和操作系統兩部分。嵌入式系統的運行環境和應用場合決定了嵌入式系統具有區別于其它操作系統的一些特點。 (1)嵌入式處理器嵌入式處理器可以分為三類:嵌入式微處理器、嵌入式微控制器、嵌入式dsp(digital signal processor)。嵌入式微處理器就是和通用計算機的微處理器對應的cpu。在應用中,一般是將微處理器裝配在專門設計的電路板上,在母板上只保留和嵌入式相關的功能即可,這樣可以滿足嵌入式系統體積小和功耗低的要求。目前的嵌入式處理器主要包括:powerpc、motorola 68000、arm 系列等等。嵌入式微控制器又稱為單片機,它將 cpu、存儲器(少
17、量的 ram、rom 或兩者都有)和其它外設封裝在同一片集成電路里。常見的有8051。 嵌入式 dsp 專門用來對離散時間信號進行極快的處理計算,提高編譯效率和執行速度。在數字濾波、fft、譜分析、圖像處理的分析等領域,dsp 正在大量進入嵌入式市場。(2)微內核結構大多數操作系統至少被劃分為內核層和應用層兩個層次。內核只提供基本的功能,如建立和管理進程、提供文件系統、管理設備等,這些功能以系統調用方式提供給用戶。一些桌面操作系統,如 windows、linux 等,將許多功能引入內核,操作系統的內核變得越來越大。內核變大使得占用的資源增多,剪裁起來很麻煩。 大多數嵌入式操作系統采用了微內核結
18、構,內核只提供基本的功能,比如:任務的調度、任務之間的通信與同步、內存管理、時鐘管理等。其它的應用組件,比如網絡功能、文件系統、gui 系統等均工作在用戶態,以系統進程或函數調用的方式工作。因而系統都是可裁減的,用戶可以根據自己的需要選用相應的組件。 (3)任務調度 在嵌入式系統中,任務即線程。大多數的嵌入式操作系統支持多任務。多任務運行的實現實際是靠 cpu 在多個任務之間切換、調度。每個任務都有其優先級,不同的任務優先級可能相同也可能不同。任務的調度有三種方式:可搶占式調度、不可搶占式調度和時間片輪轉調度。不可搶占式調度是指,一個任務一旦獲得 cpu 就獨占 cpu運行,除非由于某種原因,
19、它決定放棄 cpu 的使用權;可搶占式調度是基于任務優先級的,當前正在運行的任務可以隨時讓位給優先級更高的處于就緒態的其它任務;當兩個或兩個以上任務有同樣的優先級,不同任務輪轉地使用 cpu,直到系統分配的cpu 時間片用完,這就是時間片輪轉調度。 目前,大多數嵌入式操作系統對不同優先級的任務采用基于優先級的搶占式調度法,對相同優先級的任務則采用時間片輪轉調度法。 (4)硬實時和軟實時 有些嵌入式系統對時間的要求較高,稱之為實時系統。有兩種類型的實時系統:硬實時系統和軟實時系統。軟實時系統并不要求限定某一任務必須在一定的時間內完成,只要求各任務運行得越快越好;硬實時系統對系統響應時間有嚴格要求
20、,一旦系統響應時間不能滿足,就可能會引起系統崩潰或致命的錯誤,一般在工業控制中應用較多。 (5)內存管理 針對有內存管理單元(mmu)的處理器設計的一些桌面操作系統,如windows、linux,使用了虛擬存儲器的概念。虛擬內存地址被送到 mmu。在這里,虛擬地址被映射為物理地址,實際存儲器被分割為相同大小的頁面,采用分頁的方式載入進程。一個程序在運行之前,沒有必要全部裝入內存,而是僅將那些當前要運行的部分頁面裝入內存運行。 大多數嵌入式系統針對沒有 mmu 的處理器設計,不能使用處理器的虛擬內存管理技術,采用的是實存儲器管理策略。因而對于內存的訪問是直接的,它對地址的訪問不需要經過 mmu,
21、而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址;而且,大多數嵌入式操作系統對內存空間沒有保護,各個進程實際上共享一個運行空間。一個進程在執行前,系統必須為它分配足夠的連續地址空間,然后全部載入主存儲器的連續空間。 由此可見,嵌入式系統的開發人員不得不參與系統的內存管理。從編譯內核開始,開發人員必須告訴系統這塊開發板到底擁有多少內存;在開發應用程序時,必須考慮內存的分配情況并關注應用程序需要運行空間的大小。另外,由于采用實存儲器管理策略,用戶程序同內核以及其它用戶程序在一個地址空間,程序開發時要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統的正常工作,或導致其它程序的運
22、行異常;因而,嵌入式系統的開發人員對軟件中的一些內存操作要格外小心。 (6)內核加載方式 嵌入式操作系統內核可以在 flash 上直接運行,也可以加載到內存中運行。flash的運行方式,是把內核的可執行映像燒寫到 flash 上,系統啟動時從 flash 的某個地址開始執行。這種方法實際上是很多嵌入式系統所采用的方法。內核加載方式是把內核的壓縮文件存放在 flash 上,系統啟動時讀取壓縮文件在內存里解壓,然后開始執行。這種方式相對復雜一些,但是運行速度可能更快,因為 ram 的存取速率要比 flash 高。 由于嵌入式系統的內存管理機制,嵌入式操作系統對用戶程序采用靜態鏈接的形式。在嵌入式系
23、統中,應用程序和操作系統內核代碼編譯、鏈接生成一個二進制影像文件來運行。1.3 嵌入操作系統的特點嵌入操作系統的特點嵌入式系統給人的第一印象就是占用空間小。所以,普通的 linux 或者 windows操作系統要變成嵌入式操作系統,首先就是要進行裁剪。然而,與桌面環境相比,嵌入式環境對于操作系統系統要求不僅僅是“小”,二者在設計要求上有著本質的不同。這些不同主要體現在可裁剪性、實時性和可靠性等三個方面。 可裁剪性: 從硬件環境來看,桌面操作系統具有標準化的 cpu、存儲和 i/o 架構,而嵌入式環境中的 rtos 的硬件環境只有標準化的 cpu,沒有標準化的存儲、i/o和顯示器架構。 從應用環
24、境來看,桌面操作系統面向復雜多變的應用,而 rtos 面向單一設備的單一應用。 從開發界面來看,桌面操作系統試圖給開發人員提供一個“黑箱”,讓開發人員通過一系列標準的系統調用來使用操作系統中的功能,而嵌入式試圖為開發人員提供一個“白箱”,讓開發人員可以自主控制系統的所有資源。 應用于嵌入式環境的 rtos,在研發的時候就必須立足于改變自身、開放自身,讓開發人員可以根據硬件環境和應用環境的不同而對操作系統進行靈活的裁剪和配置,因為對于任何一個具體的嵌入式設備,它的功能是確定的,因此只要從原有操作系統中把這個特定應用所需的功能拿進來即可。應當指出的是:如果一個操作系統平臺只能依靠手工的方式去掉一些
25、代碼,這根本就不是可裁剪性。所謂可裁剪性是在軟件工程階段利用軟件配置方法實現軟件構件的“即插即用”。可裁剪性帶給用戶的一個最直接的好處是硬件成本降低,這對于成本敏感的應用,如消費電子類設備,具有重要的現實意義。由于設備中只包含應用程序用到的那部分操作系統功能,這就使得系統變得簡單、易把握,從而提高系統的可靠性。實時性:所謂實時性,其核心含義在于確定性,而不是單純的速度快。也就是說,rtos 所要求的是在規定的時間內做完應該做的事情,并且操作系統的行為(執行線索)是確定的,這是寫出高可靠性程序的基礎。 因為嵌入式系統主要是對儀器設備的動作進行監測控制的,而一般的桌面操作系統基本上是根據人在鍵盤和
26、鼠標發出的命令進行工作。相對而言,儀器設備的動作具有嚴格的、機械的時序要求,而人的動作和反應在時序上并不那么嚴格。比如,用于控制火箭發動機的嵌入式系統,它所發出的指令不僅要速度快,而且多個發動機之間的時序要求非常嚴格,否則就會差之毫厘、謬之千里。在這樣的應用環境中,非實時的普通操作系統無論如何是無法適應的。可靠性: 桌面操作系統與 rtos 相比,另一個差別就是對于穩定性、可靠性方面的設計思路。桌面操作系統比較龐大、復雜,而 rtos 比較小巧、簡捷。 運行于嵌入式環境中的 rtos 要求應用軟件具有與操作系統同樣的可靠性,這種設計思路對應用開發人員提出了更高的要求,同時也要求操作系統自身足夠
27、開放。著名的“木桶原理”告訴我們,局部的不足會導致整體的缺陷。要保證系統的可靠性,必須保證系統中每一個部分都是可靠的,任何部分的不可靠都會導致系統整體的不可靠。rtos 對軟件開發人員來說是完全開放的,是一個白箱,允許開發人員非常清楚地了解和掌握操作系統內部情況,對存儲器中的每一位和每一個 i/o 接口進行操作控制,從而可以設計出高效穩定的應用軟件。相對于 windows 環境下的應用程序開發,嵌入式系統下的程序開發有著很多的不同。不同的硬件平臺和操作系統帶來了許多附加的開發復雜性。1.4. 嵌入是系統的開發過程嵌入是系統的開發過程 在嵌入式開發過程中有宿主機和目標機的角色之分:宿主機是執行編
28、譯、鏈接、定址過程的計算機;目標機指運行嵌入式軟件的硬件平臺。首先須把應用程序轉換成可以在目標機上運行的二進制代碼。這一過程包含三個步驟:編譯、鏈接、定址。編譯過程由交叉編譯器實現。所謂交叉編譯器就是運行在一個計算機平臺上并為另一個平臺產生代碼的編譯器。常用的交叉編譯器有 gnu c/c+(gcc)。編譯過程產生的所有目標文件被鏈接成一個目標文件,稱為鏈接過程。定址過程會把物理存儲器地址指定給目標文件的每個相對偏移處。該過程生成的文件就是可以在嵌入式平臺上執行的二進制文件。 嵌入式開發過程中另一個重要的步驟是調試目標機上的應用程序。嵌入式調試采用交叉調試器,一般采用宿主機-目標機的調試方式,它
29、們之間由串行口線或以太網或bdm 線相連。交叉調試有任務級、源碼級和匯編級的調試,調試時需將宿主機上的應用程序和操作系統內核下載到目標機的 ram 中或直接燒錄到目標機的 rom 中。目標監控器是調試器對目標機上運行的應用程序進行控制的代理(debugger agent),事先被固化在目標機的 flash、rom 中,在目標機上電后自動啟動,并等待宿主機方調試器發來的命令,配合調試器完成應用程序的下載、運行和基本的調試功能,將調試信息返回給宿主機。 向嵌入式平臺移植軟件 : 大部分嵌入式開發人員選用的軟件開發模式是先在 pc機上編寫軟件,再進行軟件的移植工作。在 pc 機上編寫軟件時,要注意軟
30、件的可移植性,選用具有較高移植性的編程語言(如 c 語言),盡量少調用操作系統函數,注意屏蔽不同硬件平臺帶來的字節順序、字節對齊等問題。1.4.1 代碼優化注意的問題代碼優化注意的問題嵌入式系統對應用軟件的質量要求更高,因而在嵌入式開發中尤其須注意對代碼進行優化,盡可能地提高代碼的效率,減少代碼的大小。雖然現代 c 和 c+編譯器都提供了一定程度的代碼優化,但大部分由編譯器執行的優化技術僅涉及執行速度和代碼大小的平衡,不可能使程序既快又小,因而必須在編寫嵌入式軟件時采取必要的措施。 (1)提高代碼的效率)提高代碼的效率 switch-case 語句。在程序中經常會使用 switch-case
31、語句,每一個由機器語言實現的測試和跳轉僅僅是為了決定下一步要做什么,就浪費了處理器時間。為了提高速度,可以把具體的情況按照它們發生的相對頻率排序。即把最可能發生的情況放在第一,最不可能發生的情況放在最后,這樣會減少平均的代碼執行時間。 全局變量。使用全局變量比向函數傳遞參數更加有效率,這樣做去除了函數調用前參數入棧和函數完成后參數出棧的需要。當然,使用全局變量會對程序有一些負作用。 (2)減小代碼的大小)減小代碼的大小 嵌入式系統編程應避免使用標準庫例程,因為很多大的庫例程設法處理所有可能的情況,所以占用了龐大的內存空間,因而應盡可能地減少使用標準庫例程。 (3)避免內存泄漏)避免內存泄漏 用
32、戶內存空間(堆)為 ram 中全局數據和任務堆棧空間都分配后的剩余空間,為了使程序能有足夠的內存運行,必須在申請的內存不用后及時地將其釋放,以確保再次申請時能有空間。如果程序中存在內存泄漏(即申請內存后沒有及時釋放)的情況,程序最終會因為沒有足夠的內存空間而無法運行。以上簡單說明了嵌入式系統的特點、嵌入式產品的開發和應用。嵌入式系統開發和其他的開發工作實質上并無區別,唯一改變的是每個硬件平臺都是獨特的,這一個不同點導致了許多附加的開發復雜性,因而,在嵌入式開發過程中要格外注意軟件創建過程;而且,在開發嵌入式產品之前要對選用的嵌入式硬件平臺有較多的了解,具備相應的硬件知識,和硬件工程師密切配合;
33、在選用嵌入式操作系統和硬件平臺時要根據所要開發的應用的需要以及成本等方面的考慮選擇合適的系統和平臺。1.4.2 本論文中電路所使用的單片機的簡單介紹本論文中電路所使用的單片機的簡單介紹 p89c51ra2/rb2/rc2/rd2xx 包含8k/16k/32k/64k 可并行可編程的非易失性帶flash 程序存儲器,并可實現對器件串行在系統編程(isp)和在應用中編程(iap)。在系統編程(isp:in-system programming):當 mcu 安裝在用戶板上時,允許用戶下載新的代碼。在應用中編程(iap:in-application programming):mcu 可以在系統中獲取
34、新代碼并對自己重新編程。這種方法允許通過調制解調器連接進行遠程編程。片內 rom 中固化的默認的串行加載程序(boot loader)允許 isp 通過 uart 將程序代碼裝入 flash 存儲器,而 flash 代碼中則不需要加載程序。對于 iap,用戶程序通過使用片內 rom 中的標準程序對 flash 存儲器進行擦除和重新編程。 該器件可通過并行編程或在系統編程對一個 flash 位進行編程,從而選擇6時鐘或12時鐘模式。此外,也可通過時鐘控制寄存器 ckcon 中的 x2位選擇6時鐘或12時鐘模式。另外,當處于6時鐘模式時,片內外設可以選擇一個機器周期6時鐘或是12時鐘。可通過 ck
35、con 寄存器對每個外設的時鐘源進行選擇。 該系列微控制器是80c51微控制器的派生器件,是采用先進 cmos 工藝制造的8位微控制器,指令系統與80c51完全相同。該器件有4組8位 i/o 口、3個16位定時/計數器、多中斷源-4中斷優先級-嵌套的中斷結構、1個增強型 uart、片內振蕩器及時序電路。 新增的特性使得 p89c51ra2/rb2/rc2/rd2成為功能更強大的微控制器,從而更好地支持需要用到脈寬調制,高速 i/o,遞增/遞減計數功能(如電機控制)等應用場合。主要的特性主要的特性80c51中央處理單元;具有 isp 和 iap 功能的片內 flash 程序存儲器;片內 boot
36、 rom 包含底層 flash 編程子程序,以實現通過 uart 下載程序;可實現最終用戶應用的編程(iap);與87c51兼容的并行編程硬件接口;每個機器周期為6個時鐘周期(標準); 可通過并行編程器選擇6時鐘/12時鐘模式(芯片擦除后默認的時鐘模式為12時鐘);可通過 isp 對選擇6時鐘/12時鐘模式的 flash 位進行擦除和編程;可通過 sfr 位“在運行中改變”6時鐘/12時鐘模式;當 cpu 為6時鐘模式時,外圍功能(pca、定時器、uart)可選擇使用6時鐘/12時鐘模式;采用6時鐘周期時頻率可高達20mhz(相當于40mhz),采用12時鐘周期時頻率可達33mhz;全靜態操作
37、;ram 可外部擴展到64k 字節;4個中斷優先級;7個中斷源; 4個8位 i/o 口;全雙工增強型 uart幀錯誤檢測;自動地址識別;電源控制模式時鐘可停止和恢復;空閑模式;掉電模式;可編程時鐘輸出;異步端口復位;雙 dptr 寄存器;低 emi(禁止 ale);可編程計數器陣列(pca)pwm; 捕獲/比較。 1.5 開發工具開發工具 keil c51 編譯器簡介編譯器簡介第一部分 8051開發工具 keil c51標準 c 編譯器為8051微控制器的軟件開發提供了 c 語言環境,同時保留了匯編代碼高效,快速的特點。c51編譯器的功能不斷增強, 使你可以更加貼近 cpu 本身,及其它的衍生
38、產品。c51已被完全集成到 uvision2的集成開發環境中,這個集成開發環境包含:編譯器,匯編 器,實時操作系統,項目管理器,調試器。uvision2 ide 可為它們提供單一而靈活的開發環境。 c51 v7版本是目前最高效、靈活的8051開發平臺。它可以支持所有8051的衍生產品,也可以支持所有兼容的仿真器,同時支持其它第三 方開發工具。因此,c51 v7版本無疑是8051開發用戶的最佳選擇。 第二部分 uvision2集成開發環境 一、項目管理 工程(project)是由源文件、開發工具選項以及編程說明三部分組成的。 一個單一的 uvision2工程能夠產生一個或多個目標程序。產生目標程
39、序的源文件構成“組”。開發工具選項可以對應目標,組或單個文件。 uvision2包含一個器件數據庫(device database),可以自動設置匯編器、編譯器、連接定位器及調試器選項,來滿足用戶充分利用特定 微控制器的要求。此數據庫包含:片上存儲器和外圍設備的信息,擴展數據指針(extra data pointer)或者加速器(math accelerator)的特 性。 uvision2可以為片外存儲器產生必要的連接選項:確定起始地址和規模。 二、集成功能 uvision2的強大功能有助于用戶按期完工。 1.集成源極瀏覽器利用符號數據庫使用戶可以快速瀏覽源文件。用詳細的符號信息來優化用戶變
40、數存儲器。 2.文件尋找功能:在特定文件中執行全局文件搜索。 3.工具菜單:允許在 v2集成開發環境下啟動用戶功能。 4.可配置 svcs 接口:提供對版本控制系統的入口。 5.pclint 接口:對應用程序代碼進行深層語法分析。 6.infineon 的 easycase 接口:集成塊集代碼產生。 7.infineon 的 dave 功能:協助用戶的 cpu 和外部程序。dave 工程可被直接輸入uvision2 第三部分編輯器和調試器 一、源代碼編輯器 uvision2編輯器包含了所有用戶熟悉的特性。彩色語法顯像和文件辯識都對 c 源代碼進行和優化。可以在編輯器內調試程序,它能提供一種自然
41、的調試環境,使你更快速地檢查和修改程序。 二、斷點 uvision2允許用戶在編輯時設置程序斷點(甚至在源代碼未經編譯和匯編之前) 。用戶啟動 v2調試器之后,斷點即被激活。斷點可設置為條件表達式,變量或存儲器訪問,斷點被觸發后,調試器命令或調試功能即可執行。 在屬性框(attributes column)中可以快速瀏覽斷點設置情況和源程序行的位置。代碼覆蓋率信息可以讓你區分程序中已執行和未執行的部分。 三、調試函數語言 uvision2中,你可以編寫或使用類似 c 的數語言進行調試。 1.內部函數:如 printf, memset, rand 及其它功能的函數。 2.信號函數:模擬產生 cp
42、u 的模擬信號和脈沖信號(simulate analog and digital inputs to cpu)。 3.用戶函數:擴展指令范圍,合并重復動作。 四、變量和存儲器 用戶可以在編輯器中選中變呈來觀察其取值。雙層窗口顯示,可進行以下調整: 1.當前函數的局部變量 2.用戶在兩個不同 watch 窗口頁面上的自定義變量 3.堆棧調用(call stack)頁面上的調用記錄(樹)(call tree) 4.不同格式的四個存儲區 第四部分 c51編譯器 keil c51編譯器在遵循 ansi 標準的同時,為8051微控制器系列特別設計。語言上的擴展能讓用戶使用應用中的所有資源。 一、存儲器和
43、特殊功能寄存器的存取 c51編譯器可以實現對8051系列所有資源的操作。sfr 的存取由 sfr 和 sbit 兩個關鍵字來提供。變量可旋轉到任一個地址空間。用關鍵字at還能把變量放入固定的存儲器存儲模式(大,中,小)決定了變量的存儲類型。 連接定位器支持的代碼區可達32個,這就允許用戶在原有64krom 的8015基礎上擴展程序。在 v2的編譯器和許多高性能仿真器中,可以支持應用程序的調試。 二、中斷功能 c51允許用戶使用 c 語言編寫中斷服務程序,快速進、出代碼和寄存器區的轉換功能使 c 語言中斷功能更加高效。 可再入功能是用關鍵字來定義的。多任務,中斷或非中斷的代碼要求必須具備可再入功
44、能。 三、靈活的指針 c51提供了靈活高效的指針。 通用指針用3個字節來存儲存儲器類型及目標地址,可以在8051的任意存儲區內存取任何變量。 特殊指針在聲明的同時已指定了存儲器類型,指向某一特定的存儲區域。由于地址的存儲只需12字節,因此,指針存取非常迅速。 第五部分代碼優化 一、通用代碼優化 1.常量重疊(constant folding) 6.寄存器間參數傳遞(parameter passing in register) 2.通用子表達式刪除(common subexpression elimination) 7.循環(loop rotation) 3.長度縮減速(reduction) 8
45、.死碼刪除(dead code elimination) 4.控制流優化(control flow optimization) 9.通用 tail merging 5.寄存器變量使用(register variable usage) 10.通用子程序塊打包(block subroutine packing) 二、8051特殊優化 1.孔頸優化(peephole optimization) 4.數字覆蓋(overlaying) 2.跳轉分支優化(switch-case optimization) 5.擴展入口優化(extended access optimization) 3.中斷函數優化(in
46、terrupt function optimization) 三、寄存器優化 c51為函數參數和局域變量分配了9個 cpu 寄存器。寄存器間最多可傳遞三個參數。p 全局寄存器優化可刪除不必要代碼,優化 cpu 寄存器設備。 四、c 語言實時庫 c51實時庫含100多種功能,其中大多數是可再入的。庫支持所有的 ansi c 的程序,與嵌入式應用程序的限制相符。 固有程序為硬件提供特殊指令,如:nop, testbit, rol, ror。 五,a51宏匯編 a51宏匯編支持標準宏和 mpl 宏。要實現快速產生匯編程序 shell,就直接使用 c51編譯器的 src。 在新的 a51 v7版本中,
47、允許用戶 c 包含的頭文件來定義常量和 sfr。如今,一個單一頭文件可被應用到 x 程序和匯編程序中。 第七部分測試程序uvision2調試器具備所有常規源極調試,符號調試特性以及歷史跟蹤,代碼覆蓋,復雜斷點等功能dde 界面和 shift 語言支持自動程序測試 一、和外設模擬裝置 uvision2為8051及衍生產品提供了高速模擬功能和片上擴展口在對話框內可直接觀察和修改值,也可以用預裝的 c-like 宏指令書寫符號函數來提供動態輸入。 二、目標監控器 uvision2含一個可配置的監控器,可測試目標器件上的軟件體。監控器用 uvision2的調試器直接工作,可支持代碼區。它要求目標系統具
48、備6字節堆棧空間,6kb 的代碼和256字節 xdata ram。 三、mcb517/251啟動工具包 在開始一項8051工程時,mcb 啟動工具會對你有很大幫助。每一個啟動工具包括一套2k 字節的開發工具和許多可快速運行的舉例程序。用戶可在檢測8051性能的同時,查看開發工具的可行性。 mcb517ac 板含高性能 infineon c517a 單片機,它提供標準8052外圍設備和 a/d轉換器,pwm,搜索比較,8位數據指針,一個高速運算單 元。同時包含對81c90can 控制器和代碼區的支持。 第八部分 c51 v7版增強功能介紹 c51 v7版提供了很多新的和增強的功能,使開發8051
49、嵌入式應用比以前更加簡單。c51 v7版新功能包括:新版編譯器和連接器更加優化,可以縮短程序的大小;能完全模擬支持的器件更多,如 philips 80c51mx, dallas 80c390和 analog devices microconverters;新的 isd51系統內調試器,允許在不變的目標硬件上調試程序;可更好地支持 philips 51mx 的24位地址; rtx51 tiny 增加了新功能,它比以前更小,但提供的功能更多。若您需要更多的信息,敬請訪問 http:/ 或與我們聯系。 使用 c51的一些心得體會: 1)c 忌諱絕對定位。忌諱絕對定位。在 c 中變量的定位是編譯器的事
50、情,只要定義變量和變量的作用域,編譯器就把一個固定地址給這個變量。怎么取得這個變量的地址?要用指針。比如 unsigned char data x;后,x 的地址就是&x,只要查看這個參數,就可以在程序中知道具體的地址了。 2)設置設置 sp 的問題。的問題。編譯器在把所有變量和緩沖區賦予地址后,自動把最后一個字節開始的地方,作為 sp 的開始位置,所以初學者是不必 要去理會的。這體現 c 的優越性,很多事情 c 編譯時候做了。 3)用用 c 的主程序結構:的主程序結構: #include void main(void) while(1); 這是個最小的成功的 c 程序,包括頭部文件和
51、程序主體。 頭部文件的名詞解釋:引用的外部資源文件,這個文件包括了硬件信息和外部模塊提供的可使用的函數和變量的說明。可以用文本方 式打開 reg52.h,仔細研究下,會有一些寫程序的體會。 4)這樣構成一個這樣構成一個 c 項目項目 在 c 中,常用項目來管理。項目一般分為兩大塊:c 文件塊和頭部文件塊。 我們常把不同功能寫在不同的 c 文件中,依靠項目的管理,最后把所有文件連接起來,這樣就可以得到可以燒錄的 hex 文件或 bin 文件。 這些 c 文件中,有且只有唯一一個包括 main()函數,和 3)中一樣的 c 文件。 用頭部文件把各個不同的 c 互相連接起來。一個 c 文件基本上要對
52、應有一個 h 頭部文件,這個 h 文件就包含本 c 文件中可以提供給外面使 用的變量和函數,沒有在 h 文件中列出的文件,可以算是該 c 文件的內部函數和變量,外部 c 不能使用。5)51 家族家族 核心都是基于 8031 的,有很多在此核心上進行擴展,有的把程序存儲器放在內部:89c(s)51.,有的增加了 ram:89c(s)52.,有的增加 了一些專用硬件80c552.,有的改變時鐘時序 w77e58.。市面上現在常用的主要有 atmel 公司的at89x 系列,philips 的 p87(89)x,臺 灣 winbond 的 w77(78)x 系列,cygnal 的c8051fx 系列
53、。 6)51 單片機結構的單片機結構的 c 描述描述寄存器和 io 及其它硬件設備的地址名稱,在相應的 c頭部文件 中可以找到。51 為 reg51.h,52 為 reg52.h,以次類推,比如 winbond 的 78e58就為 w78e58.h 這些 h 文件中的描述: srf,定義一個 8 位的設備。 srf16,定義一個 16 位的設備。 sbit,定義一個位的設備。 用這些語句定義后,就可以在 c 中象匯編一樣使用這些硬件設備,這是單片機應用比標準 c 特殊的地方,其它差別很少。 7)在在 51 系列中系列中 data,idata,xdata,pdata 的區別的區別 data:固定
54、指前面 0 x00-0 x7f 的 128個 ram,可以直接讀寫的,速度最快,生成的代碼也最小。 idata:固定指前面 0 x00-0 xff 的 256 個 ram,其中前 128 和 data 的 128 完全相同,只是因為訪問的方式不同。idata 是用類似 c 中的指針方式 訪問的。匯編中的語句為:mox acc,rx.(不重要的補充:c 中 idata 做指針式的訪問效果很好) xdata:外部擴展 ram,一般指外部 0 x0000-0 xffff 空間,用 dptr 訪問。 pdata:外部擴展 ram 的低 256 個字節,地址出現在 a0-a7 的上時讀寫,用 movx
55、acc,rx 讀寫。這個比較特殊,而且 c51 好象有對此bug, 建議少用。但也有他的優點,具體用法屬于中級問題,這里不提。 8)startup.a51的作用的作用 和匯編一樣,在 c 中定義的那些變量和數組的初始化就在startup.a51中進行,如果你在定義全局變量時帶有數值,如 unsigned char data xxx=100;,那 startup.a51中就會有相關的賦值。如果沒有=100,startup.a51就會把他清0。(startup.a51=變量的初始化)。 這些初始化完畢后,還會設置 sp 指針。對非變量區域,如堆棧區,將不會有賦值或清零動作第二章第二章 rtos設計
56、概述設計概述2.1 實時多任務操作系統(實時多任務操作系統(rtos)的設計思想)的設計思想首先要討論的是多任務多線程機制的程序設計思想。一些嵌入式設備需要操作系統,例如掌上電腦、pda、網絡控制器等高性能的手持設備和移動設備。它們往往和無線通信、互聯網訪問和多媒體處理等復雜而強大的功能聯系在一起;對 cpu 要求也很高,往往是以通用 cpu 為原型的各種高端嵌入式處理器。作為一個完整的操作系統,rtos 有一個可靠性很高的實時內核,將 cpu 時間、中斷、i/o、定時器等資源都包括起來,留給用戶一個標準的應用程序接口(api);根據各個任務的優先級,合理地在不同任務之間分配 cpu 的時間,
57、保證程序執行的實時性、可靠性。內核一般都能提供任務調度和中斷服務等功能,部分高檔商業化產品,如 windows xp embedded,甚至支持32位地址空間、虛擬存儲管理、多進程以及嵌入式操作系統中不多見的動態鏈接庫(dll)。對于這些 rtos 來說,多任務實時處理不是件困難的事情。 但更多的情況下,用戶使用的是另一類 cpu微控制器,即單片機,往往是按照某一流程執行單一任務。出于成本和技術上的原因,這類軟件開發多數還是基于處理器直接編寫,沒有選配實時多任務操作系統作為開發平臺,也不需要將系統軟件和應用軟件分開處理。但是在實際應用中,有時也會面臨同時處理多個并行任務的要求,這就需要安排一種
58、運行機制,來模擬 rtos 中的處理方法。1 rtos 中的設計思路單處理機多道程序系統具有如下特征:從宏觀上看,幾種程序“同時運行”。即它們先后開始了各自的運行,且均未結束。從微機上看,幾道程序“交替執行”。對于單處理機系統而言,它們只能輪流地占用 cpu。其實質是指幾道程序在處理機中“交替執行”。我們按照現在常用的方法,把一道程序和一個任務對應,把任務中的每個分開的、獨立執行的部分稱之為線程。具體到 rtos 來說,一方面,實時操作中的多任務引起的并發性和實時性,要求操作系統對資源分配具有更強的控制能力。通常的辦法是采取設立前臺與后臺兩個作業的分配辦法。前臺作業中包含實時采集、控制、處理有
59、關的任務,任務優先級較高;后臺作業一般是對數據進行分析、輸出數據、響應操作員請求等任務,優先級較低。后臺作業中與后臺作業并非完全孤立的;后臺作業所需數據由前臺作業存儲共享內存區內,作業之間通過共享存儲區進行數據交換。另一方面,實時任務總是由某個事件發生或時間條件滿足來激活。事件有兩種:內部事件和外部事件。時間驅動也有兩種:按絕對時間驅動和按相對時間驅動。內部事件驅動是指某一程序運行的結果導致另一任務的啟動,這個結果可能是數據滿足一定條件,也可能是釋放了某一資源;而最典型的實時任務是由外部事件驅動的。在實時系統中,外部事件發生有時是不可預測的,由外部事件驅動的任務一般是需要立即執行的任務,它的優
60、先級最高。絕對時間驅動是指在某指定時刻執行的任務,也就是在自然時鐘的絕對時間執行。相對時間驅動是指周期性執行的任務,總是相對上一次執行時間計時,執行時間間隔一定。除了周期性任務外,還有一些同步任務也可能由相對時間驅動,如等待某種條件到來。等待時間是編程設定的。相對時間可用計算機內部時鐘或軟件計時。 獨立并行任務 我們在實時設計當中,這兩方面的問題都有所體現,所有的事件驅動和時間驅動都體現在設置相應的任務標識和線程標識。從后面的討論中可以看出,當硬件環境一定時,依據這些標識,通過安排系統內中斷響應方式和調整任務調度算法,可以有效解決多任務并行問題,因為系統的實時性主要取決于這兩點。前臺控制流程 線程可分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45724-2025遙感衛星的星地數傳鏈路設計方法
- GB/T 18501.8100-2025電子和電氣設備用連接器產品要求第8-100部分:電源連接器2芯、3芯20 A功率加2芯信號塑料外殼屏蔽密封連接器詳細規范
- 應用電子技術專業教學標準(高等職業教育專科)2025修訂
- 2024年中國耐堿膠布市場調查報告
- 內科疾病診療精要
- 2025年中國酒類奢侈品行業市場調查研究及投資前景預測報告
- 2025年中國船用雷達行業發展監測及投資戰略規劃報告
- 2025年中國礦用壓縮分離設備行業市場深度分析及投資策略咨詢報告
- 稅務師老師講課課件下載
- 2023-2029年中國貴州省大數據行業市場發展監測及投資戰略咨詢報告
- 2025年高考軍隊院校征集和招錄人員政治考核表(原表)
- TCCEAS001-2022建設項目工程總承包計價規范
- 全國高中生物優質課一等獎《袁隆平與雜交水稻》教學設計
- 高校輔導員手冊
- 國開電大 社會統計學 形考任務2答案
- 五年級英語質量調研卷答題卡
- 二年級下冊語文試題 河南省商丘市永城市 第二學期二年級語文期末試題(圖片版無答案)部編版
- 工業機器人技術與智能制造
- 建筑工程聯營合作協議(合同)
- 最新版焊接工藝評定格式標準
- 【圖文】泵用密封沖洗方案演示圖
評論
0/150
提交評論