版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II在TMS320LF2407上的移植TransplanttheμC/OS-IITransplanttheμC/OS-IIofEmbeddedandReal-timeSystemtoHardwarePlatformBasedonTMS320LF2407屆分院 專業(yè)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師完成日期2006年6月2日 畢業(yè)設(shè)計(jì)評(píng)語(yǔ)及及成績(jī)學(xué)生姓名專業(yè)電氣工程及其自自動(dòng)動(dòng)化班級(jí)學(xué)號(hào)畢業(yè)設(shè)計(jì)題目嵌入式實(shí)時(shí)操作作系系統(tǒng)μC/OS--II在TMS3220LF224407上的移植指導(dǎo)教師姓名指導(dǎo)教師職稱指導(dǎo)教師評(píng)語(yǔ)::專家評(píng)語(yǔ):簽字:年月日答辯小組意見(jiàn)::答辯小組組長(zhǎng)簽簽字字:年月日成績(jī):院長(zhǎng)簽字::年月月日畢業(yè)設(shè)計(jì)任務(wù)書書題目嵌入式實(shí)時(shí)操作作系系統(tǒng)μC/OS--II在TMS3220LF224407上的移移植專業(yè)電氣工程及其自自動(dòng)動(dòng)化班級(jí)電0201-33班學(xué)生姓名承擔(dān)指導(dǎo)任務(wù)單單位位電氣工程分院導(dǎo)師姓名導(dǎo)師職稱一、設(shè)計(jì)內(nèi)容1、了解嵌入式式操作作系統(tǒng)的內(nèi)內(nèi)核核結(jié)構(gòu),明明確確內(nèi)核的工工作作原理,掌掌握握μC/OS--II實(shí)時(shí)操操作系統(tǒng)任任務(wù)務(wù)調(diào)度、切切換換過(guò)程;2、了解TI公公司生生產(chǎn)的16位DSP芯片TMS3320LFF22407的內(nèi)部結(jié)構(gòu)構(gòu)、寄存器器情情況,并能能應(yīng)應(yīng)用CCS進(jìn)行開(kāi)發(fā)設(shè)設(shè)計(jì);3、將μC/OOS--II實(shí)時(shí)操操作系統(tǒng)統(tǒng)移植到TMMS3200LLF240077上。二、基本要求1、在規(guī)定的日日期內(nèi)內(nèi),完成從從可可行性分析析、需需求分析,概概概要設(shè)計(jì),詳詳詳細(xì)設(shè)計(jì)、編編編碼測(cè)試、到到到幫助文檔檔等等的任務(wù)。2、將μC/OOS--II完整的的移植到DSSP芯片TMS3320LFF22407上,并并能夠應(yīng)用用實(shí)實(shí)時(shí)操作系系統(tǒng)統(tǒng)內(nèi)核創(chuàng)建建任任務(wù),完成成一一定的功能能。三、主要技術(shù)指指標(biāo)標(biāo)1、將μC/OOS--II操作系系統(tǒng)移植到到TTMS32200LF244007上;2、通過(guò)創(chuàng)建任任務(wù),完完成簡(jiǎn)單功功能能。四、應(yīng)收集的資資料料及參考文文獻(xiàn)獻(xiàn)1、嵌入式操作作系統(tǒng)統(tǒng)2、μC/OSS-II操操作系統(tǒng)3、TMS3220LFF24077結(jié)結(jié)構(gòu)語(yǔ)言4、C語(yǔ)言程序序設(shè)計(jì)五、進(jìn)度計(jì)劃第1周—第2周周:需求和可可行性性調(diào)研第3周—第4周周:概要設(shè)計(jì)計(jì)第5周—第9周周:詳細(xì)設(shè)計(jì)計(jì)和代代碼設(shè)計(jì)第10周—第111周周:寫論文文和和答辯教研室主任簽字字時(shí)間年月月日畢業(yè)設(shè)計(jì)開(kāi)題報(bào)報(bào)告題目嵌入式實(shí)時(shí)操作作系系統(tǒng)μC/OS--II在TMS3220LF224407上的移移植專業(yè)電氣工程及其自自動(dòng)動(dòng)化班級(jí)學(xué)生姓名文獻(xiàn)綜述μC/OS-III是是一個(gè)完整整型型的,可移移植植,固化,裁裁裁剪的占先先式式實(shí)時(shí)多任任務(wù)務(wù)操作系統(tǒng)統(tǒng),目目前已被成成熟熟的應(yīng)用在在各各商業(yè),教教學(xué)學(xué)中,尤其其移移植在不同同的的處理器中中后后,可應(yīng)用用在在各商業(yè)產(chǎn)產(chǎn)品品中,也可可用用于對(duì)工業(yè)業(yè)現(xiàn)現(xiàn)場(chǎng)的實(shí)時(shí)時(shí)控控制;而TMMS3200LLF240077是TI公司生產(chǎn)產(chǎn)的一款高高性性能的定點(diǎn)點(diǎn)DDSP芯片,采采用多組總總線線技術(shù)并列列運(yùn)運(yùn)行,大大大提提升了運(yùn)算算速速度,配備備了了較完善的的外外圍設(shè)備,是是是一塊真正正的的單芯片控控制制器;TI公司提供供的CodeeCommpposerr支支持C語(yǔ)言和匯編編語(yǔ)言的開(kāi)開(kāi)發(fā)發(fā),本設(shè)計(jì)完完成的任務(wù)務(wù)是是將嵌入式實(shí)時(shí)時(shí)操作系統(tǒng)統(tǒng)μμC/OS--II移植到到TMS3220LF224407上,并能夠在內(nèi)核核上創(chuàng)建任務(wù)務(wù)。預(yù)期達(dá)到的目標(biāo)標(biāo)1、掌握嵌入式式系統(tǒng)統(tǒng)的基本概概念念,詳細(xì)了了解解μC/OS--II操作系系統(tǒng)的特點(diǎn)點(diǎn)和和內(nèi)核結(jié)構(gòu)構(gòu);;2、系統(tǒng)的理解解μCC/OS--III的任務(wù)管管理,時(shí)間間管管理,事件件控控制塊管理理和和內(nèi)存管理理以以及應(yīng)用信信號(hào)號(hào)量、消息息郵郵箱及消息息隊(duì)隊(duì)列對(duì)任務(wù)務(wù)切切換及調(diào)度度的的方法。3、掌握μC//OSS-II移植植的過(guò)程和和移移植到LF22407上的的編譯環(huán)境境,注注意移植過(guò)過(guò)程程中的一些些問(wèn)問(wèn)題。4、對(duì)LF22407的CCPU結(jié)構(gòu),存存儲(chǔ)器結(jié)構(gòu)構(gòu),內(nèi)內(nèi)部資源做做初初步了解。將將將μC/OS--II在CodeComppooser編譯譯器基礎(chǔ)上上移移植到DSPP芯片LF24407上,并并測(cè)試移植植結(jié)結(jié)果。研究方案通過(guò)對(duì)μC/OOSS-II的了了解,在移移植植過(guò)程中跟跟處處理器相關(guān)關(guān)的的函數(shù)需要要修修改,這些些函函數(shù)包含在在OOS_CPPUU.H,OS_CPPU_C.C,OS_CPPU_A.ASM這些文文件中,在在了了解DSP芯片LF24077的基礎(chǔ)上做做出修改,使使使μC/OS--II可以在在LF24077上成功運(yùn)行行。進(jìn)度計(jì)劃第1周—第2周周:需求和可可行性性調(diào)研第3周—第4周周:概要設(shè)計(jì)計(jì)第5周—第9周周:詳細(xì)設(shè)計(jì)計(jì)和代代碼設(shè)計(jì)第10周—第111周周:寫論文文和和答辯指導(dǎo)教師簽字時(shí)間20066年33月24日摘要嵌入式操作系統(tǒng)統(tǒng)是作為實(shí)現(xiàn)現(xiàn)設(shè)備小型化化、智能化的的一個(gè)重要元元素,目前己己經(jīng)廣泛應(yīng)用用于國(guó)防、工工業(yè)、交通、能能源、信息技技術(shù)以及日常常生活的許多多領(lǐng)域,并發(fā)發(fā)揮著極其重重要的作用。嵌嵌入式操作系系統(tǒng)作為嵌入入式系統(tǒng)的軟軟件核心更是是嵌入式應(yīng)用用至關(guān)重要的的部分。μC/OS--II是基于于優(yōu)先級(jí)的可可剝奪嵌入式式實(shí)時(shí)內(nèi)核,由由于其小巧、性性能穩(wěn)定、免免費(fèi)公開(kāi)源代代碼,所以被應(yīng)用用到了生產(chǎn)生生活的各個(gè)方方面。本文首先對(duì)嵌入入式操作系統(tǒng)統(tǒng)的發(fā)展進(jìn)行行了介紹,然然后詳細(xì)介紹紹了本設(shè)計(jì)所所用的嵌入式式實(shí)時(shí)操作系系統(tǒng)μC/OS--II,分析析了μC/OS--II內(nèi)核,闡闡述了移植μμC/OS--II的機(jī)理理,并將其成成功地移植到到了DSP上。在硬件件上,采用TI公司的TMS3220LF24407A為DSP,并介紹了了其內(nèi)部資源源和結(jié)構(gòu);移移植開(kāi)發(fā)工具具采用的是TI的CCS編譯器,并并使用了北京京瑞泰的仿真真器集成開(kāi)發(fā)發(fā)環(huán)境。關(guān)鍵字:嵌入式式操作系統(tǒng)μC/OS--IITMSS320LFF2407移植AbstracctAsaniimporttanteelemenntofintellligenntanddsmalll-sizzeequuipmennt,embedddedssystemmhasnowwwidelyyuseddandplayeedavveryiimporttantrroleiinmannyfieeldsssuchaasnattionalldefeense,indusstryccontrool,trrafficc,eneergyssourcees,inforrmatioontecchnoloogyanndcivvilliiving..Asassoftwaarekeernelofthheembbeddeddsysttem,itisthemmostiimporttantiingreddientinthheembbeddeddsysttem’sappllicatiion.μC/OS--IIissanEEmbedddedReal-ttimekkernellbaseedontaskpriorrityanndpreeemptiive.Wiithmaanyaddvantaagesssuchaassmaallsiize,stabbleperrformaanceaandfrreesouurceccore,ithaasbeeenuseedineeachaaspecttofiindusttryanndlivving.Thisarrticleefirsstinttroduccesthheoveerviewwdeveelopmeentoffembedddedssystemm,thenndescrribestheEEmbedddedReeal-tiimesyystemandaanalyssesμC/OS--IIkeernelindeetail,,setssfortththeeprinncipleeofμC/OS--IIporrting,,andtranssportssthekerneelofμC/OS--IItooharddwareplatfformbbasedonDSPPsucceessfullly.IIntheeprojject,adopttTMS3320LF22407wwhichisdeesigneedbyTTIcorrporattionaasDSPPandintrooduceddit’ssouurceaandcoonstruuctionn.SellectsTIcompaany’sCCScommpilerrandRuiTaaicorrporattion’sin-ccircuiitemullatoraspooringandddeveloopmentttoolls.Keyworrds:EmbedddedOperattingSSystemmμC/OS--IITTMS3200LF24007Trranspllant.目錄第1章緒論論 11.1課題題研究背景 11.2嵌入入式操作系統(tǒng)統(tǒng) 11.3嵌入入式實(shí)時(shí)操作作系統(tǒng)μC/OS--II 21.4DSP的的開(kāi)發(fā)應(yīng)用 31.5本設(shè)設(shè)計(jì)的研究方方法和預(yù)期結(jié)結(jié)果 4第2章嵌入入式實(shí)時(shí)操作作系統(tǒng)μC/OS--II的分析析 52.1μCC/OS-III的內(nèi)核結(jié)結(jié)構(gòu) 6代碼的臨界界段 6任務(wù)的狀態(tài)態(tài) 7任務(wù)及任務(wù)務(wù)控制塊 8任務(wù)的調(diào)度度 9中斷處理 10時(shí)鐘節(jié)拍 11μC/OS-III的初始化和和啟動(dòng) 112.2任務(wù)務(wù)的管理 13任務(wù)的創(chuàng)建建與刪除 13任務(wù)的堆棧棧 152.3任務(wù)務(wù)之間的通信信 15事件控制塊塊 15信號(hào)量 116消息郵箱及及消息隊(duì)列 16第3章TMMS320LLF24077數(shù)字信號(hào)處處理器的介紹紹 173.1TMMS320LLF24077總線結(jié)構(gòu) 173.2中央央處理單元 17輸入定標(biāo)部分 17乘法器部分 118中央算術(shù)邏輯單單元(CALU)) 18輔助寄存器算術(shù)術(shù)單元(ARAU) 19狀態(tài)寄存器STT0和ST1 193.3存儲(chǔ)儲(chǔ)器結(jié)構(gòu)和I/O空間 19程序存儲(chǔ)器 220數(shù)據(jù)存儲(chǔ)器 220I/O空間間 20第4章CoodeCoomposee軟件開(kāi)發(fā)平平臺(tái)的簡(jiǎn)介 214.1CoodeCoomposee的安裝配置置 214.2項(xiàng)目目環(huán)境的創(chuàng)建建 224.3編譯譯連接和調(diào)試試程序 23第5章μCC/OS-III在TMS3220LF24407中的移植過(guò)過(guò)程 245.1移植植的條件 245.2移植植中的問(wèn)題 245.3移植植的過(guò)程 25四個(gè)基本的的文件 26OS_CPU..H頭文件的的修改 28OS_CPU__C.C函數(shù)數(shù)的修改 28OS_CPU__A.ASMM函數(shù)的修改改 29與應(yīng)用相關(guān)關(guān)的函數(shù)修改改 31在CCS編編譯環(huán)境下進(jìn)進(jìn)行移植 315.4調(diào)試試過(guò)程 32第6章總結(jié)結(jié)和展望 34參考文獻(xiàn) 35致謝 36附錄一:中英英文翻譯 37附錄二:移植植過(guò)程修改的的函數(shù) 52第1章緒論1.1課題題研究的背景景隨著現(xiàn)代計(jì)算機(jī)機(jī)控制技術(shù)的的飛速發(fā)展,在在當(dāng)今世界,以以計(jì)算機(jī)技術(shù)術(shù)、芯片技術(shù)術(shù)和軟件技術(shù)術(shù)為核心的數(shù)數(shù)字化技術(shù)取取得了迅猛發(fā)發(fā)展,不僅廣廣泛滲透到社社會(huì)、經(jīng)濟(jì)、軍軍事、交通、通通信等相關(guān)行行業(yè),而且深深入到家電、娛娛樂(lè)、藝術(shù)、社社會(huì)文化等各各個(gè)領(lǐng)域,掀掀起了一場(chǎng)數(shù)數(shù)字化技術(shù)革革命。這就使使嵌入式技術(shù)術(shù)再度成為一一個(gè)研究熱點(diǎn)點(diǎn),他們性能能卓越、功能能完備、技術(shù)術(shù)成熟、服務(wù)務(wù)周全,通過(guò)過(guò)使用這樣的的操作系統(tǒng),可可以大大縮短短產(chǎn)品的開(kāi)發(fā)發(fā)周期,降低低開(kāi)發(fā)成本,同同時(shí)產(chǎn)品的品品質(zhì)也能夠大大大提升。嵌嵌入式系統(tǒng)與與通用計(jì)算機(jī)機(jī)不同,它的的應(yīng)用程序可可以沒(méi)有操作作系統(tǒng)而直接接在芯片上運(yùn)運(yùn)行,但是為為了合理的調(diào)調(diào)度多任務(wù)、利利用系統(tǒng)資源源,嵌入式系系統(tǒng)一般還是是要以成熟的的實(shí)時(shí)操作系系統(tǒng)作為開(kāi)發(fā)發(fā)平臺(tái),這樣樣才能更好的的保證程序執(zhí)執(zhí)行的實(shí)時(shí)性性、可靠性,并并減少開(kāi)發(fā)時(shí)時(shí)間,保證軟軟件質(zhì)量。同同時(shí),為了滿滿足系統(tǒng)實(shí)時(shí)時(shí)性的要求,所所采用的處理理單元也必須須要求速度快快,可靠性高高,并且要有有豐富的外部部設(shè)備。這樣樣,DSP的應(yīng)用就必必不可少,它它可以實(shí)時(shí)地地完成FFT,卷積,數(shù)數(shù)字濾波等一一系列算法的的計(jì)算,具有有多組內(nèi)部總總線,適合于于高速的數(shù)字字信號(hào)處理。具具有體積小、功功耗小、使用用方便、處理理數(shù)據(jù)量大和和精度高等優(yōu)優(yōu)點(diǎn)。這樣,將將嵌入式實(shí)時(shí)時(shí)操作系統(tǒng)移移植到DSP芯片中就成成為當(dāng)今社會(huì)會(huì)的主流。1.2嵌入入式操作系統(tǒng)統(tǒng)嵌入式系統(tǒng)是以以應(yīng)用為中心心,以計(jì)算機(jī)機(jī)技術(shù)為基礎(chǔ)礎(chǔ),軟件硬件件可裁剪,適適應(yīng)應(yīng)用系統(tǒng)統(tǒng)對(duì)功能、可可靠性、成本本、體積、功功耗嚴(yán)格要求求的專用計(jì)算算機(jī)系統(tǒng)。同同時(shí)還應(yīng)該看看到,嵌入式式系統(tǒng)本身還還是一個(gè)外延延極廣的名詞詞。凡是與產(chǎn)產(chǎn)品結(jié)合在一一起的具有嵌嵌入式特點(diǎn)的的控制系統(tǒng)都都可以叫嵌入入式系統(tǒng),而而且有時(shí)很難難給它下一個(gè)個(gè)準(zhǔn)確的定義義?,F(xiàn)在人們們講嵌入式系系統(tǒng)時(shí),某種種程度上是指指近些年來(lái)比比較熱的具有有操作系統(tǒng)的的嵌入式系統(tǒng)統(tǒng)。它一般由由嵌入式微處處理器、外圍圍硬件設(shè)備、嵌嵌入式操作系系統(tǒng)以及用戶戶的應(yīng)用程序序等四個(gè)部分分組成,用于于實(shí)現(xiàn)對(duì)其他他設(shè)備的控制制、監(jiān)視或管管理等功能。軟軟件部分包括括操作系統(tǒng)軟軟件和應(yīng)用程程序編程。有有時(shí)設(shè)計(jì)人員員把這兩種軟軟件組合在一一起。應(yīng)用程程序控制著系系統(tǒng)的運(yùn)作和和行為;而操作系統(tǒng)統(tǒng)控制著應(yīng)用用程序編程與與硬件的交互互作用。嵌入式系統(tǒng)通常常具有以下幾幾個(gè)特性:(1)完成單一一或一組緊密密相關(guān)的特定定功能;(2)具有高性性能和實(shí)時(shí)的的要求,并且且這些要求正正在不斷增加加;(3)系統(tǒng)作為為設(shè)備的一部部分,其運(yùn)行行一般不需要要人工干預(yù);;(4)系統(tǒng)的電電源可靠性和和安全性通常常是影響設(shè)計(jì)計(jì)的重要因素素;(5)處理器的的選擇是嵌入入式系統(tǒng)設(shè)計(jì)計(jì)的關(guān)鍵。總之,嵌入式系系統(tǒng)是面向用用戶、面向產(chǎn)產(chǎn)品、面相應(yīng)應(yīng)用的,如果果獨(dú)立于應(yīng)用用自行發(fā)展,就就會(huì)失去市場(chǎng)場(chǎng)。和通用計(jì)計(jì)算機(jī)不同,嵌嵌入式系統(tǒng)的的硬件和軟件件都必須高效效率的設(shè)計(jì),量量體裁衣、去去除冗余,力力爭(zhēng)在同樣的的硅片面積上上實(shí)現(xiàn)更高的的性能,這樣樣才能在具體體應(yīng)用對(duì)嵌入入式系統(tǒng)的選選擇中更具有有競(jìng)爭(zhēng)力。嵌嵌入式系統(tǒng)本本身不具備自自舉開(kāi)發(fā)能力力,即使設(shè)計(jì)計(jì)完成以后用用戶通常也是是不能對(duì)其中中的程序功能能進(jìn)行修改的的,必須有一一套開(kāi)發(fā)工具具和環(huán)境才能能進(jìn)行,這些些工具和環(huán)境境一般是基于于通用計(jì)算機(jī)機(jī)上的軟硬件件設(shè)備。嵌入入式系統(tǒng)和具具體應(yīng)用有機(jī)機(jī)的結(jié)合在一一起,它的升升級(jí)換代也是是和具體產(chǎn)品品同步進(jìn)行的的,因此嵌入入式系統(tǒng)產(chǎn)品品一旦進(jìn)入市市場(chǎng),具有較較長(zhǎng)的生命周周期。1.3嵌入入式實(shí)時(shí)操作作系統(tǒng)μC/OS--II嵌入式實(shí)時(shí)操作作系統(tǒng)是嵌入入式應(yīng)用軟件件的基礎(chǔ)和開(kāi)開(kāi)發(fā)平臺(tái)。RTOS建立在單片片機(jī)硬件系統(tǒng)統(tǒng)之上,用戶戶的一切開(kāi)發(fā)發(fā)工作都進(jìn)行行于其上,因因此它可以稱稱作是一個(gè)平平臺(tái)。采用RTOS的用戶不必必花大量時(shí)間間學(xué)習(xí)硬件,和和直接開(kāi)發(fā)相相比起點(diǎn)更高高。RTOS還是一個(gè)標(biāo)標(biāo)準(zhǔn)化的平臺(tái)臺(tái),它定義了了每個(gè)應(yīng)用任任務(wù)和內(nèi)核的的接口,也促促進(jìn)了應(yīng)用程程序的標(biāo)準(zhǔn)化化。嵌入式實(shí)實(shí)時(shí)操作系統(tǒng)統(tǒng)的出現(xiàn),將將大大提高嵌嵌入式系統(tǒng)開(kāi)開(kāi)發(fā)的效率,改改變以往嵌入入式軟件設(shè)計(jì)計(jì)只能針對(duì)具具體的應(yīng)用從從頭做起的弊弊端,減少系系統(tǒng)開(kāi)發(fā)的工工作量,增強(qiáng)強(qiáng)嵌入式應(yīng)用用軟件的可移移植性,使嵌嵌入式系統(tǒng)的的開(kāi)發(fā)方法更更科學(xué)?;\統(tǒng)的講,嵌入入式實(shí)時(shí)操作作系統(tǒng)RTOS就是嵌入式式應(yīng)用中支持持實(shí)時(shí)功能的的操作系統(tǒng),它它具有以下幾幾個(gè)特點(diǎn)[11]:(1)更加面向向硬件系統(tǒng),而而不是操作者者。嵌入式系系統(tǒng)處理器一一般都是獨(dú)立立工作的,沒(méi)沒(méi)有人的直接接參與。即使使參與,也沒(méi)沒(méi)有大量的文文字信息輸出出。因此RTOS著重面向的的是硬件,而而不是具有完完整的人機(jī)界界面。一般情情況下,RTOS不是直接可可用的,一般般需要經(jīng)過(guò)針針對(duì)專門平臺(tái)臺(tái)的移植操作作系統(tǒng)才能正正常工作。(2)實(shí)時(shí)性。單單片機(jī)系統(tǒng)的的監(jiān)測(cè)、控制制、通信等工工作都要求實(shí)實(shí)時(shí)性,一旦旦出現(xiàn)有關(guān)情情況,CPU能夠及時(shí)響響應(yīng),刻不容容緩。為此,一一個(gè)實(shí)用的RTOS都應(yīng)具有完完善的中斷響響應(yīng)機(jī)制,保保證中斷響應(yīng)應(yīng)潛伏時(shí)間足足夠短。(3)多任務(wù)。半半導(dǎo)體技術(shù)的的發(fā)展和應(yīng)用用復(fù)雜性的增增長(zhǎng)促使CPU的處理能力力越來(lái)越高,在在這樣強(qiáng)大的的處理器上運(yùn)運(yùn)行應(yīng)用程序序,可以根據(jù)據(jù)需要,將應(yīng)應(yīng)用要求劃分分為數(shù)個(gè)任務(wù)務(wù),這樣有利利于軟件的開(kāi)開(kāi)發(fā)和維護(hù)。因因此單片機(jī)系系統(tǒng)中采用的的RTOS必然是支持持多任務(wù)的,并并能夠根據(jù)各各個(gè)任務(wù)的輕輕重緩急,合合理地在它們們之間分配CPU和各種資源源的占用時(shí)間間。(4)高可靠靠性。單片機(jī)機(jī)系統(tǒng)一般都都是和工業(yè)控控制、交通工工具、醫(yī)用器器械等機(jī)電系系統(tǒng)密切相關(guān)關(guān),不適當(dāng)?shù)牡妮敵錾踔敛徊患皶r(shí)的輸出出都可能會(huì)帶帶來(lái)財(cái)產(chǎn)損失失和安全問(wèn)題題。因此嵌入入式系統(tǒng)中的的RTOS要求高可靠靠性,發(fā)行之之前必須經(jīng)過(guò)過(guò)嚴(yán)格的測(cè)試試。選擇μC/OSS-II作為為移植到TMS3220LF24407中的對(duì)象,主主要是因?yàn)?(1)μC/OOS-II是是一個(gè)微型的的實(shí)時(shí)操作系系統(tǒng),包括了了一個(gè)操作系系統(tǒng)最基本的的一些特性,如如任務(wù)調(diào)度、任任務(wù)通信、內(nèi)內(nèi)存管理、中中斷管理等,而而且這是一個(gè)個(gè)代碼完全開(kāi)開(kāi)放的實(shí)時(shí)操操作系統(tǒng),簡(jiǎn)簡(jiǎn)單明了的結(jié)結(jié)構(gòu)和嚴(yán)謹(jǐn)?shù)牡拇a風(fēng)格,非非常適合初涉涉嵌入式操作作系統(tǒng)的人士士學(xué)習(xí),它可可以讓我們以以最快的速度度來(lái)了解操作作系統(tǒng)的概念念、結(jié)構(gòu)和模模塊工作原理理,并由淺入入深逐步推廣廣到商用操作作系統(tǒng)上。(2)μC/OOS-II具具有無(wú)與倫比比的優(yōu)點(diǎn),小小到可以移植植到無(wú)任何外外部存儲(chǔ)器的的單片80C5I系統(tǒng)上運(yùn)行行,大到可以以擴(kuò)展成可與與昂貴的商業(yè)業(yè)系統(tǒng)所媲美美的完美系統(tǒng)統(tǒng)。(3)它的應(yīng)用用范圍廣,自自從92年發(fā)布以來(lái)來(lái),己經(jīng)廣泛泛應(yīng)用于全世世界各個(gè)公司司的成百上千千種產(chǎn)品中。目目前己經(jīng)被移移植到40多種不同結(jié)結(jié)構(gòu)的CPU上,運(yùn)行在在從8位到64位的各種系系統(tǒng)之上。世世界上許多學(xué)學(xué)院和大學(xué)也也都在實(shí)時(shí)系系統(tǒng)的課程教教學(xué)中采用μμC/OS--II.。(4)它是一個(gè)個(gè)完整的可移移植,固化,裁裁剪的占先式式實(shí)時(shí)多任務(wù)務(wù)內(nèi)核。它可可以根據(jù)應(yīng)用用程序的需要要,只使用系系統(tǒng)提供的部部分服務(wù),而而且它總是運(yùn)運(yùn)行就緒的最最高優(yōu)先級(jí)的的任務(wù),可以以管理多達(dá)64個(gè)任務(wù)。1.4DSSP的應(yīng)用DSP是數(shù)字信信號(hào)處理或數(shù)數(shù)字信號(hào)處理理器的簡(jiǎn)稱,DSP芯片采用程程序總線、數(shù)數(shù)據(jù)總線分別別獨(dú)立并具有有多條總線的的哈佛結(jié)構(gòu),這這種內(nèi)部總線線并行技術(shù),允允許在一個(gè)機(jī)機(jī)器指令周期期內(nèi)同時(shí)進(jìn)行行程序讀出和和數(shù)據(jù)存取而而互不干擾。目目前DSP的應(yīng)用已經(jīng)經(jīng)遍及電子學(xué)學(xué)的每一個(gè)領(lǐng)領(lǐng)域,主要包包含在以下幾幾個(gè)方面:(1)通用數(shù)字字信號(hào)處理,如如自適應(yīng)濾波波,數(shù)字濾波波,F(xiàn)FT,波形生成成等;(2)語(yǔ)音信號(hào)號(hào)處理,如語(yǔ)語(yǔ)音識(shí)別,語(yǔ)語(yǔ)音合成,語(yǔ)語(yǔ)音編碼,文文字/語(yǔ)音轉(zhuǎn)換,語(yǔ)語(yǔ)音信箱等;;(3)圖形//圖像處理,如如三維動(dòng)畫,模模式識(shí)別,電電子地圖,桌桌面印刷系統(tǒng)統(tǒng);(4)其它領(lǐng)領(lǐng)域,如震動(dòng)動(dòng)噪聲分析與與處理,聲納納和雷達(dá)信號(hào)號(hào)處理,汽車車安全與全球球定位,航天天制導(dǎo),生物物醫(yī)學(xué)工程等等。由于DSP的應(yīng)應(yīng)用,促進(jìn)了了通信,計(jì)算算機(jī)和消費(fèi)類類電子產(chǎn)品的的融合,這將將給DSP提供前前所未有的發(fā)發(fā)展機(jī)遇,隨隨著DSP技術(shù)的不斷斷完善和各種種各樣的DSP芯片的推出出,數(shù)字信號(hào)號(hào)處理將會(huì)有有更廣闊的發(fā)發(fā)展空間。1.5本設(shè)設(shè)計(jì)的研究方方法和預(yù)期結(jié)結(jié)果本設(shè)計(jì)采用的是是由JeanJJ.Labrrosse先先生開(kāi)發(fā)研究究的嵌入式實(shí)實(shí)時(shí)操作系統(tǒng)統(tǒng)μC/OS--II作為嵌嵌入到DSP中的系統(tǒng),這這是因?yàn)樗牡目梢浦残院芎軓?qiáng),并且可可根據(jù)應(yīng)用程程序需要的系系統(tǒng)服務(wù)對(duì)內(nèi)內(nèi)核進(jìn)行裁減減,雖然是源源代碼完全公公開(kāi),但性能能完全可以與與純商業(yè)軟件件相媲美,穩(wěn)穩(wěn)定性和可靠靠性很高。將將其移植到不不同的處理器器上,只須修修改與處理器器相關(guān)的代碼碼,即可完成成移植。DSP芯片采用的的是美國(guó)德州州儀器公司((TI)生產(chǎn)的定點(diǎn)點(diǎn)處理器TMS3220LF24407,需要深入入了解其CPU結(jié)構(gòu)和內(nèi)部部的資源,尤尤其對(duì)其內(nèi)部部的寄存器要要十分清楚,在在μC/OS--II的內(nèi)核核進(jìn)行任務(wù)調(diào)調(diào)度和任務(wù)切切換時(shí),需要要將CPU中的相關(guān)寄寄存器送入任任務(wù)堆棧區(qū),并并將堆棧指針針?lè)旁谌蝿?wù)控控制塊中,便便于恢復(fù)任務(wù)務(wù)時(shí)恢復(fù)CPU寄存器的內(nèi)內(nèi)容。具體移移植過(guò)程中,需需要修改的函函數(shù)主要有OOS_CPUU.H、OS_CPPU_A.AASM、OS_CPPU_C.CC這三個(gè)函數(shù)數(shù),因?yàn)樗鼈儌兌寂c處理器器的類型息息息相關(guān)。移植所依托的環(huán)環(huán)境就是TI公司生產(chǎn)的的軟件開(kāi)發(fā)平平臺(tái)CodeCompooser,它采用的的是圖形接口口,提供有編編譯指令,參參數(shù)修改工具具,它為非代代碼產(chǎn)生工具具集成了一個(gè)個(gè)統(tǒng)一的環(huán)境境,包含了TI公司提供的C源代碼調(diào)試試器和模擬器器所具有的功功能,能對(duì)TMS3220LF24407系列DSP進(jìn)行指令級(jí)級(jí)的仿真和進(jìn)進(jìn)行可視化的的實(shí)時(shí)數(shù)據(jù)分分析,可大大大提高開(kāi)發(fā)工工作效率,縮縮短應(yīng)用系統(tǒng)統(tǒng)開(kāi)發(fā)周期。本設(shè)計(jì)預(yù)期達(dá)到到的結(jié)果是將將μC/OS--II的內(nèi)核核結(jié)構(gòu)做一個(gè)個(gè)系統(tǒng)的認(rèn)識(shí)識(shí),并將其成成功地移植到到TMS3220LF24407的DSP芯片中,使使其在CodeCompooser編譯環(huán)境下下能夠順利的的運(yùn)行。第2章嵌入入式實(shí)時(shí)操作作系統(tǒng)μC/OS--II的分析析μC/OS-III是一個(gè)實(shí)實(shí)時(shí)內(nèi)核,主主要提供任務(wù)務(wù)管理功能。它它是由μC/OS升級(jí)級(jí)而來(lái)的,并并且做了很大大的改進(jìn)。μμC/OS--II的使用對(duì)象象是嵌入式系系統(tǒng),并且很很容易移植到到不同構(gòu)架的的微處理器上上。下面介紹一下μμC/OS--II的特點(diǎn)點(diǎn)[1]:(1)μC/OOS-II是是由JeanJJ.Labrrosse先先生編寫的一一個(gè)開(kāi)放式內(nèi)內(nèi)核,最主要要的特點(diǎn)就是是源碼公開(kāi)。這這一點(diǎn)對(duì)于用用戶來(lái)說(shuō)可謂謂利弊各半,好好處在于,一一方面它是免免費(fèi)的,另一一方面用戶可可以根據(jù)自己己的需要對(duì)它它進(jìn)行修改。缺缺點(diǎn)在于它缺缺乏必要的支支持,沒(méi)有功功能強(qiáng)大的軟軟件包,用戶戶通常需要自自己編寫驅(qū)動(dòng)動(dòng)程序,特別別是如果用戶戶使用的是不不太常用的單單片機(jī),還必必須自己編寫寫移植程序。(2)μC//OS-III是一個(gè)占先先式的內(nèi)核,即即己經(jīng)準(zhǔn)備就就緒的高優(yōu)先先級(jí)任務(wù)可以以剝奪正在運(yùn)運(yùn)行的低優(yōu)先先級(jí)任務(wù)的CPU使用權(quán)。這這個(gè)特點(diǎn)使得得它的實(shí)時(shí)性性比非占先式式的內(nèi)核要好好。通常我們們都是在中斷斷服務(wù)程序中中使高優(yōu)先級(jí)級(jí)任務(wù)進(jìn)入就就緒態(tài)(例如發(fā)信號(hào)),這樣退出出中斷服務(wù)程程序后,將進(jìn)進(jìn)行任務(wù)切換換,高優(yōu)先級(jí)級(jí)任務(wù)將被執(zhí)執(zhí)行。拿511單片機(jī)為例例,比較一下下就可以發(fā)現(xiàn)現(xiàn)這樣做的好好處。假如需需要用中斷方方式采集一批批數(shù)據(jù)并進(jìn)行行處理,在傳傳統(tǒng)的編程方方法中不能在在中斷服務(wù)程程序中進(jìn)行復(fù)復(fù)雜的數(shù)據(jù)處處理,因?yàn)檫@這會(huì)使得關(guān)中中斷時(shí)間過(guò)長(zhǎng)長(zhǎng)。所以經(jīng)常常采用的方法法是置一標(biāo)志志位,然后退退出中斷。由由于主程序是是循環(huán)執(zhí)行的的,所以它總總有機(jī)會(huì)檢測(cè)測(cè)到這一標(biāo)志志并轉(zhuǎn)到數(shù)據(jù)據(jù)處理程序中中去。但是因因?yàn)闊o(wú)法確定定發(fā)生中斷時(shí)時(shí)程序到底執(zhí)執(zhí)行到了什么么地方,也就就無(wú)法判斷要要經(jīng)過(guò)多長(zhǎng)時(shí)時(shí)間數(shù)據(jù)處理理程序才會(huì)執(zhí)執(zhí)行,中斷響響應(yīng)時(shí)間無(wú)法法確定,系統(tǒng)統(tǒng)的實(shí)時(shí)性不不強(qiáng)。如果使使用μC/OS--II的話,只只要把數(shù)據(jù)處處理程序的優(yōu)優(yōu)先級(jí)設(shè)定得得高一些,并并在中斷服務(wù)務(wù)程序中使它它進(jìn)入就緒態(tài)態(tài),中斷結(jié)束束后數(shù)據(jù)處理理程序就會(huì)被被立即執(zhí)行,這這樣可以把中中斷響應(yīng)時(shí)間間限制在一定定的范圍內(nèi)。(3)μC//OS-III和大家所熟熟知的Linux等分時(shí)操作作系統(tǒng)不同,它它不支持時(shí)間間片輪轉(zhuǎn)法。μC/OS-II是一個(gè)基于優(yōu)先級(jí)的實(shí)時(shí)操作系統(tǒng),每個(gè)任務(wù)的優(yōu)先級(jí)必須不同,分析它的源碼會(huì)發(fā)現(xiàn)μC/OS-II把任務(wù)的優(yōu)先級(jí)當(dāng)作任務(wù)的標(biāo)識(shí)來(lái)使用,如果優(yōu)先級(jí)相同,任務(wù)將無(wú)法區(qū)分。進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)首先得到CPU的使用權(quán),只有等它交出CPU的使用權(quán)后,其他任務(wù)才可以被執(zhí)行。顯而易見(jiàn),如果只考慮實(shí)時(shí)性,它當(dāng)然比分時(shí)系統(tǒng)好,它可以保證重要任務(wù)總是優(yōu)先占有CPU。(4)μC//OS-III對(duì)共享資源源提供了保護(hù)護(hù)機(jī)制。正如如上文所提到到的,μC/OS--II是一個(gè)個(gè)支持多任務(wù)務(wù)的操作系統(tǒng)統(tǒng)。一個(gè)完整整的程序可以以劃分成幾個(gè)個(gè)任務(wù),不同同的任務(wù)執(zhí)行行不同的功能能。這樣,一一個(gè)任務(wù)就相相當(dāng)于模塊化化設(shè)計(jì)中的一一個(gè)子模塊。在在任務(wù)中添加加代碼時(shí),只只要不是共享享資源就不必必?fù)?dān)心互相之之間有影響。而而對(duì)于共享資資源(比如串口),μC/OS--II也提供供了很好的解解決辦法。一一般情況下使使用的是信號(hào)號(hào)量的方法。簡(jiǎn)簡(jiǎn)單地說(shuō),先先創(chuàng)建一個(gè)信信號(hào)量并對(duì)它它進(jìn)行初始化化。當(dāng)一個(gè)任任務(wù)需要使用用一個(gè)共享資資源時(shí),它必必須先申請(qǐng)得得到這個(gè)信號(hào)號(hào)量,而一旦旦得到了此信信號(hào)量,那就就只有等使用用完了該資源源,信號(hào)量才才會(huì)被釋放。在在這個(gè)過(guò)程中中即使有優(yōu)先先權(quán)更高的任任務(wù)進(jìn)入了就就緒態(tài),因?yàn)闉闊o(wú)法得到此此信號(hào)量,也也不能使用該該資源。這個(gè)個(gè)特點(diǎn)的好處處顯而易見(jiàn),例例如當(dāng)顯示屏屏正在顯示信信息的時(shí)候,外外部產(chǎn)生了一一個(gè)中斷,而而在中斷服務(wù)務(wù)程序中需要要顯示屏顯示示其他信息。這這樣,退出中中斷服務(wù)程序序后,原有的的信息就可能能被破壞了。而而在μC/OS--II中采用用信號(hào)量的方方法時(shí),只有有顯示屏把原原有信息顯示示完畢后才可可以顯示新信信息,從而可可以避免這個(gè)個(gè)現(xiàn)象。不過(guò)過(guò),采用這種種方法是以犧犧牲系統(tǒng)的實(shí)實(shí)時(shí)性為代價(jià)價(jià)的。如果顯顯示原有信息息需要耗費(fèi)大大量時(shí)間,系系統(tǒng)只好等待待。從結(jié)果上上看,等于延延長(zhǎng)了中斷響響應(yīng)時(shí)間,這這對(duì)于未顯示示信息是報(bào)警警信息的情況況,無(wú)疑是致致命的。發(fā)生生這種情況,在在μC/OS--II中稱為為優(yōu)先級(jí)反轉(zhuǎn)轉(zhuǎn),就是高優(yōu)優(yōu)先級(jí)任務(wù)必必須等待低優(yōu)優(yōu)先級(jí)任務(wù)的的完成。在上上述情況下,在在兩個(gè)任務(wù)之之間發(fā)生優(yōu)先先級(jí)反轉(zhuǎn)是無(wú)無(wú)法避免的。2.1μCC/OS-III的內(nèi)核結(jié)結(jié)構(gòu)首先,描述一下下μC/OS--II的主要要結(jié)構(gòu)概貌[[1][2]],有以下一一些內(nèi)容:(1)μC/OOS-II處處理臨界區(qū)代代碼的方法。(2)μC/OOS-II的的任務(wù)及任務(wù)務(wù)控制塊。(3)任務(wù)的狀狀態(tài)轉(zhuǎn)換圖。(4)任務(wù)的調(diào)調(diào)度。(5)中斷處理理的過(guò)程。(6)μC/OOS-II處理時(shí)鐘節(jié)節(jié)拍的方法。(7)μC/OOS-II的的初始化和多多任務(wù)的啟動(dòng)動(dòng)。代碼的臨界界段一個(gè)任務(wù)在某些些時(shí)候可能會(huì)會(huì)訪問(wèn)共享內(nèi)內(nèi)存或者共享享文件,或其其他共享資源源,我們把對(duì)對(duì)共享內(nèi)存進(jìn)進(jìn)行訪問(wèn)的程程序片斷稱作作臨界區(qū)(critticalsectiion)。為了防止止不同的任務(wù)務(wù)同時(shí)處于臨臨界區(qū),必須須使用一種互互斥的方法來(lái)來(lái)避免這種情情況的發(fā)生。而而對(duì)于操作系系統(tǒng)內(nèi)核來(lái)說(shuō)說(shuō),關(guān)中斷是是最好的辦法法。和其他內(nèi)內(nèi)核一樣,μμC/OS--II在處理臨界界區(qū)代碼時(shí)需需要關(guān)中斷,處處理完后再開(kāi)開(kāi)中斷。微處理器都應(yīng)該該有開(kāi)關(guān)中斷斷的指令,μμC/OS--II提供了了兩個(gè)宏定義義OS_ENNTER_CCRITICCAL()和和OS_EXXIT_CRRITICAAL()來(lái)來(lái)開(kāi)關(guān)中斷,因因?yàn)閮蓚€(gè)宏跟跟處理器的類類型有關(guān),所所以定義在OOS_CPUU.H文件中中,這兩個(gè)宏宏調(diào)用必須成成對(duì)出現(xiàn)。μC/OS-III提供了三三種開(kāi)關(guān)中斷斷的方法,第第一種就是用用最簡(jiǎn)單的宏宏調(diào)用來(lái)直接接將處理器的的中斷允許和和禁止,這種種方法速度快快,但如果在在函數(shù)調(diào)用前前,中斷是關(guān)關(guān)掉的,有可可能在函數(shù)返返回時(shí),將中中斷打開(kāi),這這往往事與愿愿違;第二種種方法是將中中斷的開(kāi)關(guān)狀狀態(tài)保存到堆堆棧中,執(zhí)行行中斷返回時(shí)時(shí),只需簡(jiǎn)單單的從堆棧中中彈出開(kāi)關(guān)狀狀態(tài)即可,這這樣調(diào)用函數(shù)數(shù)之前的開(kāi)關(guān)關(guān)狀態(tài)在調(diào)用用之后不會(huì)受受影響,缺點(diǎn)點(diǎn)就是速度較較第一種方法法較慢;第三三種方法是把把當(dāng)前處理器器的狀態(tài)字的的值保存在C的局部變量量中,用這個(gè)個(gè)變量來(lái)恢復(fù)復(fù)PSW。任務(wù)的狀態(tài)態(tài)μC/OS-III的內(nèi)核總總共有五種狀狀態(tài),分別為為:睡眠態(tài)、就就緒態(tài)、運(yùn)行行態(tài)、等待狀狀態(tài)、中斷服服務(wù)態(tài);(1)睡眠態(tài)是是指任務(wù)駐留留在內(nèi)存空間間中,沒(méi)有被被內(nèi)核管理,只只要通過(guò)任務(wù)務(wù)建立函數(shù)OSTasskCreaate()和OSTasskCreaateExtt()就可實(shí)現(xiàn);;(2)就緒態(tài)態(tài),任務(wù)一旦旦建立就進(jìn)入入了就緒態(tài),這這時(shí)任務(wù)就準(zhǔn)準(zhǔn)備運(yùn)行了,內(nèi)內(nèi)核總是運(yùn)行行優(yōu)先級(jí)最高高的任務(wù),只只有執(zhí)行OSTasskDel(()才能使任務(wù)務(wù)返回到睡眠眠態(tài);(3)運(yùn)行態(tài)態(tài),一旦調(diào)用用OSStaart()函數(shù)就可以以啟動(dòng)多任務(wù)務(wù),這個(gè)函數(shù)數(shù)運(yùn)行已經(jīng)建建立的處于最最高優(yōu)先級(jí)的的任務(wù),這時(shí)時(shí)這個(gè)任務(wù)就就進(jìn)入了運(yùn)行行態(tài),任何時(shí)時(shí)候都只能有有一個(gè)任務(wù)進(jìn)進(jìn)入運(yùn)行態(tài);;(4)等待狀狀態(tài),運(yùn)行的的任務(wù)通過(guò)調(diào)調(diào)用函數(shù)OSSTimeDDly()和和OSTimmeDlyHHMSM())來(lái)將自身延延遲一段時(shí)間間,這時(shí)任務(wù)務(wù)就進(jìn)入了等等待狀態(tài),等等待的時(shí)間一一到,開(kāi)始執(zhí)執(zhí)行任務(wù)切換換函數(shù),運(yùn)行行當(dāng)前就緒的的最高優(yōu)先級(jí)級(jí)的任務(wù);(5)中斷服服務(wù)態(tài),運(yùn)行行的任務(wù)被中中斷后就進(jìn)入入了中斷服務(wù)務(wù)態(tài),進(jìn)入中中斷的任務(wù)被被掛起,并開(kāi)開(kāi)始運(yùn)行中斷斷服務(wù)程序,因因?yàn)橹袛喾?wù)務(wù)程序可能使使更高優(yōu)先級(jí)級(jí)的任務(wù)進(jìn)入入了就緒態(tài),這這就要求在中中斷返回時(shí)判判斷被中斷的的任務(wù)是否是是就緒態(tài)任務(wù)務(wù)中優(yōu)先級(jí)最最高的,如果果不是則使最最高的進(jìn)入運(yùn)運(yùn)行態(tài),如果果是則返回中中斷了的任務(wù)務(wù)繼續(xù)執(zhí)行。μC/OS-III不論在任任何情況下,都都會(huì)使任務(wù)運(yùn)運(yùn)行在上述五五種狀態(tài)之一一,各個(gè)狀態(tài)態(tài)之間的轉(zhuǎn)換換關(guān)系,任務(wù)務(wù)的狀態(tài)轉(zhuǎn)換換的方法如圖圖2-1:等待狀態(tài)任務(wù)睡眠態(tài)就緒態(tài)等待狀態(tài)任務(wù)睡眠態(tài)就緒態(tài)運(yùn)行態(tài)中斷態(tài)OSFlagPost()OSMboxPost()OSMutexPost()OSQPost()OSSemPost()OSTaskResume()OSTimeTick()OSTaskDel()OSTaskCreate()OSTaskCreateExt()OSFlagPend()OSMboxPend()OSMutexPend()OSQPend()OSSemPend()OSTaskSuspend()OSTimeDly()OSTimeDlyHMSM()中斷被剝奪OSTaskDel()OSTaskDel()OSIntExit()()圖2-1任務(wù)轉(zhuǎn)換狀態(tài)圖任務(wù)及任務(wù)務(wù)控制塊在μC/OS--II中,任任務(wù)的程序被被寫成函數(shù)的的形式,這個(gè)個(gè)函數(shù)有函數(shù)數(shù)返回類型,有有形式參數(shù)變變量,但其內(nèi)內(nèi)部是一個(gè)無(wú)無(wú)限的循環(huán),是是絕對(duì)不會(huì)返返回的。當(dāng)任任務(wù)完成以后后,任務(wù)可以以自我刪除,任任務(wù)函數(shù)可以以調(diào)用OSTTaskDeel()來(lái)實(shí)實(shí)現(xiàn)這個(gè)目的的,任務(wù)刪除除不是指任務(wù)務(wù)代碼被刪除除了,而是指指內(nèi)核將不再再處理這個(gè)任任務(wù)了,當(dāng)然然任務(wù)函數(shù)也也不會(huì)被執(zhí)行行。任務(wù)想要要再次進(jìn)入內(nèi)內(nèi)核可以調(diào)用用建立任務(wù)函函數(shù)來(lái)實(shí)現(xiàn)。μC/OS-III可以管理64個(gè)任務(wù),目目前系統(tǒng)保留留了優(yōu)先級(jí)為為0、1、2、3、OS_LOOWEST__PRIO--3、OS_LOOWEST__PRIO--2、OS_LOOWEST__PRIO--1、OS_LOWESSTPRIIO這8個(gè)任務(wù)。OSS_LOWEEST_PRRIO在OS_CFG.H中定義。必必須給每個(gè)任任務(wù)賦以不同同的優(yōu)先級(jí),優(yōu)優(yōu)先級(jí)號(hào)越低低,任務(wù)的優(yōu)優(yōu)先級(jí)越高。任務(wù)控制塊(OOS_TCBB)是一個(gè)數(shù)據(jù)據(jù)結(jié)構(gòu),是用用來(lái)描述任務(wù)務(wù)的一些屬性性。例如:任任務(wù)堆棧的指指針,指向任任務(wù)的事件控控制塊,堆棧棧的大小和任任務(wù)的優(yōu)先級(jí)級(jí)等。當(dāng)一個(gè)個(gè)任務(wù)建立時(shí)時(shí),任務(wù)控制制塊將被初始始化。當(dāng)任務(wù)務(wù)的CPU使用權(quán)權(quán)被剝奪時(shí),μC/OS-II用任務(wù)控制塊來(lái)保存該任務(wù)的狀態(tài),當(dāng)任務(wù)重新得到CPU使用權(quán)時(shí),任務(wù)控制塊能確保任務(wù)從中斷的那一點(diǎn)繼續(xù)執(zhí)行下去。任務(wù)的調(diào)度度任務(wù)調(diào)度[2]][3]就是是指以什么方方式和策略在在任務(wù)之間分分配CPUU。在嵌入式式實(shí)時(shí)系統(tǒng)應(yīng)應(yīng)用中,最基基本的依據(jù)就就是任務(wù)的執(zhí)執(zhí)行時(shí)間以及及任務(wù)的優(yōu)先先級(jí)。調(diào)度的的基本任務(wù)是是:設(shè)置任務(wù)務(wù)的優(yōu)先級(jí)、操操縱任務(wù)隊(duì)列列中的任務(wù)、阻阻塞其他任務(wù)務(wù)、選擇一個(gè)個(gè)最適合運(yùn)行行的任務(wù)投入入運(yùn)行。μC/OS--II屬于優(yōu)優(yōu)先級(jí)調(diào)度、搶搶占式內(nèi)核[[4][5]][6],首首先從就緒任任務(wù)中選擇優(yōu)優(yōu)先級(jí)最高的的任務(wù)投入運(yùn)運(yùn)行,直到任任務(wù)結(jié)束,才才可以運(yùn)行其其他任務(wù),優(yōu)優(yōu)先級(jí)最高任任務(wù)的運(yùn)行是是不可搶占的的,低優(yōu)先級(jí)級(jí)任務(wù)在運(yùn)行行時(shí)可以被高高優(yōu)先級(jí)任務(wù)務(wù)搶占。所以以任務(wù)調(diào)度的的工作就是::查找準(zhǔn)備就就緒的最高優(yōu)優(yōu)先級(jí)的任務(wù)務(wù)并進(jìn)行上下下文切換。μμC/OS--II是通過(guò)過(guò)查表法找到到準(zhǔn)備就緒的的優(yōu)先級(jí)最高高的任務(wù),為為了實(shí)現(xiàn)就緒緒任務(wù)的快速速查找,μC/OS--II采用了了一種獨(dú)特的的方式。因?yàn)闉棣藽/OS--II支持64個(gè)任務(wù),也也就是由64個(gè)優(yōu)先級(jí)0~633,一個(gè)字節(jié)用0~6位來(lái)表示優(yōu)優(yōu)先級(jí),然后后根據(jù)六位中中的高三位將將64個(gè)任務(wù)分為8個(gè)準(zhǔn)備就緒緒表數(shù)組OSRdyyTbl[77],每組又根根據(jù)低3位包含8個(gè)任務(wù),若若每組有任務(wù)務(wù)處于就緒態(tài)態(tài),則相應(yīng)的的比特置1;假設(shè)任務(wù)3和任務(wù)5處于就緒態(tài)態(tài),則OSRddyTbl[[0]=0xx28;任務(wù)17和任務(wù)20處于就緒態(tài)態(tài),則OSRRdyTbll[2]=00x12。μC/OS--II還定義義了一個(gè)8比特字節(jié)變變量,OSRRdyGrpp準(zhǔn)備就緒組組。OSRddyGrp中的每一位位表示8組任務(wù)中每每一組是否有有準(zhǔn)備就緒的的任務(wù),其相相互關(guān)系如圖圖2-2。圖2-2就緒任務(wù)列表圖2-2就緒任務(wù)列表OSRdyTbl[OS_LOWEST_PRIO/8+1]在OSRdyGrp中的位置在OSRdyTbl[]中的位置XY00YYYXXX7654321015141312111098232221201918171631302928272625243938373635343332474645444342414055545352515049486362616059585756μC/OS-III總是運(yùn)行行進(jìn)入就緒態(tài)態(tài)任務(wù)中優(yōu)先先級(jí)最高的那那一個(gè),調(diào)度度器完成確定定最高優(yōu)先級(jí)級(jí)的任務(wù)。任任務(wù)調(diào)度的工工作由OS__Schedd()函數(shù)完完成。任務(wù)調(diào)調(diào)度函數(shù)首先先通過(guò)查表,找找到進(jìn)入就緒緒態(tài)且優(yōu)先級(jí)級(jí)最高的任務(wù)務(wù);然后需要要判斷當(dāng)前運(yùn)運(yùn)行的任務(wù)是是不是就是該該任務(wù)。如果果是,則省去去了任務(wù)切換換,節(jié)省了時(shí)時(shí)間。如果不不是則調(diào)用實(shí)實(shí)際意義上的的任務(wù)切換函函數(shù)OS_TTASK_SSW()。OS_TASKK_SW())函數(shù)完成的的工作是:首首先將被掛起起任務(wù)的寄存存器進(jìn)棧,然然后將較高優(yōu)優(yōu)先級(jí)的任務(wù)務(wù)的寄存器值值從棧中恢復(fù)復(fù)到當(dāng)前寄存存器中。因?yàn)闉檫@個(gè)過(guò)程與與進(jìn)出中斷的的過(guò)程類似,所所以本設(shè)計(jì)中中使用的方法法是采用軟中中斷的方式使使中斷向量指指向OS_TTASK_SSW()。中斷處理μC/OS-III中,中斷斷服務(wù)子程序序要用匯編語(yǔ)語(yǔ)言來(lái)寫,以以減少時(shí)間上上的開(kāi)銷。用用戶中斷服務(wù)務(wù)子程序:(1)保存全部部CCPU寄存器;(2)調(diào)用OOSIntEEntter()或OSInttNesttiing直接接加1;(3)執(zhí)行用戶戶代碼做中中斷服務(wù);;(4)調(diào)用OOSIntEExiit();(5)恢復(fù)所有有CPUU寄存器;;用戶代碼應(yīng)該將將全全部CPU寄存器器推入當(dāng)前前任任務(wù)棧。通通過(guò)過(guò)跟蹤嵌套套層層數(shù)OSInttNesttiing,μC/OS--II允許中中斷嵌套,故故故用戶應(yīng)該該調(diào)調(diào)用OSInntEntteer(),或者將全全局變量OSInntNesstting直接加1。調(diào)用脫離離中斷函數(shù)OSInntExiitt()標(biāo)志著中斷斷服務(wù)子程程序序的終結(jié),OSInttExitt(()將中斷嵌套套層數(shù)計(jì)數(shù)數(shù)器器減1。當(dāng)嵌套計(jì)計(jì)數(shù)器減到到零零時(shí),所有有中中斷,包括括嵌嵌套的中斷斷就就都完成了了,此此時(shí)μC/OS--II要判定定有沒(méi)有優(yōu)優(yōu)先先級(jí)較高的的任任務(wù)被中斷斷服服務(wù)子程序序((或任一個(gè)嵌嵌套的中斷斷))喚醒了。如如果有優(yōu)先先級(jí)級(jí)高的任務(wù)務(wù)進(jìn)進(jìn)入了就緒緒態(tài)態(tài),μC/OS--II就返回回到那個(gè)高高優(yōu)優(yōu)先級(jí)的任任務(wù)務(wù),OSInttExitt(()返回到調(diào)用用點(diǎn)。保存存的的寄存器的的值值是在這時(shí)時(shí)恢恢復(fù)的,然然后后執(zhí)行中斷斷返返回指令。但但但是,如果果調(diào)調(diào)度被禁止止了了,μC/OS--II將被返返回到被中中斷斷了的任務(wù)務(wù)。一旦CPU響應(yīng)了了這個(gè)中斷斷,CPU的中斷向量量跳轉(zhuǎn)到中中斷斷服務(wù)子程程序序。如上所所述述,中斷服服務(wù)務(wù)子程序保保存存CPU寄存器上下下文,一旦旦做做完,用戶戶中中斷服務(wù)子子程程序通知μC/OS--II進(jìn)入中中斷服務(wù)子子程程序了,辦辦法法是調(diào)用OSInntEntteer()或者給OSInntNesstting直接加1。然后用戶戶中斷服務(wù)務(wù)代代碼開(kāi)始執(zhí)執(zhí)行行。用戶中中斷斷服務(wù)中做做的的事要盡可可能能地少,要要把把大部分工工作作留給任務(wù)務(wù)去去做。中斷斷服服務(wù)子程序序通通知某任務(wù)務(wù)去去做事的手手段段是調(diào)用以以下下函數(shù)之一一::OSMbooxPosstt(),OSQPoost(),OSQPoostFrroont(),OSSemmPostt(()。中斷發(fā)生生并由上述函函數(shù)發(fā)出消消息息時(shí),接收收消消息的任務(wù)務(wù)可可能是,也也可可能不是掛掛起起在郵箱、隊(duì)隊(duì)隊(duì)列或信號(hào)號(hào)量量上的任務(wù)務(wù)。用用戶中斷服服務(wù)務(wù)完成以后后,要要調(diào)用OSInntExiitt()函數(shù)。時(shí)鐘節(jié)拍μC/OS-III需需要提供周周期期性的信號(hào)號(hào)源源,用來(lái)實(shí)實(shí)現(xiàn)現(xiàn)時(shí)間延時(shí)時(shí)和和確認(rèn)超時(shí)時(shí)。節(jié)節(jié)拍率應(yīng)在在每每秒10到100次之間,也也就是每10ms到100ms響應(yīng)一次。響響響應(yīng)的時(shí)間間越越短,系統(tǒng)統(tǒng)的的額外負(fù)荷荷就就越重。用用戶戶必須在多多任任務(wù)系統(tǒng)啟啟動(dòng)動(dòng)之后再啟啟動(dòng)動(dòng)時(shí)鐘節(jié)拍拍源源開(kāi)始計(jì)時(shí)時(shí),也也就是在調(diào)調(diào)用用OSStaart()之后。如果果在之前調(diào)調(diào)用用,時(shí)鐘節(jié)節(jié)拍拍中斷有可可能能在μC/OS--II啟動(dòng)第第一個(gè)任務(wù)務(wù)之之前發(fā)生,此此此時(shí)μC/OS--II是處在在一個(gè)不確確定定的狀態(tài)之之中中,用戶應(yīng)應(yīng)用用程序有可可能能崩潰。μC/OS-III中中的時(shí)鐘節(jié)節(jié)拍拍服務(wù)是通通過(guò)過(guò)在中斷服服務(wù)務(wù)程序中調(diào)調(diào)用用OSTiimeTiicck()實(shí)現(xiàn)的。OSTimmeTicckk()中最大的工工作是給每每個(gè)個(gè)任務(wù)的任任務(wù)務(wù)控制塊中中的的時(shí)間延時(shí)時(shí)項(xiàng)項(xiàng)OSTCBBDly減1(如果該項(xiàng)不不為零的話)。OSTimmeTicckk()從OSTCCBLisstt開(kāi)始沿著鏈鏈表做,一一直直到最后一一個(gè)個(gè)任務(wù)——空閑任務(wù)。當(dāng)當(dāng)當(dāng)某個(gè)任務(wù)務(wù)的的任務(wù)控制制塊塊中的OSTCBBDly減到了0,這個(gè)任務(wù)務(wù)就進(jìn)入就就緒緒態(tài)。注意意,此此時(shí)被任務(wù)務(wù)掛掛起函數(shù)OSTaaskSuusspendd(()掛起的任務(wù)務(wù)不會(huì)進(jìn)入入就就緒態(tài)。從從上上面的分析析可可以看出OSTiimeTiicck()的執(zhí)行時(shí)間間直接與應(yīng)應(yīng)用用程序中建建立立了多少個(gè)個(gè)任任務(wù)成正比比,因因?yàn)槊拷⒘⒁灰粋€(gè)任務(wù),就就就會(huì)相應(yīng)的的建建立一個(gè)任任務(wù)務(wù)控制塊。有可能不能容忍忍在在中斷服務(wù)務(wù)程程序中執(zhí)行行這這么長(zhǎng)的時(shí)時(shí)間間,那么也可以以在任務(wù)級(jí)級(jí)調(diào)調(diào)用OSTiimeTiicck()函數(shù),編寫寫一個(gè)OSTiimeTiicck()函數(shù)專用任任務(wù),并將將此此任務(wù)的優(yōu)優(yōu)先先級(jí)定為最最高高。時(shí)鐘節(jié)節(jié)拍拍中斷服務(wù)務(wù)程程序可以利利用用信號(hào)量發(fā)發(fā)信信號(hào)給這個(gè)個(gè)高高優(yōu)先級(jí)的的任任務(wù)。其實(shí)實(shí)這這樣做的目目的的是將時(shí)鐘鐘節(jié)節(jié)拍程序的的優(yōu)優(yōu)先級(jí)安排排在在所有中斷斷程程序和所有有用用戶任務(wù)之之間間,比安排排在在中斷程序序中中要好一點(diǎn)點(diǎn)。這這樣并不是是說(shuō)說(shuō)時(shí)鐘中斷斷不不重要,只只是是時(shí)鐘節(jié)拍拍程程序沒(méi)有必必要要放在中斷斷級(jí)級(jí)執(zhí)行。2.1.7μCC//OS-IIII的初始化和和啟動(dòng)μC/OS-III的的初始化是是通通過(guò)調(diào)用系系統(tǒng)統(tǒng)函數(shù)OSInnit()實(shí)現(xiàn)的。內(nèi)內(nèi)核所需要要的的所有變量量和和數(shù)據(jù)結(jié)構(gòu)構(gòu)都都被初始化化。之之后,建立立了了空閑任務(wù)務(wù),它它的優(yōu)先級(jí)級(jí)號(hào)號(hào)最低,且且總總是處于就就緒緒態(tài)。統(tǒng)計(jì)計(jì)任任務(wù)也可能能會(huì)會(huì)被建立,這這這主要取決決于于在OS_CCFG.H中定義的統(tǒng)統(tǒng)計(jì)任務(wù)和和任任務(wù)擴(kuò)展是是否否允許。一一旦旦建立,它它也也會(huì)進(jìn)入就就緒緒態(tài)。OSInit(())初始化變量量主要是一一些些系統(tǒng)的全全局局變量,還還初初始化了5個(gè)空的數(shù)據(jù)據(jù)結(jié)構(gòu)空間間。這5個(gè)結(jié)構(gòu)都是是單向鏈表,允允許μC/OS--II從緩沖沖區(qū)中迅速得得到或釋放一一個(gè)其中的元元素。注意,在在空緩沖區(qū)中中空任務(wù)控制制塊的數(shù)目取取決于最多任任務(wù)數(shù)OS__MAX_TTASKS,這個(gè)最多多任務(wù)數(shù)在OS_CFFG.H文件中定義義。還有就是是指向空事件件表OSEveentFreeeListt、空隊(duì)列表OSFreeeListt、空事件標(biāo)標(biāo)志組OSFFlagFrreeLisst和指向空存存儲(chǔ)區(qū)的指針針表OSMemmFreeLList。如圖2-3所示:OSOS_TCBOS_TCBOS_EventOS_EventOS_EventOS_QOS_QOS_QOS_FLAG_GRPOS_FLAG_GRPOS_FLAG_GRPOS_MEMOS_MEMOS_MEMOSTCBFreeListOS_TCBOSEventFreeListOSQFreeListOSFlagFreeListOSMemFreeListOS_MAX_TASKOS_MAX_EVENTSOS_MAX_QSOS_MAX_FLAGOS_MAX_MEM_PART圖2-3初初始化化的五個(gè)數(shù)數(shù)據(jù)據(jù)空間然后OSIniit())將會(huì)建立兩兩個(gè)任務(wù),并并并將這兩個(gè)個(gè)任任務(wù)的任務(wù)務(wù)控控制塊OSTCB用雙向鏈表表鏈接在一一起起。OSTCBBList指向這個(gè)鏈鏈表的起始始處處。當(dāng)建立立一一個(gè)任務(wù)時(shí)時(shí),這這個(gè)任務(wù)總總是是被放在這這個(gè)個(gè)鏈表的起起始始處。換句句話話說(shuō),OSTCBBList總是指向最最后建立的的那那個(gè)任務(wù)。因因因?yàn)閮蓚€(gè)任任務(wù)務(wù)都處于就就緒緒態(tài),在就就緒緒任務(wù)表OSRdyyTbl[[]]中的相應(yīng)位位也要設(shè)為1。μC/OS-III多多任務(wù)的啟啟動(dòng)動(dòng)是用戶通通過(guò)過(guò)調(diào)用OSStaart()實(shí)現(xiàn)的,在在啟動(dòng)之前前,用用戶至少要要建建立一個(gè)應(yīng)應(yīng)用用任務(wù)。OSStaart()是從任務(wù)就就緒表中構(gòu)構(gòu)造造出優(yōu)先級(jí)級(jí)最最高的任務(wù)務(wù),然然后調(diào)用高高優(yōu)優(yōu)先級(jí)就緒緒任任務(wù)啟動(dòng)函函數(shù)數(shù)OSStaartHiigghRdyy((),這是一個(gè)個(gè)跟處理器器相相關(guān)的函數(shù)數(shù),可可以用匯編語(yǔ)語(yǔ)言來(lái)實(shí)現(xiàn)現(xiàn)。實(shí)實(shí)質(zhì)上,函函數(shù)數(shù)OSStaartHiigghRdyy(()是將任務(wù)棧棧中保存的的值值彈回CPU寄存器,然然后再跳轉(zhuǎn)轉(zhuǎn),具具體實(shí)現(xiàn)過(guò)過(guò)程程在移植部部分分詳細(xì)描述述。如如果不使用用信信號(hào)量、消消息息、隊(duì)列,也也也不使用內(nèi)內(nèi)存存分配,系系統(tǒng)統(tǒng)初始化的的過(guò)過(guò)程可用圖2-4表示:開(kāi)始開(kāi)始根據(jù)任務(wù)的數(shù)量創(chuàng)建任務(wù)控制塊初始化OSINIT()根據(jù)任務(wù)優(yōu)先級(jí)數(shù)量創(chuàng)建任務(wù)就緒表及任務(wù)優(yōu)先級(jí)表創(chuàng)建任務(wù)對(duì)任務(wù)堆棧區(qū)進(jìn)行初始化OSTaskStkInit()啟動(dòng)多任務(wù)最高優(yōu)先級(jí)的任務(wù)開(kāi)始運(yùn)行,在此任務(wù)中啟動(dòng)定時(shí)器設(shè)置時(shí)鐘中斷向量圖2-4μC/OS-II的啟動(dòng)過(guò)程2.2任務(wù)務(wù)的的管理本節(jié)內(nèi)容包括如如何何在用戶的的應(yīng)應(yīng)用程序中中建建立任務(wù)、刪刪刪除任務(wù)、掛掛掛起任務(wù)和和恢恢復(fù)任務(wù),介介介紹任務(wù)堆堆棧棧[1][44][5]]。該該節(jié)所提的的代代碼主要集集中中在OS_TAASK.C文件中。任務(wù)的創(chuàng)建建與刪除除首先,用戶必須須先先建立任務(wù)務(wù),才才能讓?duì)藽/OS--II來(lái)管理理用戶的任任務(wù)務(wù)。我們可可以以通過(guò)傳遞遞任任務(wù)函數(shù)地地址址和其他參參數(shù)數(shù)到以下兩兩個(gè)個(gè)函數(shù)之一一來(lái)來(lái)建立任務(wù)務(wù)::OSTasskCreeaate()或OSTasskCreeaateExxtt(),其中OSTasskCreeaateExxtt()是擴(kuò)展版本本,提供了了一一些附加功功能能。任務(wù)可可以以在任務(wù)調(diào)調(diào)度度之前建立立,也也可以在其其他他任務(wù)的執(zhí)執(zhí)行行過(guò)程中建建立立。但是在在開(kāi)開(kāi)始多任務(wù)務(wù)調(diào)調(diào)度前,用用戶戶必須建立立至至少一個(gè)任任務(wù)務(wù)。任務(wù)不不能能由中斷服服務(wù)務(wù)程序來(lái)建建立立。OSTaskCCrreatee(()一開(kāi)始先檢檢測(cè)分配給給任任務(wù)的優(yōu)先先級(jí)級(jí)是否有效效,接接著要確保保在在規(guī)定的優(yōu)優(yōu)先先級(jí)上還沒(méi)沒(méi)有有建立任務(wù)務(wù),然然后保留這這個(gè)個(gè)任務(wù)的優(yōu)優(yōu)先先級(jí)。再接接著著OSTaaskCrreeate(())調(diào)用OSTaaskSttkkInitt(()建立任務(wù)的的堆棧。該該函函數(shù)也是一一個(gè)個(gè)與處理器器的的硬件體系系有有關(guān)的函數(shù)數(shù),具具體放在OS_CCPU_CC..C中實(shí)現(xiàn)。一旦OSTaaskSStkInniit()函數(shù)完成建建立堆棧的的任任務(wù)后,OSTasskCreeaate()就會(huì)調(diào)用OSTCBBInitt((),從空閑OS_TTCB池中獲得并并初始化一一個(gè)個(gè)OS_TTCB,如果OS_TTCB池中有空閑閑的OS_TTCB,它就被初初始化,如如果果沒(méi)有,任任務(wù)務(wù)創(chuàng)建就會(huì)會(huì)失失敗。成功功之之后將OS_TCCB插入到已建建立任務(wù)的OS_TTCB雙向鏈表中中,最后該該任任務(wù)處于就就緒緒態(tài)了。并并且且OSTCCBIniitt()會(huì)返回一個(gè)個(gè)代碼表明OS_TCCB已被分配和和初始化。具具具體創(chuàng)建任任務(wù)務(wù)的過(guò)程如如圖圖2-5:開(kāi)始開(kāi)始建立任務(wù)的堆棧獲得并初始化任務(wù)控制塊結(jié)束報(bào)錯(cuò)調(diào)動(dòng)任務(wù)調(diào)度函數(shù)進(jìn)行多任務(wù)的調(diào)度出錯(cuò)返回運(yùn)行的任務(wù)優(yōu)先級(jí)其他任務(wù)報(bào)錯(cuò)報(bào)錯(cuò)優(yōu)先級(jí)不成功多任務(wù)運(yùn)行有效已用YesYesnono最高no圖2-5創(chuàng)建任務(wù)的過(guò)程優(yōu)先級(jí)效?nnono刪除任務(wù)是將任任務(wù)務(wù)返回到休休眠眠態(tài),并不不是是把任務(wù)的的代代碼刪除了了,只只是任務(wù)不不再再被μC/OS--II調(diào)用。通過(guò)過(guò)調(diào)用OSTaaskDeell()可以完成刪刪除任務(wù)的的功功能。任務(wù)的堆棧棧每個(gè)任務(wù)都有自自己己的堆??湛臻g間。堆棧必必須須聲明為OS_SSTK類型,并且且由連續(xù)的的內(nèi)內(nèi)存空間組組成成。用戶可可以以靜態(tài)分配配堆堆??臻g(在編譯時(shí)分分配),也可以動(dòng)動(dòng)態(tài)的分配配堆堆??臻g(在運(yùn)行時(shí)分分配)。靜態(tài)堆棧棧聲明如:statiicOSS__STKTTaskSSttack[[sstackk__sizee]]。動(dòng)態(tài)分配配可以使用C編譯器提供供的mallloc()函數(shù)來(lái)分配配,不過(guò)要要注注意這樣可可能能會(huì)使內(nèi)存存堆堆中出現(xiàn)大大量量的內(nèi)存碎碎片片,導(dǎo)致沒(méi)沒(méi)有有足夠大的的連連續(xù)空間可可用用作任務(wù)堆堆棧棧。μC/OS-III支持的處理理器的堆棧棧既既可以從上上((高地址)往下(低地址)遞減也可以以從下往上上遞遞增。我們們?cè)谠谡{(diào)用OSTaaskCrreeate(())時(shí)必須知道道堆棧的增增長(zhǎng)長(zhǎng)方向,因因?yàn)闉橐獋鞫褩5牡臈m斨羔樶樈o給函數(shù)。如如果果堆棧是遞遞增增型的,棧棧頂頂?shù)刂肥?TaskkStacckk[0],如果堆棧棧是遞減型型的的,棧頂?shù)氐刂分穭t為&TaskkStacckk[staacck_siizze-1]。任務(wù)所需需的堆棧容容量量是由應(yīng)用用程程序指定的的。用用戶在指定定堆堆棧大小的的時(shí)時(shí)候必須考考慮慮用戶任務(wù)務(wù)所所調(diào)用的所所有有函數(shù)的嵌嵌套套情況。另另外外,堆棧至至少少要能存儲(chǔ)儲(chǔ)所所有CPU寄存器。2.3任務(wù)務(wù)之之間的通信信在操作系統(tǒng)中,有有多種方法可可以保護(hù)任務(wù)務(wù)之間的共享享數(shù)據(jù)和提供供任務(wù)之間的的通信。在μμC/OS--II中,我我們己經(jīng)提到到了兩種方法法:一種是利用用宏OS_ENNTER_CRITIICAL())和OS_EXXIT_CRRITICAAL()來(lái)關(guān)閉中斷斷和打開(kāi)中斷斷。當(dāng)兩個(gè)任任務(wù)或者一個(gè)個(gè)任務(wù)和一個(gè)個(gè)中斷服務(wù)程程序共享某些些數(shù)據(jù)時(shí),可可以采用這種種方法;另一種是利利用函數(shù)OSSchhedLocck()和OSSchhedUnllock())對(duì)任務(wù)調(diào)度度函數(shù)上鎖和和開(kāi)鎖。本節(jié)節(jié)將介紹另外外3種用于數(shù)據(jù)據(jù)共享和任務(wù)務(wù)通信的方法法:信號(hào)量、郵郵箱和消息隊(duì)隊(duì)列[1][[8]。μC/OS--II中將這3個(gè)服務(wù)用事事件控制塊統(tǒng)統(tǒng)一起來(lái)。事件控制塊塊一個(gè)任務(wù)或者中中斷斷服務(wù)程序序可可以通過(guò)ECB來(lái)向另外的的任務(wù)發(fā)信信號(hào)號(hào)。這里,所所所有的信號(hào)號(hào)都都被看成是是事事件(Evennt)。一個(gè)任務(wù)務(wù)還可以等等待待另一個(gè)任任務(wù)務(wù)或中斷服服務(wù)務(wù)程序給它它發(fā)發(fā)送信號(hào),不不不過(guò)只有任任務(wù)務(wù)可以等待待事事件的發(fā)生生,中中斷服務(wù)程程序序是不可以以的的。對(duì)于等等待待狀態(tài)的任任務(wù)務(wù),還可以以給給它指定一一個(gè)個(gè)最長(zhǎng)等待待時(shí)時(shí)間,以此此來(lái)來(lái)防止因?yàn)闉榈鹊却氖录](méi)沒(méi)有發(fā)生而而無(wú)無(wú)限期等下下去去。多個(gè)任任務(wù)務(wù)可以同時(shí)時(shí)等等待一個(gè)事事件件的發(fā)生,這這這種情況下下,當(dāng)當(dāng)事件發(fā)生生時(shí)時(shí),所有等等待待任務(wù)中優(yōu)優(yōu)先先級(jí)最高的的任任務(wù)得到該該事事件并進(jìn)入入就就緒態(tài)。以以上上所說(shuō)的事事件件可以是信號(hào)號(hào)量、郵箱箱或或者消息隊(duì)隊(duì)列列。信號(hào)量在多任務(wù)內(nèi)核中中普普遍使用信信號(hào)號(hào)量用于::((1)控制共享資資源的使用用權(quán)權(quán)(滿足互斥條條件)。(2)標(biāo)志某事件件的發(fā)生。(((3)使兩個(gè)任務(wù)務(wù)的行為同同步步。形象比喻的話信信號(hào)號(hào)量就像是是一一把鑰匙,任任任務(wù)要運(yùn)行行下下去,需先先得得到這把鑰鑰匙匙。如果這這把把鑰匙已被被別別的任務(wù)占占用用,該任務(wù)務(wù)就就只好被掛掛起起,直到鑰鑰匙匙被占用者者釋釋放。只取取兩兩個(gè)值的信信號(hào)號(hào)量稱為二二進(jìn)進(jìn)制型的信信號(hào)號(hào)量,該信信號(hào)號(hào)量只有0或者1兩個(gè)值。計(jì)計(jì)數(shù)器型信信號(hào)號(hào)量可以取0到255或者0到65535等。用于某某些資源可可以以同時(shí)為多多個(gè)個(gè)任務(wù)使用用。μC/OS-III提提供5個(gè)對(duì)信號(hào)量量進(jìn)行操作作的的函數(shù),分分別別是:OSSemmCreaatte()(建立一個(gè)信信號(hào)量),OSSemmPendd(()(等待一個(gè)信信號(hào)量),OSSemmPostt(()(發(fā)出一個(gè)信信號(hào)量),OSSemmAcceeppt()(無(wú)等待的請(qǐng)請(qǐng)求一個(gè)信信號(hào)號(hào)量)和OSSeemQueerry()(查詢一個(gè)信信號(hào)量的當(dāng)當(dāng)前前狀態(tài))。消息郵箱及及消息隊(duì)隊(duì)列郵箱是μC/OOSS-II中另另一種通信信機(jī)機(jī)制,它可可以以使一個(gè)任任務(wù)務(wù)或者中斷斷服服務(wù)程序向向另另一個(gè)任務(wù)務(wù)發(fā)發(fā)送一個(gè)指指針針型的變量量[[9]。該指指針指向一一個(gè)個(gè)包含了特特定定“消息”的數(shù)據(jù)結(jié)構(gòu)構(gòu)。為了在在μμC/OS--II中使用用郵箱,必必須須將開(kāi)關(guān)量OS_MBBOX_EENN置為1。同樣μC/OS--II也提供供了5種對(duì)郵箱的的操作:OSSMboxxCCreattee(),OSMMboxPPeend(),OSMMboxPPoost(),OSSMboxxAAccepptt(),OSSMboxxQQueryy(()。OSMbooxCreeaate()用來(lái)建立一一個(gè)郵箱,使使使用郵箱之之前前必須先建建立立郵箱。OSMbooxPenndd()是等待一個(gè)個(gè)郵箱中的的消消息;另三三個(gè)個(gè)函數(shù)OSMbooxPosstt(),OOSMbooxxAcceeppt(),,OSMbbooxQueerry()的作用跟信信號(hào)量相應(yīng)應(yīng)的的三個(gè)函數(shù)數(shù)的的作用類似似,操操作原理也也一一樣,固省省略略。消息隊(duì)列是μCC//OS-IIII中的又一種種通信機(jī)制制,它它可以使一一個(gè)個(gè)任務(wù)或者者中中斷服務(wù)程程序序向另一個(gè)個(gè)任任務(wù)發(fā)送以以指指針?lè)绞蕉ǘx義的變量。因因因具體的應(yīng)應(yīng)用用有所不同同,每每個(gè)指針指指向向的數(shù)據(jù)結(jié)結(jié)構(gòu)構(gòu)變量也有有所所不同。為為了了使用μC/OS--II的消息息隊(duì)列功能能,需需要將開(kāi)關(guān)關(guān)量量OS_Q__EN設(shè)置為1,且通過(guò)常常數(shù)OS_MAAX_QS來(lái)決定μC/OS--II支持的的最多消息息隊(duì)隊(duì)列數(shù)。第3章TMMS3200LF244007數(shù)字信號(hào)號(hào)處理器的的介介紹TMS320LLFF2407是德州儀器器公司推出出的的定點(diǎn)十六六位位通用數(shù)字字信信號(hào)處理芯芯片片,這個(gè)芯芯片片具有較強(qiáng)強(qiáng)的的控制能力力和和優(yōu)異的性性能能價(jià)格比,廣廣廣泛地用于于工工業(yè)應(yīng)用,消消消費(fèi)產(chǎn)品等等領(lǐng)領(lǐng)域。它的的運(yùn)運(yùn)算速度快快,兼兼容性好,并并并且具有豐豐富富的片內(nèi)資資源源,可用于于智智能測(cè)控、電電電機(jī)控制、電電電力電子技技術(shù)術(shù)等各個(gè)領(lǐng)領(lǐng)域域。3.1TMMSS320LLFF24077總總線結(jié)構(gòu)LF2407采采用用程序總線線、數(shù)數(shù)據(jù)總線分分別別獨(dú)立并具具有有多條總線線的的哈佛結(jié)構(gòu)構(gòu)[[10][[111],內(nèi)部部由6條16位總線線構(gòu)成,分分別別是:(1)PAB:程程序地址總總線線,對(duì)程序序存存儲(chǔ)器讀/寫尋址。(2)DRABB:數(shù)據(jù)據(jù)讀地址總總線線,負(fù)責(zé)對(duì)對(duì)數(shù)數(shù)據(jù)存儲(chǔ)器器讀讀尋址。(3)DWABB:數(shù)據(jù)據(jù)寫地址總總線線,負(fù)責(zé)對(duì)對(duì)數(shù)數(shù)據(jù)存儲(chǔ)器器寫寫尋址。(4)PRDBB:程序序讀總線,負(fù)負(fù)負(fù)責(zé)將指令令和和常數(shù)送到到中中央處理單單元元。(5)DRDBB:數(shù)據(jù)據(jù)讀總線,將將將數(shù)據(jù)從數(shù)數(shù)據(jù)據(jù)存儲(chǔ)器傳傳送送到CALU和ARAU。(6)DWEBB:數(shù)據(jù)寫寫總線,負(fù)負(fù)責(zé)責(zé)將指令和和常常數(shù)從中央央處處理單元送送到到存儲(chǔ)器中中。由由于數(shù)據(jù)的的讀讀寫由兩條條獨(dú)獨(dú)立的總線線執(zhí)執(zhí)行,因此此,CPU的讀寫可在在同一周期內(nèi)內(nèi)進(jìn)行。3.2中央央處處理單元TMS320LLFF24077DSP的中央處理理單元(CPU)的內(nèi)部資源源包含如下下幾幾部分:(1) 32位位定標(biāo)移位器器(2)16x166位的乘法器(MUL)(3) 32位位累加器(ACCC)(4) 中央算算術(shù)邏輯單元元元(CALU))(5) 輔助寄寄存器算術(shù)單單單元(ARAU))(6) 狀態(tài)寄寄存器ST00和ST1(7) 程序存存儲(chǔ)器和數(shù)據(jù)據(jù)據(jù)存儲(chǔ)器輸入定標(biāo)部部分一個(gè)32Bitt輸入數(shù)據(jù)定定標(biāo)移位器器能能夠把16BBit存儲(chǔ)儲(chǔ)器裝載到到332Bitt的的中央算術(shù)術(shù)邏邏輯單元中(如圖3-1所示)。對(duì)于數(shù)據(jù)據(jù)的算術(shù)和和邏邏輯運(yùn)算來(lái)來(lái)說(shuō)說(shuō),數(shù)據(jù)的的校校準(zhǔn)很有必必要要。作為程程序序(或數(shù)據(jù))和中央算術(shù)術(shù)邏輯單元元之之間的數(shù)據(jù)據(jù)通通道,輸入入移移位器操作作不不需要額外外開(kāi)開(kāi)銷,下面面介介紹輸入移移位位器的輸入入和和輸出。圖3-1輸輸入定定標(biāo)部分輸入移位器的1155到0位接收程程序存儲(chǔ)器器或或數(shù)據(jù)存儲(chǔ)儲(chǔ)器器的一個(gè)166位輸入數(shù)據(jù)讀總線:該該輸輸入為一個(gè)個(gè)來(lái)來(lái)自數(shù)據(jù)存存儲(chǔ)儲(chǔ)器的數(shù)據(jù)據(jù);;程序讀總線:該該輸輸入為一個(gè)個(gè)指指令操作時(shí)時(shí)給給定的常數(shù)數(shù);;輸出在接收了一一個(gè)個(gè)16位數(shù)據(jù)據(jù)之后,輸輸入入移位器就就將將16位數(shù)據(jù)據(jù)與中央算算術(shù)術(shù)邏輯單元元連連接。輸入入移移位器可以以把把16位數(shù)據(jù)據(jù)左移0-116位,送送入中央算算術(shù)術(shù)邏輯單元元中中。在移位位時(shí)時(shí)低位零,高高高位則按符符號(hào)號(hào)擴(kuò)展位(SXM)的設(shè)置決定定。乘法器部分分LF2407使使用用一個(gè)16××16位的的硬件乘法法器器,它在一一個(gè)個(gè)周期內(nèi)可可以以產(chǎn)生一個(gè)個(gè)帶帶符號(hào)的或或不不帶符號(hào)的的332位乘積積。乘法器器組組成:16位暫存寄寄存存器(TREG),它寄存其其中一個(gè)被被乘乘數(shù)乘法器器,實(shí)實(shí)現(xiàn)TREGG與數(shù)據(jù)存存儲(chǔ)器(或程序存儲(chǔ)儲(chǔ)器)的值相乘。32位的乘積積寄寄存器(PREG),它保存乘乘法器的乘乘積積。乘積移移位位器,在將將結(jié)結(jié)果送到中中央央算術(shù)邏輯輯單單元之前,對(duì)對(duì)對(duì)PREG的值進(jìn)行定定標(biāo)操作。中央算術(shù)邏邏輯單元元(CALU))中央算術(shù)邏輯單單元元的主要組組成成包括中央央算算術(shù)邏輯單單元元,執(zhí)行算算術(shù)術(shù)和邏輯運(yùn)運(yùn)算算32位累加加器,接收收CCALU輸出出結(jié)果,輸輸出出移位器,在在在將累加器器的的高位字或或低低位字的一一個(gè)個(gè)拷貝送入入數(shù)數(shù)據(jù)存儲(chǔ)器器之之前,輸出出移移位器將對(duì)對(duì)該該拷貝進(jìn)行行移移位處理。輔助寄存器器算術(shù)單單元(ARAU)ARAU的主主要要功能是對(duì)對(duì)88個(gè)輔助寄寄存器(AR0-AAR7)執(zhí)行行算術(shù)操作作,該該操作可與與CCALU中中的操作并并行行執(zhí)行。8個(gè)輔助寄存存器提供了了靈靈活多變以以及及功能強(qiáng)大大的的間接尋址址。使使用輔助寄寄存存器中的一一個(gè)個(gè)16位地址址就可以訪訪問(wèn)問(wèn)64K數(shù)據(jù)據(jù)存儲(chǔ)空間間的的任意單元元。狀態(tài)寄存器器ST00和ST1LF2407有有兩兩個(gè)狀態(tài)寄寄存存器ST0和ST1。他們們包含狀態(tài)態(tài)位位和控制位位。這這兩個(gè)寄存存器器可存儲(chǔ)和和恢恢復(fù)機(jī)器狀狀態(tài)態(tài)。LST指令可向STT0和ST1寫,SST指令可以讀讀。此外,可可可以通過(guò)SEETC和CLRC指令設(shè)置和和清除兩個(gè)個(gè)寄寄存器的許許多多獨(dú)立位。圖圖圖3-2為寄存器的的示意圖。圖3-2狀狀態(tài)寄寄存器ST00和ST13.3存儲(chǔ)儲(chǔ)器器結(jié)構(gòu)和I//O空間每個(gè)TMS3220LFF2407器件都有四四種可獨(dú)立立選選擇的空間間::(1) 64KK字的程序存存儲(chǔ)器空間間,存存放要執(zhí)行行的的指令和程程序序執(zhí)行時(shí)使使用用的數(shù)據(jù);;(2)64KK字的局部部數(shù)據(jù)存儲(chǔ)儲(chǔ)器器空間,存存放放指令使用用的的數(shù)據(jù);(3)32KK字的全局局?jǐn)?shù)據(jù)存儲(chǔ)儲(chǔ)器器空間,用用來(lái)來(lái)存放與其其他他處理器共共用用的數(shù)據(jù);;(4)64KK字的I//O空間,用用于與外部部的的設(shè)備接口口和和片內(nèi)外設(shè)設(shè)寄寄存器。片內(nèi)存儲(chǔ)器的優(yōu)優(yōu)點(diǎn)點(diǎn)是速度快快,功功耗小;外外部部存儲(chǔ)器的的優(yōu)優(yōu)點(diǎn)是可以以訪訪問(wèn)更大的的地地址空間。片片片內(nèi)存儲(chǔ)器器的的類型主要要有有以下幾種種::(1) 片內(nèi)雙雙訪問(wèn)存儲(chǔ)器器器,顧名思思義義,每個(gè)機(jī)機(jī)器器周期可以以被被訪問(wèn)兩次次,既既可以配備備為為數(shù)據(jù)存儲(chǔ)儲(chǔ)器器,又可配配置置為程序存存儲(chǔ)儲(chǔ)器;(2) 片內(nèi)單單訪問(wèn)程序///數(shù)據(jù)存儲(chǔ)器器;每個(gè)機(jī)機(jī)器器周期僅能能訪訪問(wèn)一次的的存存儲(chǔ)器,由由于于SARAM能被分配到到程序和數(shù)數(shù)據(jù)據(jù)存儲(chǔ)器空空間間,因此和DARAM相比,可以以更靈活的的進(jìn)進(jìn)行地址分分配配;(3) 掩模型型片內(nèi)ROMM存儲(chǔ)器,出出廠時(shí)已經(jīng)經(jīng)寫寫好,用戶戶只只能讀不能能寫寫;(4) 閃速存存儲(chǔ)器,電可可可擦除和編編程程的非易失失性性存儲(chǔ)器。程序存儲(chǔ)器器程序存儲(chǔ)空間保保存存應(yīng)用程序序代代碼,量表表和和常數(shù)。程程序序存儲(chǔ)空間間地地址范圍共共664K字,片片上的雙存存取取存儲(chǔ)器(DARAMM)B0塊塊可映射到到這這個(gè)空間中中。CNF==1時(shí),B0塊為程序序存儲(chǔ)器,CNF=0時(shí),B0塊為數(shù)據(jù)存存儲(chǔ)器。剩下下的空間可由由片上存儲(chǔ)器器或外部存儲(chǔ)儲(chǔ)器組成。數(shù)據(jù)存儲(chǔ)器器(1)局部數(shù)數(shù)據(jù)存儲(chǔ)器占占占用64K116位字的的地址空間間。每每個(gè)器件都都有有3個(gè)片內(nèi)存存儲(chǔ)器塊B00,B1和B2。B0由CNF位設(shè)設(shè)置。B1和B2塊共有有288字,他他們只映射射到到局部數(shù)據(jù)據(jù)存存儲(chǔ)器。(2)數(shù)據(jù)存存儲(chǔ)器的高端端端32K(88000HH--0FFFFFFH)地址同同時(shí)可映射射為為全局?jǐn)?shù)據(jù)據(jù)存存儲(chǔ)器。全全局局存儲(chǔ)器分分配配寄存器(GREG))決定全局?jǐn)?shù)數(shù)據(jù)存儲(chǔ)器器空空間的大小小。I/O空間LF2407支支持持64K的外外部I/O空間,共共分為三個(gè)個(gè)部部分:0-FFEFHH::可用的I//O空間;FF00-FFF00FH:保留留的I/O空間;FF10-FFFFFFH:片內(nèi)內(nèi)I/O空間間已有定義義的的地址,有有的的保留地址址都都不可寫。第4章CoodeCCompoosse軟件開(kāi)發(fā)平平臺(tái)的簡(jiǎn)介介在應(yīng)用程序的開(kāi)開(kāi)發(fā)發(fā)中,如果果用用匯編語(yǔ)言言編編寫應(yīng)用程程序序后,必須須用用匯編器和和連連接器生成成應(yīng)應(yīng)用系統(tǒng)可可執(zhí)執(zhí)行的文件件,如如果用C語(yǔ)言編寫完完應(yīng)用程序序后后,也必須須用用C編譯器和連連接器生成成應(yīng)應(yīng)用系統(tǒng)的的可可執(zhí)行文件件。為為了提高編編程程效率,TI公司為TMS3220LF220000系列開(kāi)發(fā)了了一套全新新的的集匯編器器、C編譯器、連連接器為一一體體的集成開(kāi)開(kāi)發(fā)發(fā)環(huán)境CCS[133]。它采用圖形接口口,提提供編譯指指令令和參數(shù)修修改改工具,為為非非代碼的產(chǎn)產(chǎn)生生工具集成成了了一個(gè)統(tǒng)一一的的環(huán)境,包包括括了TI公司提供的C源代碼調(diào)試試器和模擬擬器器所有的功功能能,可進(jìn)行行指指令級(jí)的仿仿真真和可視化化的的實(shí)時(shí)數(shù)據(jù)據(jù)分分析,從而而大大大提高了了開(kāi)開(kāi)發(fā)者的工工作作效率。4.1CooddeCoommposee的的安裝配置置當(dāng)安裝好了CCCSS軟件后,在在桌面上會(huì)會(huì)看看到兩個(gè)快快捷捷方式圖標(biāo)標(biāo),分分別對(duì)應(yīng)CCS應(yīng)用程序的的開(kāi)發(fā)環(huán)境(CC’C20000),配置程序(SetuppCC’C20000)。(1) SettupCCCC’C2000用來(lái)對(duì)該編編譯器的運(yùn)運(yùn)行行環(huán)境進(jìn)行行配配置,左鍵鍵雙雙擊后,出出現(xiàn)現(xiàn)如下界面(圖4-1所示):清除系統(tǒng)配置清除系統(tǒng)配置圖4-1配配置窗窗口我校DSP實(shí)驗(yàn)驗(yàn)箱采用用的是ICEETEK--LLF240077,首先,點(diǎn)點(diǎn)擊清除系系統(tǒng)統(tǒng)配置按鈕鈕,即即“ClearrSyssttemCCoonfigguuratiioon”,并確認(rèn)已已清除以前前定定義的配置置;;其次,因?yàn)椴捎糜玫牡氖荱SB型仿真器,固固固在“AvaillableeCConfiiggurattiions”列表中,單單擊“ICETEEK-511000USSBBEmuullatorr”驅(qū)動(dòng),并點(diǎn)點(diǎn)擊“Addttosyysstemcconfiiggurattiion”按鈕,然后后將結(jié)果保保存存并退出。(2) CC’’C20000為程序調(diào)試試仿真環(huán)境境,我我們既可以以將將已有程序序在在該環(huán)境下下調(diào)調(diào)試,也可可以以新建一個(gè)個(gè)工工程項(xiàng)目文文件件來(lái)進(jìn)行調(diào)調(diào)試試;左鍵雙雙擊擊后,出現(xiàn)現(xiàn)如如下的界面(圖4-2所示):圖4-2程程序調(diào)調(diào)試窗口該集成環(huán)境有33部部分組成::標(biāo)標(biāo)題欄、菜菜單單欄和工作作窗窗口區(qū)。此此外外還包括了了一一些快捷鍵鍵,如如文件的打打開(kāi)開(kāi)和保存等等。4.2項(xiàng)目目環(huán)環(huán)境的創(chuàng)建建CCS提供項(xiàng)目目文文件來(lái)管理理應(yīng)應(yīng)用程序。所所所有有關(guān)的的應(yīng)應(yīng)用程序的的信信息保存在在項(xiàng)項(xiàng)目文件中中。項(xiàng)項(xiàng)目文件記記錄錄生成一個(gè)個(gè)目目標(biāo)DSP程序和庫(kù)程程序需要的的所所有文件和和運(yùn)運(yùn)行庫(kù)。它它也也包含了為為編編譯、匯編編和和鏈接目標(biāo)標(biāo)代代碼而配置置的的開(kāi)關(guān)參數(shù)數(shù)。在安裝好CCSS仿仿真調(diào)試軟軟件件之后,在在安安裝目錄下下會(huì)會(huì)出現(xiàn)一個(gè)個(gè)文文件夾tic2xxx。在該文件件夾下有一一個(gè)個(gè)子文件夾myproojectt((我的工程),調(diào)試的工工程就存在在于于這個(gè)文件件夾夾下。在創(chuàng)創(chuàng)建建一個(gè)新工工程程之前,在在mmyproojject文文件夾下新新建建一個(gè)文件件夾夾,然后將將工工程所須.C文件、.ASM文件、.H文件和.CMD文件復(fù)制到到該文件夾夾下下。單擊圖4-2中的Projeect,選擇NEW菜單,將該該工程的名名字字存為ucos。單擊Projeect,選選擇AddFFilessToPPrrojecctt(添加文件到到工程)。將該工程程用到的.C文件、.ASM文件、.H文件和.CMD文件添加到到工程中。4.3編譯譯連連接和調(diào)試試程程序單擊Projeect,選選擇RebuiildAAlll(編譯匯編和和連接所有有的的文件)。若沒(méi)有錯(cuò)錯(cuò)誤,則會(huì)會(huì)生生成一個(gè)名名字字和工程名名相相同的可執(zhí)執(zhí)行行的.out文件。若出出現(xiàn)錯(cuò)誤,則則則系統(tǒng)會(huì)提提示示該錯(cuò)誤的的類類型和位置置,可可根據(jù)該信信息息回到源程程序序中去修改改。如果編譯連接成成功功,須將生生成成的.out文件裝載到到實(shí)驗(yàn)板上上之之后才能對(duì)對(duì)程程序進(jìn)行調(diào)調(diào)試試仿真。因因此此點(diǎn)擊菜單單欄欄中的File,選擇LoadProggrram(裝載程序),則系統(tǒng)可可將執(zhí)行的的..out文件下載到到實(shí)驗(yàn)板上上。這這時(shí),就可可對(duì)對(duì)文件進(jìn)行行在在線調(diào)試。第5章μCC/OS--II在TMS3220LF224407中的移植過(guò)過(guò)程通過(guò)前幾章的詳詳細(xì)細(xì)講述,本本章章將系統(tǒng)說(shuō)說(shuō)明明將μC/OS--II移植到TMS3220LF224407上的過(guò)程,這這這也是本設(shè)設(shè)計(jì)計(jì)最終的目目的的。所謂移移植植,就是指指使使一個(gè)實(shí)時(shí)時(shí)操操
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療健康保險(xiǎn)產(chǎn)品設(shè)計(jì)
- 2026年衡水職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題有答案解析
- 2026年河北軟件職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題帶答案解析
- 醫(yī)療保險(xiǎn)風(fēng)險(xiǎn)管理
- 呼吸系統(tǒng)疾病治療與康復(fù)技術(shù)
- 2026年河南林業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題有答案解析
- 醫(yī)院保衛(wèi)人員禮儀與安全管理實(shí)踐
- 小學(xué)入學(xué)拼音題庫(kù)及答案
- 腫瘤護(hù)理新進(jìn)展解讀
- 人工智能在兒科疾病診斷中的應(yīng)用
- 個(gè)人投資收款收據(jù)
- 太陽(yáng)能路燈可行性研究報(bào)告
- 華為在歐洲市場(chǎng)分析報(bào)告
- 中國(guó)工藝美術(shù)館招聘筆試試卷2021
- 申論范文寶典
- DB32T 3695-2019房屋面積測(cè)算技術(shù)規(guī)程
- 貴州省納雍縣水東鄉(xiāng)水東鉬鎳礦采礦權(quán)評(píng)估報(bào)告
- GB 8270-2014食品安全國(guó)家標(biāo)準(zhǔn)食品添加劑甜菊糖苷
- 易制毒化學(xué)品日常管理有關(guān)問(wèn)題權(quán)威解釋和答疑
- 湖北省高等教育自學(xué)考試
- 企業(yè)三級(jí)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定表(新版)
評(píng)論
0/150
提交評(píng)論