嵌入式系統(tǒng)復(fù)習(xí)資料_第1頁
嵌入式系統(tǒng)復(fù)習(xí)資料_第2頁
嵌入式系統(tǒng)復(fù)習(xí)資料_第3頁
嵌入式系統(tǒng)復(fù)習(xí)資料_第4頁
嵌入式系統(tǒng)復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式系統(tǒng)復(fù)習(xí)提綱第一章什么是嵌入式系統(tǒng)?IEEE(國際電氣和電子工程師協(xié)會)的定義是什么?普通定義是什么?根據(jù)IEEE(國際電氣和電子工程師協(xié)會)的定義:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置普通定義:“以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、功效、可靠性、成本、體積、功耗嚴格規(guī)定的專用計算機系統(tǒng)?!睆V義上講,但凡帶有微解決器的專用軟硬件系統(tǒng)都可稱為嵌入式系統(tǒng)。從狹義上講,我們更加強調(diào)那些使用嵌入式微解決器構(gòu)成獨立系統(tǒng),含有自己操作系統(tǒng),含有特定功效,用于特定場合的嵌入式系統(tǒng)。這里所謂的嵌入式系統(tǒng)是指狹義上的嵌入式系統(tǒng)。嵌入式系統(tǒng)有哪些重要的特性?(1)系統(tǒng)內(nèi)核小由于嵌入式系統(tǒng)普通是應(yīng)用于小型電子裝置的,系統(tǒng)資源相對有限,因此內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小得多。例如ENEA公司的OSE分布式系統(tǒng),內(nèi)核只有5K,而Windows的內(nèi)核則要大得多。(2)專用性強嵌入式系統(tǒng)的個性化很強,其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,普通要針對硬件進行系統(tǒng)的移植。即使在同一品牌、同一系列的產(chǎn)品中也需要根據(jù)系統(tǒng)硬件的變化和增減不停進行修改。同時針對不同的任務(wù),往往需要對系統(tǒng)進行較大更改,程序的編譯下載要和系統(tǒng)相結(jié)合,這種修改和通用軟件的“升級”是完全不同的概念。(3)系統(tǒng)精簡嵌入式系統(tǒng)普通沒有系統(tǒng)軟件和應(yīng)用軟件的明顯分辨,不規(guī)定其功效設(shè)計及實現(xiàn)上過于復(fù)雜,這樣首先利于控制系統(tǒng)成本,同時也利于實現(xiàn)系統(tǒng)安全。(4)高實時性O(shè)S這是嵌入式軟件的基本規(guī)定,并且軟件規(guī)定固態(tài)存儲,以提高速度。軟件代碼規(guī)定高質(zhì)量和高可靠性、實時性。實時系統(tǒng)的定義是什么?答:實時系統(tǒng)的對的性依賴于運行成果的邏輯對的性和運行成果產(chǎn)生的時間對的性,即實時系統(tǒng)必須在規(guī)定的時間范疇內(nèi)對的地響應(yīng)外部物理過程的變化。4,在典型的嵌入式系統(tǒng)構(gòu)成中,能夠分為哪四層?每一層具體是普通包含哪些單元?中間層BSP有哪些基本功效?答:硬件層,中間層,軟件層,功效層中間層BSP功效之一:硬件初始化片級初始化:重要完畢CPU的初始化,把CPU從上電時的缺省狀態(tài)逐步設(shè)立成為系統(tǒng)所規(guī)定的工作狀態(tài)。板級初始化:完畢CPU以外的其它硬件設(shè)備的初始化。除此之外,還要設(shè)立某些軟件的數(shù)據(jù)構(gòu)造和參數(shù),為隨即的系統(tǒng)級初始化和應(yīng)用程序的運行建立硬件和軟件環(huán)境。系統(tǒng)級初始化:這是一種以軟件初始化為主的過程,重要進行操作系統(tǒng)初始化。BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進行余下的初始化操作。涉及加載和初始化與硬件無關(guān)的設(shè)備驅(qū)動程序,建立系統(tǒng)內(nèi)存區(qū),加載并初始化其它系統(tǒng)軟件模塊,例如網(wǎng)絡(luò)系統(tǒng)、文獻系統(tǒng)等;最后,操作系統(tǒng)創(chuàng)立應(yīng)用程序環(huán)境并將控制轉(zhuǎn)交給應(yīng)用程序的入口中間層BSP功效之二:盡管BSP中包含硬件有關(guān)的設(shè)備驅(qū)動程序,但是這些設(shè)備驅(qū)動程序普通不直接由BSP使用,而是在系統(tǒng)初始化過程中由BSP把它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,并在隨即的應(yīng)用中由通用的設(shè)備驅(qū)動程序調(diào)用,實現(xiàn)對硬件設(shè)備的操作。5.嵌入式解決器能夠分為幾大類?每一類代表的器件有哪些?第二章1,嵌入式硬件系統(tǒng)的基本構(gòu)造包含那些部分?(嵌入式微解決器、存儲器、和輸入輸出)嵌入式解決器的三大部分是什么?(控制單元、算術(shù)邏輯單元和寄存器)2,什么是馮.諾依曼體系構(gòu)造?什么是哈佛體系構(gòu)造?各有哪些代表性的解決器?3復(fù)雜指令集計算機(cisc)和精簡指令集計算機(risc)各有什么特點?類別CISCRISC指令系統(tǒng)指令數(shù)量諸多較少,普通少于100執(zhí)行時間有些指令執(zhí)行時間很長,如整塊的存儲器內(nèi)容拷貝;或?qū)⒍鄠€寄存器的內(nèi)容拷貝到存貯器沒有較長執(zhí)行時間的指令編碼長度編碼長度可變,1-15字節(jié)編碼長度固定,普通為4個字節(jié)尋址方式尋址方式多樣簡樸尋址操作能夠?qū)Υ鎯ζ骱图拇嫫鬟M行算術(shù)和邏輯操作只能對寄存器對行算術(shù)和邏輯操作,Load/Store體系構(gòu)造編譯難以用優(yōu)化編譯器生成高效的目的代碼程序采用優(yōu)化編譯技術(shù),生成高效的目的代碼程序4.在計算機體系構(gòu)造中,什么是馮氏構(gòu)造體系、哈氏構(gòu)造體系?馮·諾伊曼體系構(gòu)造也叫普林斯頓構(gòu)造,它的最大特性是什么?哈佛構(gòu)造,它的最大特性是什么?5.什么是CISC、RISC體系?其各自優(yōu)、缺點以及特點是什么?在指令數(shù)目上,CISC與RISC比較,哪種構(gòu)造的指令數(shù)目多些?屬于CISC的代表性微解決器有哪些?屬于RISC的代表性解決器有哪些?ARM7TDMI屬于哪種體系?6.對于多字節(jié)類型的數(shù)據(jù),在存儲器上有兩種存儲方式,分別是小端字節(jié)次序方式和大端字節(jié)次序方式,例如字符串?dāng)?shù)據(jù)“UNIX”的ASCII碼數(shù)據(jù){0x55,0x4E,0x49,0x58}在16位字長的微解決器上,以小端字節(jié)次序方式存儲下來,取出時該微解決器變成大端字節(jié)次序方式,那么取出的字符串是什么,數(shù)據(jù)怎么表達?4,在無操作系統(tǒng)的嵌入式軟件有哪幾個實現(xiàn)方式?循環(huán)輪詢系統(tǒng),事件驅(qū)動系統(tǒng)(前后臺)5.按軟件構(gòu)造分類,操作系統(tǒng)體系構(gòu)造能夠分為哪幾個不同的構(gòu)造?(單體構(gòu)造如嵌入式Linux,分層構(gòu)造如MS-DOS和微內(nèi)核構(gòu)造如OS-9)每一種構(gòu)造的代表性實例是什么?微內(nèi)核構(gòu)造下的軟件體系構(gòu)造如何?闡明它的特點。(操作系統(tǒng)內(nèi)核只包含最少的功效,如存儲管理和進程管理;其它的操作系統(tǒng)組件以中間件的形式存在于內(nèi)核之外;設(shè)備驅(qū)動程序完全從內(nèi)核中剝離,獨立成為一層;易于擴展、調(diào)試方便)6.什么是輪詢系統(tǒng)?什么是前后臺系統(tǒng)(事件驅(qū)動系統(tǒng))?循環(huán)輪詢系統(tǒng):(PollingLoop)最簡樸的軟件構(gòu)造,程序依次檢查系統(tǒng)的每個輸入條件,一旦條件成立就進行對應(yīng)的解決事件驅(qū)動系統(tǒng):(Event-Drivensystem)事件驅(qū)動系統(tǒng)是能對外部事件直接響應(yīng)的系統(tǒng)。它涉及前后臺、實時多任務(wù)、多解決器等,是嵌入式實時系統(tǒng)的重要形式7.多任務(wù)系統(tǒng)中,什么是占先式內(nèi)核?什么是非占先內(nèi)核?7.什么是設(shè)備驅(qū)動程序?設(shè)備驅(qū)動程序的重要功效有那些?直接與硬件打交道、對硬件進行控制和管理的軟件。嵌入式硬件設(shè)備本身無法工作,需要軟件來驅(qū)動,如初始化、控制、數(shù)據(jù)讀寫等8.嵌入式軟件的目的有哪些?要優(yōu)化哪些資源的使用?答:函數(shù)必須對的;源代碼簡潔、可讀性好、可維護;實時性規(guī)定較高的代碼能夠運行得足夠快;目的代碼小且高效??傊?,要優(yōu)化對下列三種資源的使用:執(zhí)行時間;存儲空間;開發(fā)/維護時間。 9.函數(shù)的調(diào)用過程是如何的?系統(tǒng)運行時,內(nèi)存分布狀況如何?不同的變量的存儲和作用域如何區(qū)別? 當(dāng)一種函數(shù)被調(diào)用時:在內(nèi)存的棧空間當(dāng)中為其分派一種棧幀,用來寄存該函數(shù)的形參和局部變量;把實參變量的值復(fù)制到對應(yīng)的形參變量;控制轉(zhuǎn)移到該函數(shù)的起始位置;該函數(shù)開始執(zhí)行;控制流和返回值返回到函數(shù)調(diào)用點。10。什么是可重入函數(shù)?能夠被一種以上的任務(wù)調(diào)用,而不必緊張數(shù)據(jù)的破壞。可重入型函數(shù)任何時候都能夠被中斷,一段時間后來又能夠運行,而對應(yīng)數(shù)據(jù)不會丟失??芍厝胄秃瘮?shù)只使用局部變量,即變量保存在CPU寄存器或棧中12.什么是資源?(程序運行時可使用的軟、硬件環(huán)境統(tǒng)稱為資源)什么是共享資源?(能夠被一種以上任務(wù)使用的資源叫做共享資源)什么是互斥?(為了避免數(shù)據(jù)被破壞,每個任務(wù)在與共享資源打交道時,必須獨占該資源,這叫做互斥)13.什么是進程?進程應(yīng)當(dāng)涉及哪些東西?一種進程應(yīng)當(dāng)涉及:程序的代碼;程序的數(shù)據(jù);PC中的值,用來批示下一條將運行的指令;一組通用的寄存器的現(xiàn)在值,堆、棧;一組系統(tǒng)資源(如打開的文獻)總之,進程包含了正在運行的一種程序的全部狀態(tài)信息。14.什么是任務(wù)?(在許多嵌入式操作系統(tǒng)當(dāng)中,普通把能夠獨立運行的實體稱為“任務(wù))任務(wù)切換是如何的?(當(dāng)多任務(wù)內(nèi)核決定運行另外的任務(wù)時,它保存正在運行任務(wù)的現(xiàn)在狀態(tài),即CPU寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務(wù)自已的棧區(qū)之中。 入棧工作完畢后來,就把下一種將要運行的任務(wù)的現(xiàn)在狀態(tài)從任務(wù)的棧中重新裝入CPU的寄予存器,并開始下一種任務(wù)的運行。這個過程就稱為任務(wù)切換)任務(wù)有哪三種基本狀態(tài)?就緒,執(zhí)行,阻塞15.描述任務(wù)的數(shù)據(jù)構(gòu)造是什么?(描述任務(wù)的數(shù)據(jù)構(gòu)造:任務(wù)控制塊)包含哪些內(nèi)容?(任務(wù)ID、任務(wù)的狀態(tài)、任務(wù)的優(yōu)先級;CPU上下文信息:通用寄存器的值、PC寄存器的值、程序狀態(tài)字、棧指針的值;如果在該OS中,任務(wù)描述的是進程,則還應(yīng)涉及其它的某些內(nèi)容,如段表地址、頁表地址等存儲管理方面的信息;根目錄、文獻描述字等文獻管理方面的信息。)17.任務(wù)在那些時間能夠調(diào)度?當(dāng)一種新的任務(wù)被創(chuàng)立時,是執(zhí)行新任務(wù)還是繼續(xù)執(zhí)行父任務(wù)?當(dāng)一種任務(wù)運行完畢時;當(dāng)一種任務(wù)由于I/O、信號量或其它的某個因素被阻塞時;當(dāng)一種I/O中斷發(fā)生時,表明某個I/O操作已經(jīng)完畢,而等待該I/O操作的任務(wù)轉(zhuǎn)入就緒狀態(tài);在分時系統(tǒng)中,當(dāng)一種時鐘中斷發(fā)生時。18.嵌入式系統(tǒng)任務(wù)調(diào)度算法的評價指標有哪些?響應(yīng)時間(responsetime):調(diào)度器為一種就緒任務(wù)進行上下文切換的時間,以及任務(wù)在就緒隊列中檔待的時間;周轉(zhuǎn)時間(turnaroundtime):一種任務(wù)從提交到完畢所經(jīng)歷的時間;調(diào)度開銷(overhead):調(diào)度算法在執(zhí)行時所需要的時間和空間開銷;公平(fairness):大致相稱的兩個進程所得到的CPU時間也應(yīng)是大致相似的,避免饑餓(starvation);均衡:盡量使整個系統(tǒng)的各部分(CPU、I/O)都忙起來,提高系統(tǒng)資源的使用效率;吞吐量(Throughput):單位時間內(nèi)完畢的任務(wù)數(shù)。19.什么是優(yōu)先級調(diào)度算法?(優(yōu)先級算法(PriorityScheduling):給每個任務(wù)設(shè)立一種優(yōu)先級,然后在全部就緒任務(wù)中選擇優(yōu)先級最高的那個任務(wù)去運行)任務(wù)優(yōu)先級有哪兩種擬定方式?(靜態(tài)和動態(tài)兩種)20.大多數(shù)RTOS調(diào)度器都采用基于優(yōu)先級的可搶占調(diào)度算法,但在具體實現(xiàn)上要考慮哪些問題:(如何設(shè)定各個任務(wù)的優(yōu)先級?優(yōu)先級是靜態(tài)設(shè)立的還是動態(tài)可變的?算法的性能如何,能否滿足實時規(guī)定?)21.任務(wù)間通信能夠有哪幾個方式?共享內(nèi)存(sharedmemory);消息傳遞(messagepassing);管道(pipe);信號(signal)。22.什么是代碼的臨界區(qū)?什么叫臨界資源?對共享內(nèi)存或共享文獻的訪問,可能會造成競爭條件的出現(xiàn)。我們把完畢這類事情的那段代碼稱為“臨界區(qū)”(CriticalRegion),把需要互斥訪問的共享資源稱為“臨界資源”。23有哪幾個種辦法,使得任何兩個任務(wù)都不會同時出現(xiàn)在臨界區(qū)中,就能夠避免競爭條件的出現(xiàn)?1當(dāng)一種任務(wù)進入臨界區(qū)后,關(guān)閉全部的中斷;當(dāng)它退出臨界區(qū)時,再打開中斷。2能夠采用多個基于繁忙等待(busywaiting)的方略,基本思路是:當(dāng)一種任務(wù)想要進入它的臨界區(qū)時,首先檢查一下與否允許它進入,若允許,就直接進入了;若不允許,就在那里循環(huán)地等待,始終等到允許它進入。24.什么是信號量?什么是原子操作?什么是P原語?什么是V原語?1965年由出名的荷蘭計算機科學(xué)家Dijkstra提出,其基本思路是用一種新的變量類型(semaphore)來統(tǒng)計現(xiàn)在可用資源的數(shù)量。有兩種實現(xiàn)方式:1)semaphore的取值必須不不大于或等于0。0表達現(xiàn)在已沒有空閑資源,而正數(shù)表達現(xiàn)在空閑資源的數(shù)量;2)semaphore的取值可正可負,負數(shù)的絕對值表達正在等待進入臨界區(qū)的任務(wù)個數(shù)。信號量是由操作系統(tǒng)來維護的,任務(wù)只能通過初始化和兩個原則原語(P、V原語)來訪問。初始化可指定一種非負整數(shù),即空閑資源總數(shù)。P、V原語作為操作系統(tǒng)內(nèi)核代碼的一部分,是一種不可分割的原子操作(atomicaction),在其運行時,不會被時鐘中斷所打斷P原語:P是荷蘭語Proberen(測試)的首字母。申請一種空閑資源(把信號量減1),若成功,則退出;若失敗,則該任務(wù)被阻塞;V原語:V是荷蘭語Verhogen(增加)的首字母。釋放一種被占用的資源(把信號量加1),如果發(fā)現(xiàn)有被阻塞的任務(wù),則選擇一種喚醒之。25.如何用信號量實現(xiàn)互斥?如何用信號量實現(xiàn)同時?26.IO設(shè)備按數(shù)據(jù)組織分類涉及哪兩種類型?塊設(shè)備:以數(shù)據(jù)塊來作為信息的存儲和傳輸單位,每個數(shù)據(jù)塊都有一種地址,如磁盤;字符設(shè)備:以字符來作為信息的存儲和傳輸單位,如打印機。27.CPU如何與設(shè)備控制器當(dāng)中的寄存器以及數(shù)據(jù)緩沖區(qū)有哪三種編址方式?采用哪三種辦法實現(xiàn)IO的輸入輸出?I/O獨立編址;內(nèi)存映像編址;混合編址。程序循環(huán)檢測方式(ProgrammedI/O);中斷驅(qū)動方式(Interrupt-drivenI/O);直接內(nèi)存訪問方式(DMA,DirectMemoryAccess);第三章ARM解決器體系構(gòu)造與指令集1.32位嵌入式微解決器的重要評價指標有哪些?功耗。普通的嵌入式微解決器都有三種運行模式:運行模式(operational);待機模式(standbyorpowerdown);停機模式(andclock-off)。功耗的評測指標是MIPS/W;代碼存儲密度。傳統(tǒng)的CISC指令集計算機含有較好的代碼存儲密度。而RISC指令集計算機由于規(guī)定指令編碼長度固定,即使能夠簡化和加速指令譯碼過程,但為了實現(xiàn)與CISC指令集計算機相似的作業(yè),往往需要更多的指令來完畢,從而增加了代碼長度集成度。 嵌入式微解決器普通都為專用市場設(shè)計的,需要較高的集成度。但把全部的外圍設(shè)備都集成到一種芯片上也不是一種好的解決方案。這是由于高集成度使芯片變得復(fù)雜,芯片引腳變密,增加了系統(tǒng)設(shè)計和測試的復(fù)雜性。因此,集成外圍設(shè)備時必須要考慮簡化系統(tǒng)設(shè)計,并縮短整個系統(tǒng)的開發(fā)周期。多媒體加速。 為實現(xiàn)多媒體加速功效,嵌入式微解決器的設(shè)計者在傳統(tǒng)的微解決器指令集的基礎(chǔ)上增加JPEG和MPEG解壓縮的離散余弦變換指令。尚有某些半導(dǎo)體廠商針對智能手機和移動通訊市場的需求,將RISC微解決器和DSP集成在一種芯片上,如TI的OMAP。2.ARM7TDMI的核心部件有幾個?分別是什么?3.ARM解決器能夠執(zhí)行兩套指令系統(tǒng),分別為ARM態(tài)和Thumb態(tài),ARM指令和Thumb指令,指令長度上有什么區(qū)別?(32bits長(ARM狀態(tài))16bits長(Thumb狀態(tài)))系統(tǒng)啟動時,解決器處在哪種狀態(tài)? (ARM態(tài))7.程序計數(shù)器PC總是指向現(xiàn)在指令的下兩條指令的地址,ARM解決器中,PC普通用那個寄存器?(R15)當(dāng)ARM解決器處在ARM態(tài)時,PC為現(xiàn)在指令的地址加8字節(jié),Thumb狀態(tài)時,PC為現(xiàn)在指令的地址加幾個字節(jié)?8.ARM解決器中,R13、R14、R15的功效各是什么,使用它們,細節(jié)上各自有什么特別要注意的地方?9.ARM解決器有哪幾個運行模式?各是什么?特權(quán)模式和顧客模式各涉及哪些運行模式?解決器模式闡明備注顧客(usr)正常程序執(zhí)行模式不能直接切換到其它模式系統(tǒng)(sys)運行操作系統(tǒng)的特權(quán)任務(wù)與顧客模式類似,但含有能夠直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道解決FIQ異常響應(yīng)時進入此模式中斷(irq)用于通用中斷解決IRQ異常響應(yīng)時進入此模式管理(svc)操作系統(tǒng)保護模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式中斷(abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)解決器的軟件仿真未定義指令異常響應(yīng)時進入此模式10.ARM允許多個尋址方式,例如MOVR0,R1,這里源操作數(shù)和目的操作數(shù)使用的都是寄存器尋址,那么指令LDRR0,[R1,#4],這里源操作數(shù)使用的尋址方式是叫什么?那么指令LDRR0,[R1],這里源操作數(shù)使用的尋址方式是什么?,該指令助記符的含義是什么?與LDR相對應(yīng)的指令助記符是什么?11.ARM7使用了幾級流水線,分別是什么?ARM9使用了幾級流水線?分別是什么?ARM7:3級-取指,譯碼,執(zhí)行。ARM9:5級-取指,指令譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫。12.ARM微解決器的寄存器在邏輯上有多少個?分別是什么?13.ARM解決器支持哪幾個異常?按響應(yīng)異常的優(yōu)先級分類,優(yōu)先級最高的是什么?最低的是什么?進入、退出異常時,ARM解決器分別要執(zhí)行什么操作?FIQ,IRQ(InterruptReQuest),未定義指令,預(yù)取中斷,數(shù)據(jù)中斷,復(fù)位,軟件中斷Softwareinterrupt。優(yōu)先級最高:復(fù)位,最低:未定義指令。進入:拷貝CPSR到SPSR_<mode>,設(shè)立適宜的CPSR位,保存返回地址到LR_<mode>,設(shè)立PC為對應(yīng)的異常向量退出:1.(R14)中的值減去偏移量后存入PC,偏移將LR量根據(jù)異常的類型而有所不同;2.將SPSR的值復(fù)制回CPSR;3.清零在入口置位的中斷嚴禁標志。14.在ARM解決器中,把CPSR或SPSR的內(nèi)容讀出到通用寄存器中,有什么特別的規(guī)定?想修改CPSR寄存器的值為0XFF,應(yīng)當(dāng)用什么指令?怎么做?15.閱讀分析代碼,實現(xiàn)兩個寄存器值的內(nèi)容相加。;文獻名:TEST1.S;功效:實現(xiàn)兩個寄存器相加;闡明:使用ARMulate軟件仿真調(diào)試 AREA Example1,CODE,READONLY ;聲明代碼段Example1 ENTRY ;標記程序入口 CODE32 ;聲明32位ARM指令START MOV R0,#0 ;設(shè)立參數(shù) MOV R1,#10LOOP BL ADD_SUB ;調(diào)用子程序ADD_SUB B LOOP ;跳轉(zhuǎn)到LOOPADD_SUB ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END ;文獻結(jié)束16.分析一段指令執(zhí)行前后的變化PREr0=0x00000000,r1=0x00009000,Mem32[0x00009000]=0x01010101Mem32[0x00009004]=0x0202回寫型前變址尋址:LDRr0,[r1,#0x4]!POSTr0=0x0202,r1=0x00009004前變址尋址:LDRr0,[r1,#0x4]POSTr0=0x0202,r1=0x00009000后變址尋址:LDRr0,[r1],#0x4POSTr0=0x01010101,r1=0x0000900417.完畢一種存儲器數(shù)據(jù)塊拷貝目的目的源高地址低地址拷貝存儲地址r9r11r10注:r9——寄存源數(shù)據(jù)的起始地址r10——寄存目的起始地址r11——寄存源結(jié)束地址loopLDMIAr9!,{r0-r7};裝載32字節(jié)并更新r9指針STMIAr10!,{r0-r7};存儲32字節(jié)并更新r10指針CMPr9,r11;與否達成結(jié)束地址BNEloop;不相等跳轉(zhuǎn)第四部分1.μC/OS重要特點有哪些?公開源代碼可移植性(Portable)絕大部分C/OS-II的源碼是用移植性很強的ANSIC寫的。和微解決器硬件有關(guān)的那部分是用匯編語言寫的。匯編語言寫的部分已經(jīng)壓到最低程度,使得C/OS-II便于移植到其它微解決器上。C/OS-II能夠在絕大多數(shù)8位、16位、32位以至64位微解決器、微控制器、數(shù)字信號解決器(DSP)上運行。可固化(ROMable)C/OS-II是為嵌入式應(yīng)用而設(shè)計的,這就意味著,只要讀者有固化手段(C編譯、連接、下載和固化),C/OS-II能夠嵌入到讀者的產(chǎn)品中成為產(chǎn)品的一部分??刹眉簦⊿calable)能夠只使用C/OS-II中應(yīng)用程序需要的那些系統(tǒng)服務(wù)。也就是說某產(chǎn)品能夠只使用極少幾個C/OS-II調(diào)用,而另一種產(chǎn)品則使用了幾乎全部C/OS-II的功效,這樣能夠減少產(chǎn)品中的C/OS-II所需的存儲器空間(RAM和ROM)。這種可剪裁性是靠條件編譯實現(xiàn)的。占先式(Preemptive)多任務(wù)C/OS-II能夠管理64個任務(wù),然而,現(xiàn)在這一版本保存8個給系統(tǒng)。應(yīng)用程序最多能夠有256個任務(wù)可擬定性全部C/OS-II的函數(shù)調(diào)用與服務(wù)的執(zhí)行時間含有可擬定性。任務(wù)棧每個任務(wù)有自己單獨的棧,C/OS-II允許每個任務(wù)有不同的??臻g,方便壓低應(yīng)用程序?qū)AM的需求。系統(tǒng)服務(wù)C/OS-II提供諸多系統(tǒng)服務(wù),例如郵箱、消息隊列、信號量、塊大小固定的內(nèi)存的申請與釋放、時間有關(guān)函數(shù)等。中斷管理中斷能夠使正在執(zhí)行的任務(wù)臨時掛起,如果優(yōu)先級更高的任務(wù)被該中斷喚醒,則高優(yōu)先級的任務(wù)在中斷嵌套全部退出后立刻執(zhí)行,中斷嵌套層數(shù)可達255層。穩(wěn)定性與可靠性2.μC/OS允許管理有多少個任務(wù),顧客能夠有多少個任務(wù)?系統(tǒng)保存的幾個任務(wù)是什么?μC/OS-Ⅱ能夠管理多達64個任務(wù);系統(tǒng)保存了優(yōu)先級為0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRI0-2,OS_LOWEST_PRI0-1以及OS_LOWEST_PRI0這8個任務(wù)以被將來使用,顧客能夠有56個應(yīng)用任務(wù)3.任務(wù)的構(gòu)成涉及那些部分?任務(wù)控制塊----uC/OS-II進行任務(wù)管理用的一種數(shù)據(jù)構(gòu)造。任務(wù)代碼----描述任務(wù)算法的程序編碼。任務(wù)堆棧----任務(wù)的工作現(xiàn)場環(huán)境。4.μC/OS中任務(wù)有五種狀態(tài),互相間轉(zhuǎn)換需要特定的條件,試用狀態(tài)轉(zhuǎn)換圖描述。5.任務(wù)堆棧在系統(tǒng)中有哪些應(yīng)用?任務(wù)堆棧是任務(wù)的三大構(gòu)成部分之一。保存CPU寄存器現(xiàn)場(R0~R12、LR、SPSR等)。本Task的私有數(shù)據(jù)。6.TCB中各組員的作用是什么?7.什么是任務(wù)就緒表?任務(wù)優(yōu)先級和任務(wù)就緒表的映射關(guān)系是如何的?任務(wù)就緒表:每個任務(wù)的就緒態(tài)標志放入在就緒表中,就緒表中有兩個變量OSRdyGrp和OSRdyTbl[]。在OSRdyGrp中,任務(wù)按優(yōu)先級分組,8個任務(wù)為一組。OSRdyGrp中的每一位表達8組任務(wù)中每一組中與否有進入就緒態(tài)的任務(wù)。任務(wù)進入就緒態(tài)時,就緒表OSRdyTbl[]中的對應(yīng)元素的對應(yīng)位也置位。映射關(guān)系:uC/OS-II最多管理64個任務(wù),Prio值域:0~63,對應(yīng)的二進制數(shù)000,000~111,111(6bit),OSRdyGrp(任務(wù)組就緒變量)8bit,任務(wù)就緒數(shù)組元素OSRdyTbl也是8bit。prio.D[5:3]---對應(yīng)OSRdyTbl的下標(任務(wù)組號y),也對應(yīng)OSRdyGrp的比特位號。prio.D[2:0]---對應(yīng)OSRdyTbl元素的位號(任務(wù)組號x)8.舉例闡明優(yōu)先級在任務(wù)就緒表中的表達。答:舉例:prio=29的任務(wù)在任務(wù)就續(xù)表中的表達。prio=29,其8進制表達為:35O9.如何實現(xiàn)任務(wù)優(yōu)先級到就緒表的操作?如何從任務(wù)就緒表中獲得現(xiàn)在優(yōu)先的最高的優(yōu)先級號?操作:如果prio是任務(wù)的優(yōu)先級,即任務(wù)的標記號,則將任務(wù)放入就緒表,即使任務(wù)進入就緒態(tài)的辦法是:OSRdyGrp|=OSMapTbl[prio>>3];OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];假設(shè)優(yōu)先級為12——1100bOSRdyGrp|=OSMapTbl[12>>3](0x02);OSRdyTbl[1]|=0x10;獲得優(yōu)先級號:將優(yōu)先級數(shù)分解為高三位和低三位分別擬定;高優(yōu)先級有著小的優(yōu)先級號;10.μC/OS中有哪幾個任務(wù)調(diào)度器?任務(wù)調(diào)度器有哪兩項工作?任務(wù)調(diào)度器的兩項重要工作:①從任務(wù)就緒表中查找優(yōu)先級最高的就緒任務(wù),②實現(xiàn)任務(wù)切換。uC/OS-II中有兩個“任務(wù)調(diào)度器”:任務(wù)級的調(diào)度器(OS_Sched()),中斷級的調(diào)度器(OSIntCtxSw())11.任務(wù)切換宏OS_TASK_SW()依次完畢的7項工作是什么?被中斷Task的斷點指針(PC)入棧保護被中斷Task通用寄存器入棧保護被中斷Task系統(tǒng)管理SP→該TCB->OSTCBStkPtr獲得待運行任務(wù)TCB獲得待運行任務(wù)TCB->OSTCBStkPtr恢復(fù)待運行任務(wù)CPU現(xiàn)場(不包含PC)切換CPU.PC,使CPU接續(xù)運行待運行Task斷點。12.某系統(tǒng)中有Task_A、Task_B兩個任務(wù)都要使用公共資源(例如UART),他們能夠分別使用,但不能同時使用。如何用信號量的辦法解決此問題?答:……OS_EVENT*UART_Flag;//聲明事件指針變量INT8Uerr; //聲明全局狀態(tài)變量……voidmain(void){OSInit();UART_Flag=OSSemCreate(1);//創(chuàng)立信號量OSTaskCreate(Task_A,……);//創(chuàng)立任務(wù)AOSTaskCreate(Task_B,……);//創(chuàng)立任務(wù)BOSStart();}voidTask_A(void*pdata){……;for(;;) //任務(wù)體A{OSSemPend(UART_Flag,0,&err);//請求信號量UART_FlagFunction(UART); //使用信號量UART_FlagOSSemPost(UART_Flag); //發(fā)送信號量UART_FlagOSTimeDly(nnnn); //Task_A延時nnnn個時鐘節(jié)拍}}voidTask_B(void*pdata){……;for(;;) //任務(wù)體B{OSSemPend(UART_Flag,0,&err);//請求信號量UART_FlagFunction(UART); //使用信號量UART_FlagOSSemPost(UART_Flag); //發(fā)送信號量UART_FlagOSTimeDly(mmm); //Task_B延時mmm個時鐘節(jié)拍}}13.某系統(tǒng)中有Task_A、Task_B兩個任務(wù),若想執(zhí)行Task_B,必須首先通過Task_A。如何用信號量的辦法,將Task_B作為Task_A的后續(xù)功效,解決此問題?答:……OS_EVENT*Task_Flag;//聲明信號量……voidmain(void){OSInit();Task_Flag=OSSemCreate(0);//創(chuàng)立信號量OSTaskCreate(Task_A,……);//創(chuàng)立任務(wù)AOSTaskCreate(Task_B,……);//創(chuàng)立任務(wù)BOSStart();}voidTask_A(void*pdata){……;for(;;) //任務(wù)體A{OSSemPost(Task_Flag);//發(fā)送信號量Task_Flag…… ; //Task_A業(yè)務(wù)功效代碼OSTimeDly(nnnn); //Task_A延時nnnn個時鐘節(jié)拍}}voidTask_B(void*pdata){……;for(;;) //任務(wù)體B{OSSemPend(Task_Flag,0,&err);//請求信號量Task_Flag……; //Task_B業(yè)務(wù)功效代碼/*OSTimeDly(mmm); //Task_B延時mmm個時鐘節(jié)拍*/}}14.什么是任務(wù)的優(yōu)先級反轉(zhuǎn)現(xiàn)象?發(fā)生的因素是什么?如何解決?答:是指在剝奪式OS中,當(dāng)任務(wù)以獨占方式使用共享資源時,低優(yōu)先級的任務(wù)可能先于高優(yōu)先級任務(wù)得到系統(tǒng)調(diào)度而運行的現(xiàn)象。因素:低優(yōu)先級的任務(wù)獨占共享資源,迫使高優(yōu)先級任務(wù)因等待資源而讓出CPU。解決方法:臨時提高獲得共享資源任務(wù)的優(yōu)先級別,盡快釋放共享資源,之后再恢復(fù)其原有的優(yōu)先級別。15.某系統(tǒng)中有Task_A、Task_B兩個任務(wù)都要使用公共資源(例如UART),他們能夠分別使用,但不能同時使用;Task_A、Task_B兩任務(wù)的優(yōu)先級之間還存在許多中間優(yōu)先級的任務(wù);例如:Prio(Task_A)=3,Prio(Task_B)=20,優(yōu)先級在[3,20]之間還存在5個任務(wù)Task_1,Task_2,……,Task_5,有可能引發(fā)優(yōu)先級反轉(zhuǎn)。如何使用互斥信號量的辦法解決此問題?答:……OS_EVENT*UART_Flag;//聲明信號量INT8Uerr; //聲明全局狀態(tài)變量……voidmain(void){OSInit();UART_Flag=OSMutexCreate(2,&err);//創(chuàng)立互斥信號量OSTaskCreate(Task_A,……,3);//創(chuàng)立任務(wù)AOSTaskCreate(Task_B,……,20);//創(chuàng)立任務(wù)BOSTaskCreate(Task_1,……,6);……OSTaskCreate(Task_5,……,18);OSStart();}voidTask_A(void*pdata){……;for(;;) //任務(wù)體A{OSMutexPend(UART_Flag,0,&err);//請求信號量UART_FlagFunction(UART); //使用信號量UART_FlagOSMutexPost(UART_Flag);//發(fā)送信號量UART_FlagOSTimeDly(nnnn); //Task_A延時nnnn個時鐘節(jié)拍}}voidTask_B(void*pdata){……;for(;;) //任務(wù)體B{OSMutexPend(UART_Flag,0,&err);//請求信號量UART_FlagFunction(UART); //使用信號量UART_FlagOSMutexPost(UART_Flag);//發(fā)送信號量UART_FlagOSTimeDly(mmm); //Task_B延時mmm個時鐘節(jié)拍}}16.某應(yīng)用系統(tǒng)含有“數(shù)據(jù)采集”任務(wù)Task_A和“數(shù)據(jù)解決”任務(wù)Task_B;Task_A周期性的定時采集數(shù)據(jù),如何用消息郵箱的方式將數(shù)據(jù)傳送到Task_B解決?答:INT16Uzql_data; //寄存AD轉(zhuǎn)換后的數(shù)據(jù)OS_EVENT*Dt_box; //消息郵箱指針voidmain(void){OSInit();Dt_box=OSMboxCreate(void*0);//創(chuàng)立(空)消息郵箱OSTaskCreate(Task_A,…); //創(chuàng)立Task_AOSTaskCreate(Task_B,…); //創(chuàng)立Task_BOSStart();}voidTask_A(void*pdata) //采集數(shù)據(jù)任務(wù){(diào)for(;;){……; //啟動A/D轉(zhuǎn)換zql_data=GetAD(); //得到一次轉(zhuǎn)換數(shù)據(jù)OSMboxPost(Dt_box,&zql_data); //將zql_data數(shù)據(jù)發(fā)送到消息郵箱OSTimeDlyHMSM(0,0,1,0) //定時1秒}}voidTask_B(void*pdata) //解決數(shù)據(jù)任務(wù){(diào)INT16U*data_B;for(;;){……; //其它業(yè)務(wù)data_B=OSMboxPend(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論