計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)_第1頁
計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)_第2頁
計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)_第3頁
計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)_第4頁
計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

計(jì)算機(jī)三級嵌入式系統(tǒng)開發(fā)技術(shù)考點(diǎn)總結(jié)嵌入式系統(tǒng)硬件組成概述嵌入式最小硬件系統(tǒng):嵌入式處理器運(yùn)行必備條件的硬件電路與嵌入式處理器共同構(gòu)成了嵌入式最小硬件系統(tǒng)。嵌入式最小硬件系統(tǒng)組成:嵌入式處理器、時鐘電路、電源電路、復(fù)位電路、存儲器、調(diào)試測試接口電源電路:嵌入式系統(tǒng)常用的電源模塊式交流變直流(AC-DC)模塊、直流到直流(DC-DC)模塊以及低壓差穩(wěn)壓器(LDO)。穩(wěn)壓器包括普通穩(wěn)壓器和低壓差穩(wěn)壓器LDO。78XX系列屬于普通穩(wěn)壓器,LM2576/2596為開關(guān)穩(wěn)壓芯片,CCAT6219/AS2815/1117/2908等屬于低壓差穩(wěn)壓器。穩(wěn)壓器最大的特點(diǎn)是低噪聲、低成本、紋波小、精度高、電路簡單。時鐘電路:幾乎所有的嵌入式處理器本質(zhì)上均為同步時序電路,需要時鐘信號才能按照節(jié)拍正常工作。復(fù)位電路:嵌入式處理器都有一個系統(tǒng)復(fù)位引腳為nRESET或RESET,n表示低電平復(fù)位,不帶n的表示高電平復(fù)位。JTAG測試接口:聯(lián)合測試行為小組(JTAG)是一種國際標(biāo)準(zhǔn)測試協(xié)議,主要用于芯片內(nèi)部測試以及對系統(tǒng)進(jìn)行仿真和調(diào)試。測試訪問口:TAP基于ARM內(nèi)核的電性嵌入式應(yīng)用系統(tǒng)硬件組成:嵌入式最小硬件系統(tǒng)、前向通道、后向通道、人機(jī)交互通道、以及相互互聯(lián)通信通道等組成。前向通道,即輸入接口,包隨機(jī)存取存儲器包括靜態(tài)和動態(tài)兩種形式,即SRAM和DRAM,都是易失性存儲器。目前嵌入式處理器內(nèi)嵌的數(shù)據(jù)存儲器基本都采用SRAM,外部擴(kuò)展的存儲器大都采用DRAM及改進(jìn)型(DDRSDRAM、DDR2SDRAM、DDR3、DDR4)只讀存儲器MROM、PROM、EPROM、EEPROM、FlashROM、NORFlash和NANDFlashNANDFlashROM以頁(行)為單位隨機(jī)存取,速度慢,變成復(fù)雜,大多作為數(shù)據(jù)存儲器使用。(數(shù)碼相機(jī)、MP3隨身聽記憶卡、U盤)NORFlashROM以字節(jié)為單位隨機(jī)存取,寫入和擦除速度較慢。鐵電存儲器:非易失,可取代SRAM和Flash存儲器磁性存儲器:可取代Flash存儲器存儲器主要性能指標(biāo)存儲器的存取速度、存儲容量、帶寬容量:對于內(nèi)存容量而言,單位之間換算以2^10=1024倍表示,對于外存容量(磁盤、U盤、Flash存儲卡),以10^3=1000倍表示。內(nèi)存儲器容量取決于存儲單元的個數(shù)和存儲器各單元的位數(shù):內(nèi)存容量=單元總數(shù)*數(shù)據(jù)位數(shù)/單元存儲芯片的容量完全取決于存儲器芯片的地址線條數(shù)和數(shù)據(jù)線的位數(shù)。V=2^m*n(L:單元個數(shù),n:數(shù)據(jù)線位條數(shù),m:地址條數(shù),m=log2L)存取時間:從CPU給出有效的存儲器地址開始到存儲器讀出數(shù)據(jù)所需要的時間。帶寬:存儲器每秒可傳輸?shù)淖畲髷?shù)據(jù)總量。并行總線的存儲器帶寬:帶寬=總線頻率*數(shù)據(jù)寬度/8*傳輸次數(shù)/總線周期(B/s)串行總線帶寬=總線頻率*1/10以10位為一個數(shù)據(jù)幀(含一字節(jié)數(shù)據(jù))片內(nèi)存儲器片內(nèi)Cache、片內(nèi)FlashROM(嵌入式微控制器內(nèi)部集成的程序存儲器)、片內(nèi)SRAM(集成的數(shù)據(jù)存儲器,SRAM屬于易失性存儲器)、片內(nèi)E2PROM(作為長期保存重要數(shù)據(jù)的存儲器,屬于非易失性)、片內(nèi)FRAM(具有RAM和ROM的全部特點(diǎn),是當(dāng)前嵌入式微控制器內(nèi)部的主要存儲器之一)片外存儲器外部存儲器的擴(kuò)展是靠ARM內(nèi)核提供的高帶寬外部存儲器控制器接口完成的。片外程序存儲器:NORFlash、NANDFlash片外數(shù)據(jù)存儲器:SDRAM、DDR/DDR2/DDR3/DDR4外部存儲設(shè)備SM卡、CF卡、MMC、SD卡、記憶棒、XD卡、U盤、微硬盤3.4I/O接口及常用I/O設(shè)備通用I/O接口GPIO嵌入式系統(tǒng)外部通信接口基于UART的RS-232/RS-485接口RS-232接口:傳輸距離可以達(dá)到15m左右,無法消除共模干涉。RS-485接口:采用差分信號傳輸方式,具有很強(qiáng)的抗共模干擾能力,傳輸距離可達(dá)1200m,不能構(gòu)成多主系統(tǒng)CAN總線接口廣泛應(yīng)用于工控領(lǐng)域以及要求抗干擾和實(shí)時性強(qiáng)的場合;采用差分創(chuàng)術(shù),控制器內(nèi)置CRC教研,傳輸可靠性強(qiáng),可構(gòu)成多主多從系統(tǒng);CAN總線的數(shù)據(jù)幀由7不同的域組成:幀起始、仲裁域、控制域、數(shù)據(jù)域、CRC域、應(yīng)答域。幀結(jié)尾,其中數(shù)據(jù)域的長度可選為0-8B以太網(wǎng)通信接口:分為基于內(nèi)置以太網(wǎng)控制器的以太網(wǎng)接口(以太網(wǎng)控制器MAC層,物理層PHY層的收發(fā)器電路)和不帶內(nèi)置以太網(wǎng)控制器的以太網(wǎng)接口常用無線通信接口GPS、GPRS、WiFi、藍(lán)牙以及通用射頻通信模塊等GPS模塊:必須具備GPS終端、傳輸網(wǎng)絡(luò)和監(jiān)控平臺三個要素。GPRS模塊:以封包(Packet,也稱為分組)方式進(jìn)行數(shù)據(jù)傳輸。WiFi模塊:使用IEEE802.11系列協(xié)議,內(nèi)置無線網(wǎng)絡(luò)協(xié)議IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)用戶串口、TTL電平、USB接口或SPI接口數(shù)據(jù)到無線網(wǎng)絡(luò)之間的轉(zhuǎn)換。藍(lán)牙模塊:支持設(shè)備短距離通信(10m內(nèi))的無線低速(1Mb/s)通信技術(shù),基于串口UART或USB其他無線模塊:射頻無線收發(fā)模塊,如Si4432嵌入式系統(tǒng)的軟件組成嵌入式系統(tǒng)與通用計(jì)算機(jī)系統(tǒng)的軟件的相同之處指的是:嵌入式系統(tǒng)具備引導(dǎo)加載程序、外部設(shè)備驅(qū)動程序、操作系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、圖形用戶界面、數(shù)據(jù)庫、各種各樣的應(yīng)用程序等區(qū)別:嵌入式系統(tǒng)的軟件配備沒有通用計(jì)算機(jī)那樣多;通用計(jì)算機(jī)的軟件系統(tǒng)無疑以操作系統(tǒng)為核心,不可或缺;對于數(shù)據(jù)庫、圖形用戶界面、因特網(wǎng)瀏覽器、媒體播放器等基于操作系統(tǒng)的外圍工具軟件,如果運(yùn)行在通用計(jì)算機(jī)上則具有內(nèi)部結(jié)構(gòu)細(xì)致化、運(yùn)行效率高效化、代碼重量化的特點(diǎn)。嵌入式操作系統(tǒng)RTOS:實(shí)時操作系統(tǒng)IEEE:美國電氣電子工程師協(xié)會實(shí)時系統(tǒng)的屬性時間約束性。分為硬實(shí)時系統(tǒng)、軟實(shí)時系統(tǒng)。常見的系統(tǒng)大多是軟實(shí)時系統(tǒng)??深A(yù)測性;可靠性按響應(yīng)時間將實(shí)時系統(tǒng)分為三類:強(qiáng)實(shí)時系統(tǒng):響應(yīng)時間在毫秒級或微秒及。普通實(shí)時系統(tǒng):響應(yīng)時間一般在幾秒;弱實(shí)時系統(tǒng):響應(yīng)時間一般在數(shù)十秒。實(shí)時操作系統(tǒng)IEEE的實(shí)時UNIX分委會認(rèn)為實(shí)時操作系統(tǒng)應(yīng)該具備7個特征:1.具有異步I/O和中斷處理能力2.任務(wù)切換時間和中斷延遲時間確定3.優(yōu)先級中斷和調(diào)度4.搶占式調(diào)度5.內(nèi)存鎖定6.連續(xù)文件7.同步RTOS的三個主要實(shí)時指標(biāo):響應(yīng)時間(中斷延遲時間和任務(wù)切換時間)、吞吐量(在給定時間內(nèi),實(shí)時系統(tǒng)可以處理的事件總數(shù))、生存事件(輸入數(shù)據(jù)的有效等待時間)嵌入式操作系統(tǒng)概述嵌入式操作系統(tǒng)(EOS)是嵌入式系統(tǒng)中的軟件。與通用計(jì)算機(jī)的操作系統(tǒng)相比較具有可移植、強(qiáng)調(diào)實(shí)時性能、內(nèi)核精簡、搶占式多任務(wù)處理、使用可重入函數(shù)、可配置、可裁剪、高可靠性等特點(diǎn)。嵌入式操作系統(tǒng)可粗略地分為內(nèi)核、驅(qū)動程序、服務(wù)模塊與行命令解釋程序幾大部分。內(nèi)核有廣義和狹義兩種解釋。廣義:指裝入在存儲器里的嵌入式軟件中的操作系統(tǒng)部分。狹義:指嵌入式操作系統(tǒng)中負(fù)責(zé)多任務(wù)管理及任務(wù)間通信的多任務(wù)處理部分。它執(zhí)行任務(wù)創(chuàng)建與初始化、任務(wù)調(diào)度、時鐘管理、中斷管理。內(nèi)存管理等。例如μCOS-II就是典型的純內(nèi)核例子。主流嵌入式操作系統(tǒng)TinyOS:開源,深度輕量級,先進(jìn)先出調(diào)度,用于無線傳感器網(wǎng)絡(luò)μC/OS-II/III:小型嵌入式操作系統(tǒng)內(nèi)核,不含設(shè)備驅(qū)動程序和文件系統(tǒng)。開源,用于工控領(lǐng)域。iOS:蘋果公司,微內(nèi)核,系統(tǒng)結(jié)構(gòu)分為4個層次:核心操作系統(tǒng)、核心服務(wù)層、媒體層、觸摸框架層,系統(tǒng)運(yùn)行占用約512MB。iOS與蘋果公司的MacOSX操作系統(tǒng)一樣,也是以DarwinOS為基礎(chǔ)的,因此同樣屬于類Unix的商業(yè)操作系統(tǒng)。WindowsEmbeddedCompact8:即以前的WinCE操作系統(tǒng)。屬于大型嵌入式操作系統(tǒng)。可用于手持設(shè)備。。具有HAL和OAL。WindowsPhone8:前驅(qū)產(chǎn)品是2003年問世的WindowsMobile。用于手機(jī)操作系統(tǒng)。VxWorks:目前公認(rèn)為實(shí)時性最強(qiáng)、可靠性最高的一種嵌入式實(shí)時操作系統(tǒng)。廣泛應(yīng)用于航空航天、通信和國防領(lǐng)域。屬于大型商用操作系統(tǒng),具有配套的Tornado集成開發(fā)環(huán)境。嵌入式Linux:普通Linux操作系統(tǒng)移植到嵌入式硬件平臺上的版本。開源、不存在黑箱技術(shù),安卓操作系統(tǒng):以Linux為基礎(chǔ),半開放源代碼操作系統(tǒng),屬于大型操作系統(tǒng),通過AndroidSDK使用Java作為編程語言來開發(fā)Android應(yīng)用程序。eCOS:免費(fèi)和開源的實(shí)時操作系統(tǒng),使用于嵌入式系統(tǒng)和那些只需要一個進(jìn)程多個線程的應(yīng)用項(xiàng)目。QNX:實(shí)時,可擴(kuò)充,內(nèi)核小巧,速度快,可應(yīng)用于虛擬機(jī)。嵌入式操作系統(tǒng)分類(1)按源代碼規(guī)模分類:分為小型和大型,區(qū)別是源代碼行數(shù)數(shù)量大小,超過10000行語句為大型,否則為小型。(2)按內(nèi)核大小分類:小內(nèi)核和大內(nèi)核,前者最小內(nèi)核8KB,后者最小320KB。(3)按照能否免費(fèi)獲得源代碼分類:開放源代碼和不開放源代碼,開源系統(tǒng):μCLinux、RTLinux、NucleusPlus、ECOS、μC/OS-II(4)按照實(shí)時性能分類:分為強(qiáng)實(shí)時型和普通實(shí)時型。強(qiáng)實(shí)時:VxWorks、片SOS、μCOS-II等,普通實(shí)時:WindowsEmbedded、μCLinux、Symbian等。(5)按照內(nèi)核結(jié)構(gòu)分類:單內(nèi)核和微內(nèi)核。單內(nèi)核又稱宏內(nèi)核,內(nèi)部含有進(jìn)程管理、調(diào)度器、時間管理、設(shè)備管理、文件管理等模塊。耦合度高,通過函數(shù)調(diào)用實(shí)現(xiàn)模塊之間通信。如Unix、嵌入式Linux、WinCE、MacOS、AndroidOS和DOS

。微內(nèi)核:內(nèi)核小巧,接口一致,松散耦合,人物間通信機(jī)制為消息機(jī)制,以消息傳遞方式相傳。如:Symbian、VxWorks、QNX、μC/OS-II、iOS等,iOS前身是在DarwinOS基礎(chǔ)上研發(fā)的iPhoneOS,是一個類Unix操作系統(tǒng),屬于微內(nèi)核架構(gòu)。嵌入式操作系統(tǒng)的仿真平臺一般指嵌入式系統(tǒng)開發(fā)過程中使用的指令集模擬器、仿真軟件或者虛擬機(jī)管理軟件。如ARM公司的Armulator和清華大學(xué)研發(fā)的SkyEye都是ARM指令集模擬器,更奇安達(dá)的為VMware虛擬機(jī),可搭建嵌入式Linux的仿真開發(fā)平臺。硬件抽象層、板級支持包和引導(dǎo)加載程序底層軟件主要就是指硬件抽象層、板級支持包和啟動引導(dǎo)程序。硬件抽象層(HAL)WindowsNT。板級支持包(BSP)由美國風(fēng)和公司(VxWorks研發(fā)商)提出。一般而言,音質(zhì)VxWorks操作系統(tǒng)有四種操作類型:宿主機(jī)移植、體系結(jié)構(gòu)移植、目標(biāo)板移植、升級以前Tornado集成開發(fā)環(huán)境版本的BSP到最新版本。硬件抽象層(HAL)熱點(diǎn):是嵌入式硬件電路板的最基本軟件,基本上是用標(biāo)準(zhǔn)C編寫的,負(fù)責(zé)嵌入式操作系統(tǒng)移植,需集中精力在HAL上座關(guān)鍵代碼的編程工作,從而加速操作系統(tǒng)的移植。含有HAL的操作系統(tǒng):RTAL、eCOS、μITRON和NiosII。板級支持包BSPHAL和BSP的異同:對于同樣的一個電路板,HAL一般只有一個,但是不同的操作系統(tǒng)擁有不同的BSP;移植一個操作系統(tǒng)A到一塊新的電路板,為了構(gòu)造BSP,需要改寫的源代碼基于兩種來源,一種是操作系統(tǒng)A在類似電路板的BSP,另一種是這塊電路板的HAL。BSP含有電路板的全套初始化程序,包括操作系統(tǒng)初始化,它要為操作系統(tǒng)的正常運(yùn)行做好準(zhǔn)備,而HAL通常也包括硬件初始化程序,但是不完整,例如不包括操作系統(tǒng)的初始化處理。引導(dǎo)加載程序嵌入式系統(tǒng)加電后執(zhí)行的第一批最初操作成為引導(dǎo)或者自舉(Boot),對應(yīng)的程序成為引導(dǎo)程序或者引導(dǎo)加載程序(Bootloader)。引導(dǎo)加載程序主要完成內(nèi)存加電自檢、外設(shè)存在自檢、內(nèi)存地址映射、初始化外圍設(shè)備、內(nèi)存尋址定位、加載和啟動操作系統(tǒng)。典型嵌入式系統(tǒng)啟動順序:(1)上電后,Bootloader將執(zhí)行基本的硬件自檢、初始化硬件控制寄存器、初始化SDRAM等工作(2)Bootloader將OS內(nèi)核映像文件從非揮發(fā)存儲介質(zhì)(如Flash)中復(fù)制到SDRAM中,并將控制權(quán)轉(zhuǎn)交給OS。(3)OS內(nèi)核執(zhí)行創(chuàng)建頁表、驅(qū)動外設(shè)、初始化中斷控制系統(tǒng)等OS的流程,最終創(chuàng)建應(yīng)用程序執(zhí)行環(huán)境甚至圖形用戶界面。Bootloader的兩個執(zhí)行階段stage1的基本步驟:基本硬件初始化,為加載stage2準(zhǔn)備RAM空間,拷貝stage2的執(zhí)行代碼到RAM空間中,設(shè)置棧區(qū)指針SP,跳轉(zhuǎn)到stage2的C程序入口點(diǎn)。硬件初始化一般包括:關(guān)閉WatchDog、關(guān)中斷、設(shè)置CPU的速度和時鐘頻率、RAM初始化等。stage2的基本步驟:啟動加載模式下Bootloader的stage2操作流程:初始化本階段要使用到的硬件設(shè)備,檢測系統(tǒng)內(nèi)存映射,將內(nèi)存映像和根文件系統(tǒng)映像從Flash上讀到RAM空間中,為內(nèi)核設(shè)置啟動參數(shù),調(diào)用內(nèi)核。下載模式下Bootloader的stage2操作流程:初始化本階段要使用到的硬件設(shè)備,主要是串口、網(wǎng)口和Flash存儲器等;等待用戶輸入行命令以進(jìn)入下載模式,否則直接進(jìn)入啟動加載模式;通過串口終端與調(diào)試主機(jī)建立連接,提供人機(jī)交互接口;接收用戶輸入,通過串口或者網(wǎng)口進(jìn)行文件下載,將文件寫入Flash存儲器保存;下載完畢,繼續(xù)等待用戶輸入或者重啟系統(tǒng)。嵌入式Linux的Bootloader執(zhí)行步驟初始化處理器及外設(shè)的硬件資源配置;建立內(nèi)存空間的映射管理,使能MMU,將系統(tǒng)的外存和內(nèi)存地址變換激活,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備;裝載操作系統(tǒng)映像到內(nèi)存;對Flash存儲器編程;運(yùn)行操作系統(tǒng);傳遞系統(tǒng)啟動參數(shù);命令行解析和輸入/輸出控制。U-Boot被認(rèn)為是功能全面、具有靈活性以及應(yīng)用廣泛的開放源代碼Bootloader,目前由DENX公司維護(hù)。就目前來說,U-Boot對PowerPC系列處理器的支持最為豐富,對Linux的支持最為完善,國內(nèi)ARM9實(shí)驗(yàn)箱通常使用U-boot作為Bootloader,引導(dǎo)多種嵌入式操作系統(tǒng)。嵌入式Linux操作系統(tǒng)Linux是目前唯一可免費(fèi)獲得的、能為多用戶提供多任務(wù)、多線程功能的大型操作系統(tǒng)。最初以Unix為原型,以實(shí)現(xiàn)POSIX標(biāo)準(zhǔn)為目標(biāo),是最好的類Unix操作系統(tǒng)。嵌入式Linux:MontanaVistaLinux、μClinux、RTLinux(硬實(shí)時)、RTAI從頂視圖看,嵌入式Linux操作系統(tǒng)主要由用戶進(jìn)程、OS服務(wù)組件和Linux內(nèi)核三大子系統(tǒng)組成。用戶進(jìn)程:在Linux系統(tǒng)上運(yùn)行的應(yīng)用程序集合。OS服務(wù)組件:位于Linux操作系統(tǒng)內(nèi)核之上的一層服務(wù)模塊或者實(shí)用程序集合,例如行命令解釋程序(Shell)、窗口系統(tǒng)(例如XWindows、QT)、內(nèi)核編程接口等。Linux內(nèi)核:主要作用:進(jìn)程管理與調(diào)度、內(nèi)存管理、文件管理、網(wǎng)絡(luò)接口和進(jìn)程間通信。由5個子系統(tǒng)組成:進(jìn)程調(diào)度SCHED、內(nèi)存管理MM、虛擬文件系統(tǒng)VFS、網(wǎng)絡(luò)接口NET、進(jìn)程間通信IPC。嵌入式操作系統(tǒng)μC/OS-IIμC/OS-II的基本特點(diǎn)μC/OS-II是搶占式實(shí)時操作系統(tǒng)內(nèi)核,不涉及硬件驅(qū)動程序。只能管理64個任務(wù),目前版本保留8個任務(wù)給系統(tǒng),這樣用戶編寫的應(yīng)用程序最多可以有56個任務(wù)。不支持時間片輪轉(zhuǎn)調(diào)度法,賦予每個任務(wù)的優(yōu)先級是不同的,每個任務(wù)擁有自用棧。使用μC/OS-II的??臻g校驗(yàn)函數(shù)可以確定每個任務(wù)到底需要多少??臻g。μC/OS-II的層次位置μC/OS-II嵌入式應(yīng)用系統(tǒng)開發(fā)具有面向任務(wù)的特點(diǎn)。任務(wù)中的功能處理可以通過調(diào)用API函數(shù)實(shí)現(xiàn),也可以通過中斷服務(wù)例程ISR實(shí)現(xiàn)。應(yīng)用程序接口層(API)主要包括文件系統(tǒng)、TCP/IP網(wǎng)絡(luò)協(xié)議棧、圖形用戶界面、中文系統(tǒng)、嵌入式數(shù)據(jù)庫、因特網(wǎng)Web瀏覽器等。μC/OS-II的代碼結(jié)構(gòu)與初始化大部分代碼由標(biāo)準(zhǔn)C語言寫成。μC/OS-II主要由三大類程序文件構(gòu)成,這三大類程序按照硬件和應(yīng)用相關(guān)性分為:與處理器類型無關(guān)的代碼、與應(yīng)用程序有關(guān)的代碼和與硬件平臺移植相關(guān)的代碼。按照功能還可以把這些文件分成核心模塊、預(yù)處理模塊、進(jìn)程間通信(IPC)模塊、內(nèi)存管理模塊、任務(wù)與調(diào)度管理模塊、時間管理模塊以及移植模塊。μC/OS-II的啟動過程:Bootloader執(zhí)行完畢后,調(diào)用應(yīng)用程序主文件(main()函數(shù))。main()函數(shù)在執(zhí)行過程中,除了用戶函數(shù)和硬件初始化函數(shù)外,按照以下次序執(zhí)行3個主要的μC/OS-II函數(shù):1.操作系統(tǒng)初始化OSInt();2.任務(wù)創(chuàng)建OSTaskCreat();3.任務(wù)調(diào)度開始OSStart()。一旦OSStart()函數(shù)開始執(zhí)行,就標(biāo)志著μC/OS-II進(jìn)入了多任務(wù)調(diào)度的正常運(yùn)行狀態(tài)。OSInit函數(shù)先建立最初的任務(wù)就緒表,然后建立4個空白的數(shù)據(jù)鏈表。這些內(nèi)存的空白數(shù)據(jù)區(qū)開辟之后,OSInt創(chuàng)建第1個任務(wù),這就是空閑任務(wù)(IdleTask),優(yōu)先級設(shè)為最低(取常量OS_LOWEST_PRIO的值),創(chuàng)建之后進(jìn)入就緒態(tài)。條件滿足的話,OSInt還創(chuàng)建一個統(tǒng)計(jì)任務(wù)OSTaskStat,也讓進(jìn)入就緒態(tài),OSTaskStat優(yōu)先級取為OS_LOWEST_PRIO-1(次低級)。在main.c代碼文件中還有兩個μC/OS-II的函數(shù),其中OSTaskCreate函數(shù)創(chuàng)建用戶定義的一個任務(wù),OSStart啟動μC/OS-II多任務(wù)調(diào)度。在μC/OS-II多任務(wù)調(diào)度啟動前,用戶至少要使用OSTaskCreate函數(shù)建立一個應(yīng)用任務(wù)。μC/OS-II任務(wù)的創(chuàng)建:可以使用OSTaskCreate函數(shù)或者OSTaskCreateExt函數(shù)。一個任務(wù)通常是一個無限的循環(huán),有函數(shù)返回類型,有形式參數(shù)變量,但是任務(wù)絕不會返回的,故返回參數(shù)必須定義為void。μC/OS-II的內(nèi)核μC/OS-II是嵌入式操作系統(tǒng)領(lǐng)域中的最小內(nèi)核之一,只提供任務(wù)調(diào)度、任務(wù)間通信(ITC)與同步、任務(wù)管理、時間管理、內(nèi)存管理、等基本功能。搶占式任務(wù)調(diào)度、多任務(wù)通信。臨界區(qū):指處理時不可分割的代碼。一旦執(zhí)行,不允許任何中斷。在進(jìn)入臨界區(qū)之前必須關(guān)中斷,執(zhí)行完臨界區(qū)代碼之后要立即開中斷。μC/OS-II調(diào)用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個宏來執(zhí)行關(guān)中斷和開中斷。μC/OS-II的任務(wù)狀態(tài)μC/OS-II操作系統(tǒng)可以定義的最大任務(wù)數(shù)是64個,最高優(yōu)先級定為0,最低優(yōu)先級取值為實(shí)際定義的最大任務(wù)數(shù)減1.任務(wù)建立之后,擁有優(yōu)先級、執(zhí)行函數(shù)、自用??臻g和任務(wù)控制塊(TCB),運(yùn)行時能夠完全控制CPU的操作以及全部用戶可訪問寄存器的操作。絕大多數(shù)情況下μC/OS-II的每個任務(wù)都是一個無限的循環(huán)。每個任務(wù)處在以下5個狀態(tài)之一:休眠態(tài)、就緒態(tài)(記錄在就緒任務(wù)集中)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)。任務(wù)控制塊OS_TCB:內(nèi)核對任務(wù)的管理通過任務(wù)控制塊OS_TCB進(jìn)行。OS_TCB全部駐留在RAM。OS_TCB數(shù)據(jù)結(jié)構(gòu)中的OSTCBX、OSTCBY、OSTCBBitX、OSTCBBitY4個變量用于加速任務(wù)進(jìn)入就緒態(tài)的過程或進(jìn)入等待事件發(fā)生狀態(tài)的過程。μC/OS-II的任務(wù)調(diào)度μC/OS-II的就緒任務(wù)登記在就緒表中。就緒表由兩個變量OSRdyGrp和OSRdyTbl[]構(gòu)成。μC/OS-II總是運(yùn)行處于就緒態(tài)任務(wù)中優(yōu)先級最高的那一個,由調(diào)度器(Scheduler)確定哪個任務(wù)優(yōu)先級最高,下面應(yīng)該執(zhí)行哪一個任務(wù)。任務(wù)級的調(diào)度是由函數(shù)OSSched()完成的,是任務(wù)調(diào)度的前導(dǎo)函數(shù);中斷級的調(diào)度是由另一個函數(shù)OSIntExit()完成的。μC/OS-II的任務(wù)切換也稱為上下文切換、文境切換,實(shí)際含義是任務(wù)的CPU寄存器內(nèi)容切換。完成任務(wù)切換所需要的時間取決于CPU有多少寄存器要入棧。μC/OS-II的中斷處理μC/OS-II允許中斷嵌套,嵌套層數(shù)可達(dá)255層。中斷服務(wù)子程序執(zhí)行事件處理有兩種方法。一種方法是通過OSMBoxPost()、OSQPost()、OSSemPost()等函數(shù)去通知真正做該事件處理的那個任務(wù),讓任務(wù)完成中斷事件的處理。另外一種是由中斷服務(wù)子程序本身完成事件處理。調(diào)用中斷退出函數(shù)OSIntExit()標(biāo)志著中斷服務(wù)子程序的終結(jié),OSIntExit()將中斷嵌套層數(shù)計(jì)數(shù)器減1。中斷級任務(wù)切換函數(shù)OSIntCtxSw()。μC/OS-II的時間管理μC/OS-II能夠提供周期性時鐘信號,用于實(shí)現(xiàn)任務(wù)的正確延時和超時確認(rèn),節(jié)拍率應(yīng)在每秒10次到100次之間,即10-100Hz,時鐘節(jié)拍率越高,系統(tǒng)的額外負(fù)荷就越重。用戶必須在多任務(wù)系統(tǒng)啟動以后再激活時鐘節(jié)拍信號發(fā)生器,也就是在調(diào)用OSStart()之后,即在調(diào)用OSStart()之后做的第一件事是初始化定時器中斷。μC/OS-II的匯編語言時鐘節(jié)拍中斷服務(wù)子程序名稱是OSTickISR。OSTimtick()函數(shù)執(zhí)行時以調(diào)用可由用戶定義的時鐘節(jié)拍接口函數(shù)OSTimTickHook()開始,這個接口函數(shù)擴(kuò)展了時鐘節(jié)拍函數(shù)OSTimtick(),給用戶一個完成特定處理的機(jī)會。μC/OS-II的任務(wù)間通信主要有三種:利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITECAL()來關(guān)閉中斷和打開中斷。利用函數(shù)OSSchedLock()和OSSchekUnlock()對μC/OS-II中的任務(wù)調(diào)度函數(shù)上鎖和開鎖。利用信號量OS_EVENT_TYPE_SEM、互斥信號量OS_EVENT_TYPE_MUTEX、郵箱OS_EVENT_TYPE_MBOX或消息隊(duì)列OS_ENENT_TYPE_Q進(jìn)行任務(wù)間通信。事件控制塊ECB:用于實(shí)現(xiàn)信號量管理、互斥型信號量管理、消息郵箱以及消息隊(duì)列管理的ITC功能函數(shù)的基本數(shù)據(jù)結(jié)構(gòu)。OSEventType:定義了事件的具體類型。OSEventCnt:當(dāng)事件是一個信號量時,OSEventCnt是用于信號量的計(jì)數(shù)器。μC/OS-II的事件控制塊有4種類型,需要使用4個不同的函數(shù)來創(chuàng)建,分別是OSSemCreate()、OSMutexCreate()、OSMboxCreate()、OSQCreate()。信號量控制下的任務(wù)間通信:在μC/OS-II韓靜霞,使用信號量進(jìn)行任務(wù)間通信室,首先應(yīng)該使用信號量創(chuàng)建函數(shù)OSSemCreate來創(chuàng)建一個信號量,并且對該信號量賦以初始計(jì)數(shù)值。如果信號量是用來表示一個或者多個事件的發(fā)生,那么該信號量的初始值應(yīng)設(shè)為0。如果信號量是用于對共享資源的訪問,那么該信號量的初始值應(yīng)設(shè)為1。如果該信

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論