中級嵌入式系統設計師-案例分析_第1頁
中級嵌入式系統設計師-案例分析_第2頁
中級嵌入式系統設計師-案例分析_第3頁
中級嵌入式系統設計師-案例分析_第4頁
中級嵌入式系統設計師-案例分析_第5頁
已閱讀5頁,還剩78頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

中級嵌入式系統設計師-案例分析問答題(共25題,共25分)(1.)ATM自動取款機系統是一個由終端機、ATM系統、數據庫組成的應用系統,具有提取現金、查詢賬戶余額、修改密碼及轉賬等(江南博哥)功能。ATM自動取款機系統用例圖如圖1所示。ATM自動取款機系統功能組成如圖2所示。1、根據ATM自動取款機系統功能和系統用例圖,完成圖3所示的ATM自動取款機系統的系統狀態圖,將系統狀態圖中的(1)~(6)補充完整。2、ATM自動取款機系統取款用例描述用戶取款的過程。其事件流如下:(1)基本流a.用戶輸入取款金額;b.系統驗證輸入金額是否符合輸入要求;c.系統驗證用戶賬戶余額;d.系統顯示用戶賬戶余額;e.用戶確認取款金額;f.系統要求點鈔機出鈔;g.系統更新并保存賬戶信息。(2)備選流a.如果輸入金額不符合輸入數字格式要求,給出提示,退出;b.如果輸入金額超出最大取款金額,給出提示,退出;c.如果用戶沒有確認,給出提示,退出。根據上述ATM:自動取款機系統取款用例描述,請完成取款功能的流程圖。3、ATM自動取款機系統是與銀行服務器聯網的網絡系統,由于系統涉及個人和企事業單位的財產安全,要求網絡通信安全可靠,因此通信過程要采取消息加解密、身份認證、消息鑒別和訪問控制等信息安全措施。(1)請簡要解釋下列術語的基本概念。a.對稱密鑰b.公開密鑰c.訪問控制d.消息鑒別(2)以下幾種常見的加密算法哪些屬于對稱加密算法?哪些屬于非對稱加密算法?a.DESb.RSAc.AESd.IDEAe.PGPf.DSAg.橢圓曲線DSA正確答案:參考解析:1、(1)取款(2)選擇修改密碼(3)選擇繼續服務(4)選擇轉賬(5)轉賬(6)輸入密碼本題考查軟件設計中的狀態圖、流程圖以及信息安全方面概念和基本知識。本題要求考生認真閱讀題目的描述,根據ATM自動取款機系統用例圖和ATM自動取款機系統功能圖了解ATM自動取款機系統工作過程,結合軟件設計中的狀態圖和流程圖的繪制要求,完成相關問題。由ATM自動取款機系統用例圖和ATM自動取款機系統功能圖可知,其工作過程如下:當客戶將銀行卡插入ATM機后,ATM機會要求輸入密碼,如果密碼不正確,則需要重新輸入;如果密碼正確,則進入主菜單,選擇不同的服務類型。服務類型有取款、修改密碼、查詢余額、轉賬等功能。2、完整的ATM自動取款機系統的系統狀態圖如圖4所示。該問題的描述部分已經給出了ATM自動取款機系統的取款過程的事件,流程圖只需要根據實際取款的工作次序排序即可。正確的流程如下:a)用戶輸入取款金額;b)系統驗證輸入金額是否符合輸入要求;c)判斷格式要求,如果滿足要求,則繼續;否則,轉結束;d)系統驗證用戶賬戶余額;e)系統顯示用戶賬戶余額;f)判斷實際取款金額是否超出最大取款金額,若不大于,則繼續;否則,給出超出最大金額提示后,轉結束;g)用戶確認取款金額;h)如果用戶沒有確認,時間超時,則給出超時提示,轉結束:i)系統要求點鈔機出鈔;j)系統更新并保存賬戶信息;k)結束。3、(1)a.對稱密鑰:對稱密鑰加密又叫專用密鑰加密,即發送和接收數據的雙方必須使用相同的密鑰對明文進行加密和解密運算。b.公開密鑰:公開密鑰也稱為非對稱密鑰,每個人都有一對唯一對應的密鑰:公開密鑰(簡稱公鑰)和私人密鑰(私鑰),公鑰對外公開,私鑰由個人秘密保存;用其中一把密鑰加密,就只能用另一把密鑰解密。c.訪問控制:按用戶身份及其所歸屬的某項定義組來限制用戶對某些信息項的訪問,或限制對某些控制功能的使用的一種技術。d.消息鑒別:利用鑒別函數產生一個鑒別符,接收者通過鑒別符能夠檢驗和證實消息的合法性、真實性和完整性。這是一個證實收到的消息來自可信的原點且未被篡改的過程。(2)對稱加密算法:DES、AES、IDEA非對稱加密算法:RSA、PGP、DSA、橢圓曲線DSA(2.)在嵌入式系統設計中,李工使用某嵌入式處理器和對應的以太網芯進行帶有網絡功能的單板實現,該電路中還包含DDR、Flash等存儲芯片和相應的外圍控制芯片。圖1為所選用嵌入式處理器的存儲模塊存儲地址總線變換示意圖,圖2為以太網芯片外圍設計的相關原理示意圖,圖3為用戶在該嵌入式單板系統上實現內部嵌入式Web服務器的流程示意圖。在該嵌入式處理器的存儲系統設計中,嵌入式處理器內部包含SA[25:0](從高到低)共26根系統地址總線,外部使用22根數據線和外部存儲設備進行連接。嵌入式處理器和以太網芯片之間的交互接口為:MII(MediaIndependentInterface)接口,包含數據線和控制線。數據線分為收發兩個方向:其中RXD[3:0]為并行數據接收線,RXCLK為對應的時鐘線;TXD[3:0]為并行數據發送線,TXCLK為對應的時鐘線。MDIO和MDC為控制線,通過其進行以太網芯片的配置。以太網芯片的最大通信頻率由其外圍的晶振頻率和收發數據線的并行數目決定。在嵌入式系統設計中,嵌入式處理器和以太網芯片之間可以設計為一對多的方式,每個以太網控制器都有一個PHYID,該PHYID依賴于以太網芯片周邊的電路設計。在圖2的設計中,該以太網芯片的PHYID由圖中的PHYID[4:0]五個管腳來定。對于該以太網芯片而言,PHYID[4:0]在啟動時是作為。PHYID選擇控制使用,在啟動后是作為其他指示功能使用。PHYID的最大值是31(五位),最小是0,由PHYID[4:0]從高位到低位決定,對應管腳為高電平時對應的值為1,低電平時對應的值為0。1、如圖1所示,用戶可以通過寄存器將存儲總線變換方式配置為字節模式(8位模式),半字模式(16位模式)或者字模式(32位模式)中的任何一種,不同模式下,所使用到的地址線不同。在圖2中的,①、②、和③分別對應的地址線連接應該依次是______。ASA2-SA23,SA1-SA22,SA0-SA21BSA0-SA21,SA2-SA23,SA1-SA22CSA1-SA22,SA2-SA23,SA0-SA21DSA0-SA21,SA1-SA22,SA2-SA23根據圖2的網絡部分相關電路設計,可以知道該嵌入式處理器的網絡通信中,最大通信頻率是______Mbps。A.10000B.1000C.100D.10如果該網絡芯片工作在100Mbps,那么在圖2的設計中,RXCLK的工作頻率應該是______Mbps.根據圖2的電路和題目說明,在該電路中,以太網芯片的PHYID應該是______。2、在圖3中,為了實現嵌入式Web服務器和對應的請求流程,李工設計了該流程示意圖,根據網絡通信的過程,從下面選項中選擇合適的處理過程,填充圖3中的空(1)~(4)。空(1)~(4)備選答案:A.創建TCPsocket套接字B.關閉socket套接字C.accept嘗試建立TCP連接D.HTTP服務E.數據發送處理F.數據接收處理G.bind綁定套接字H.本地其他服務處理I.listen偵聽客戶套接字J.創建UDPsocket套接字正確答案:參考解析:1、DC251或者0x012、GICD(3.)某嵌入式剎車控制軟件,應用于汽車剎車控制器,該軟件需求如下:1.模式選擇:采集模式控制離散量信號In_D1并通過模式識別信號燈顯示軟件當前工作模式。在信號In_D1為低電平時進入正常工作模式(模式識別信號燈為綠色),為高電平時進入維護模式(模式識別信號燈為紅色)。軟件在正常工作模式下僅進行剎車控制和記錄剎車次數,在維護模式下僅進行中央控制器指令響應;2.剎車控制:采用定時中斷機制,以5ms為周期采集來自駐車器發出的模擬量信號In_A1以及來自剎車踏板發出的模擬量信號In_A2,并向剎車執行組件發送模擬量信號Out_A1進行剎車控制;3.記錄剎車次數:在Out_A1大于4V時,讀出非易失存儲器NVRAM中保存的剎車次數記錄進行加1操作,然后保存至非易失存儲器NVRAM中;4.響應中央控制器指令:接收來自中央控制器的串行口指令字In_S1,回送串行口響應字Out_S1。當接收的指令字錯誤時,軟件直接丟棄該命令字,不進行任何響應。指令字及響應字說明如表1所示。表1指令字和響應字1、請簡述本軟件串行輸入接口測試的測試策略及測試內容。針對表1中“讀取剎車次數指令”進行魯棒性測試時應考慮哪些情況?2、某測試人員設計了表2所示的操作步驟對模式選擇功能進行測試(表中END表示用例到此結束)。為進一步提高剎車控制軟件的安全性,在需求中增加了設計約束:軟件在單次運行過程中,若進入正常工作模式,則不得再進入維護模式。請參照表2的測試用例完成表3,用于測試該設計約束。3、本項目在開發過程中通過測試發現了17個錯誤,后期獨立測試發現了31個軟件錯誤,在實際使用中用戶反饋了2個錯誤。請計算缺陷探測率(DDP)。正確答案:參考解析:1、測試策略包括測試正常和異常指令的響應。測試內容包括讀取剎車次數和清除剎車次數兩種指令。對“讀取剎車次數指令”魯棒性測試時應考慮輸入接口幀頭錯誤、指令碼錯誤、幀長錯誤、幀尾錯誤以及整個指令長度超過4字節的情況。2、3、DDP=(17+31)/(17+31+2)=96%1、本題考查軟件測試的一些基本概念及依據需求進行測試用例設計的能力。此題目要求考生認真閱讀題目所給的說明,了解剎車控制軟件的工作流程,結合軟件測試的一些基本概念,在剎車控制軟件中進行實際應用。本問題主要考查測試的基本概念,對所有的測試而言,都必須進行正常測試和異常測試,在本題中對測試對象實例化為串行輸入接口。串行輸入接口在本題的需求描述中,根據表1內容,負責接收讀取剎車次數和清除剎車次數兩種指令,故測試內容為此兩種指令。對“讀取剎車次數指令”進行魯棒性測試時應考慮的情況,其實也是接口魯棒性測試概念的一個實例化,對接口的數據包而言,至少應該包括幀頭錯誤、數據長度錯誤、數據錯誤、校驗和錯誤、校驗碼錯誤以、幀尾錯誤以及其他防止指令錯誤手段的錯誤等。對本題的實例化而言,具體包括幀頭錯誤、指令碼錯誤、幀長錯誤、幀尾錯誤以及整個指令長度超過4字節的情況。2、如果不考慮約束,軟件工作狀態從組合的角度來說,表2的測試順序完全符合要求。但是許多軟件在實際使用中,由于真實情況的限制,不能從理論的情況進行組合,對一些條件必須要進行約束。比如本題中,在單次進入正常工作模式后,就不能進入維護模式,因為維護模式是一種檢修模式,不能在正常工作中進行檢修,所以必須保證在正常工作模式下,對維護模式命令不響應。所以此題的前提條件應該為“上電前置In_D1為高電平,給測試環境上電,模式識別信號燈為紅色”,即在上電后首先讓工作模式為維護模式;然后再發送進入正常工作模式命令,燈變綠,進入工作模式;最后在正常工作模式下,發送進入維護模式命令,此時軟件應該不響應,燈繼續為綠色,表示在工作模式,完成帶約束條件的狀態轉換測試。如果繼續表2的測試前提條件,不管發送什么命令,燈一直不會變化,就無法判斷是軟件問題還是測試設備問題,無法完成測試。3、此題是一個簡單的測試概念,缺陷探測率(DDP)=測試發現的軟件問題/軟件總的發現問題,對本題而言,缺陷探測率(DDP)=(17+31)/(17+31+2)=96%。(4.)某公司承接了某嵌入式系統的研制任務。該嵌入式系統由數據處理模塊、系統管理模塊、FC網絡交換模塊和智能電源模塊組成,系統組成如圖1所示。數據處理模塊處理系統的應用任務;系統管理模塊除了處理系統的應用任務外,還負責管理整個嵌入式系統;FC網絡交換模塊采用消息機制,支持廣播和組播,主要負責系統的數據交換;智能電源模塊負責給其他模塊供電,該模塊根據系統命令可以給其他模塊供電或停止供電。1、該系統的軟件大部分是用C語言編程的,編程人員經常會使用運算符,請按優先級由高到低的次序,重新排序下面的運算符:%,=,image.png=,&&。2、該系統的開發要求按軟件能力成熟度模型CMM3級開發,請回答下列問題:(1)CMM3級包含多少個關鍵過程域?(2)請寫出CMM3級的關鍵過程域。(3)CMM2級包含多少個關鍵過程域?(4)在對該開發軟件單位進行CMM3級達標評級時,只需檢查3級的關鍵過程域還是3級和2級的關鍵過程域都需要檢查?3、(1)在本系統中,FC網絡采用何種拓撲結構?請從如下4項中選擇最為合適的。A.總線B.樹型C.星形D.點對點(2)FC網絡除了用于交換的光纖基礎架構,還必須有高性能的I/O通道結構支持,I/O通道在FC網絡中的優勢是什么?4、智能電源模塊首先進行系統初始化,初始化后各設備就可使用,再根據系統初始配置表對嵌入式系統的其他模塊供電。智能電源模塊通常完成兩件事情:一、周期性地查詢本模塊溫度、各路電流(給各模塊供電的)以及電源模塊的供電是否異常,如果異常,則進行異常處理,并報系統管理模塊,由系統管理模塊進行決策;二、進入中斷處理程序,處理系統管理模塊的各種命令,如果系統管理模塊命令關機下電,則智能電源模塊對所有模塊(也包括自己)進行下電處理圖2是智能電源模塊上的管理軟件處理流程圖,請完成該流程圖,給(1)~(5)處填空。正確答案:參考解析:1、按優先級由高到低的次序,運算符排序為:%,<=,&&,=2、(1)CMM3級(已定義級)包括7個關鍵過程區域(2)同行評審、組間協調、軟件產品工程、集成軟件管理、培訓大綱、組織過程定義、組織過程集點(3)CMM2級(可重復級)包括6個關鍵過程區域(4)3級和2級的關鍵過程域都需要檢查3、(1)C(2)簡單、廉價、高速4、(1)按初始配置表給各模塊供電(2)電源模塊溫度檢測(3)向其他模塊供電的各路電流檢測(4)屏蔽中斷(5)處理系統控制模塊發來命令1、本題考查嵌入式系統設計中的基本C語言編程、軟件工程化、FC網絡以及智能電源管理設計等知識及應用。本問題考查C語言的基礎知識。在C語言中,對各種運算符的優先級是有規定的,必須掌握。優先級最高者其實并不是真正意義上的運算符,包括:數組下標、函數調用操作符、各結構成員選擇操作符。它們都是自左向右結合。單目運算符的優先級僅次于上述運算符,在所有的真正意義的運算符中,它們的優先級最高。雙目運算符的優先級低于單目運算符的優先級。在雙目運算符中,算術運算符的優先級最高,移位運算符次之,關系運算符再次之,接著就是邏輯運算符,賦值運算符,最后是條件運算符。總結以下兩點:(1)任何一個邏輯運算符的優先級低于任何一個關系運算符;(2)移位運算符的優先級比算術運算符要低,但是比關系運算符要高。下表是C語言運算符優先級表(由上至下,優先級依次遞減)。綜上所述,本題中運算符優先級由高到低的次序為:%,image.png=,&&,=2、CMM即軟件能力成熟度模型,是目前國際上最流行、最實用的軟件生產過程標準和軟件企業成熟度的等級認證標準。CMM是美國卡內基-梅隆大學軟件工程研究所與企業、政府合作的基礎上開發的模型,主要用于評價軟件企業的質量保證能力。目前,國內外的很多大型企業采用這一模型,如國內的鼎新、浪潮通軟、用友、金蝶、創智、亞信、華為等公司都啟動了CMM軟件過程改進計劃。國軍標GJB500-2003<<軍用軟件能力成熟度模型>>就是以CMM為參考藍本而制定的。CMM模型將軟件能力成熟度自低到高依次劃分,1級為初始級、2級為可重復級、3級為已定義級、4級為已管理級、5級為優化級。除等級1外,每個成熟度等級被分解成幾個關鍵過程域,指明為了改進其軟件過程組織應關注的區域,關鍵過程域識別出為了達到各成熟度等級所必須著手解決的問題。CMM共有18個關鍵過程域,其中初始級無關鍵過程域。CMM2級(可重復級)包括6個關鍵過程域,為軟件配置管理、軟件質量保證、軟件子合同管理、軟件項目跟蹤與監督、軟件項目策劃、軟件需求管理;CMM3級(已定義級)包括7個關鍵過程域,為同行評審、組間協調、軟件產品工程、集成軟件管理、培訓大綱、組織過程定義、組織過程集點;CMM4級(已管理級)包括2個關鍵過程域,為軟件質量管理和定量過程管理;CMM5級(優化級)包括3個關鍵過程域,為過程更改管理、技術改革管理和缺陷預防。在CMM某一級達標時,必須是該級別的所有關鍵過程域滿足要求,同時低級別的所有關鍵過程域也必須達標。因此,某單位進行CMM3級達標評級時,對3級和2級的關鍵過程域都需要檢查。3、數據通信網絡常見的拓撲結構由簡單到復雜依次為:點對點、總線、樹型、星形。點到點型指網絡中一個信息源節點連接到一個或多個目的節點,是專用的鏈路,具有通信效率高,延遲小的優點,但是建立多點全互聯的網絡具有連線多、成本高、資源利用率低等缺點。總線型指網絡中一個信息源節點連接到一個或多個目的節點,采用集中控制、令牌訪問、CSMA/CD等方式,具有連線少、成本較低、資源利用率高等優點,但存在通信吞吐量低、延遲大的缺點,尤其在網絡負載重的情況下。樹型指網絡中所有節點掛接到一個樹形結構上,可以采用集中控制、令牌訪問等方式,具有連線簡單、成本較低的優點,但存在通信吞吐量低、延遲大的缺點,尤其在網絡負載重的情況下。星形指網絡中所有節點連接到中心交換機,節點之間的通信經過交換機路由轉發,具有通信吞吐量高、延遲小、連線較簡單的優點,但存在成本高、交換機單點故障風險的缺點。本題為了滿足嵌入式系統對高帶寬、低延遲的通信要求,通過分析以上網絡的拓撲結構特點,FC網絡應選擇星形結構。星形結構是最佳的方案。SAN通常有FCSAN和IPSAN兩種實現技術。FCSAN采用I/O結合光線通道,IPSAN采用iSCSI實現異地間數據交換,具有簡單、廉價、高速等優勢。4、智能電源模塊首先進行系統初始化,再根據系統初始配置表對嵌入式系統的其他模塊供電。按照智能電源模塊的工作過程,判斷有無中斷,如有中斷,則進入中斷處理程序。如沒有中斷,則周期性地查詢本模塊溫度、各路電流(給各模塊供電的)以及電源模塊的供電是否異常,如果異常,則進行異常處理,并報系統管理模塊,由系統管理模塊進行決策。在中斷處理程序中,首先屏蔽中斷,喂看門狗,統計中斷次數,接收系統控制模塊的各種命令,處理系統控制模塊發來的這些命令,打開中斷。如果系統控制模塊命令關機下電,則智能電源模塊對所有模塊(也包括自己)進行下電處理。智能電源模塊上的管理軟件處理流程圖如圖3所示。(5.)閱讀以下關于C語言編程方面的說明和程序,回答下列問題。[說明]在開發某嵌入式系統時,設計人員根據系統要求,分別編寫了如下程序,其中:程序1是關于文件操作的一段程序。程序2是某信息管理系統的系統登錄和密碼驗證程序,規定密碼最長為20個字符。首先,打開密碼文件sys_code,如果成功,則將文件中的密碼信息與用戶輸入的密碼進行比較,若相等,則身份驗證通過并進入信息管理系統,否則輸出錯誤信息并退出登錄系統。如果打開文件sys_code失敗,則由用戶輸入密碼并保存到密碼文件sys_code。[程序1]#includeimage.pngstdio.h>#includeimage.pngstdlib.h>Voidmain15{FILE*fp;charc,fname[20];printf("輸入文件名:");Scanf("%S",fname);if((fp=fopen(fname,"r"))==______){printf("不能打開文件:%sin",fname);exit16;}while(______)/*檢測文件是否結束*/{c=fgetc(fp);if(______)/*檢測文件是否出錯*/{printf("文件讀錯誤\n");break;}putchar(c);}}[程序2]voidpassword15{intsign=0;sign=checkcode15;if(______){printf("\a\n\n\n\n\n\n\n\n\n\t\t密碼錯誤,請重新登錄!");getch19;system("cls");exit20;}system("cls");printf("\a\n\n\n\n\n\n\n\n\n\t\t");printf("歡迎登錄信息管理系統!\n");getch19;return;}intcheckcode15{FILE*fp;charch,syspwd[21]="\0";charusrpwd[21]="\0";inti;/*身份驗證*/if((fp=fopen("sys_code","r"))==NULL){system("cls");printf("pleasesetyouridentify\n");printf("password(image.png=20):");for(i=0;iimage.png20;i++){ch=getchar19;if(ch=='\r'||ch=='\n')break;______=ch;}fp=fopen("sys_code","w");fputs(syspwd,fp);fclose(fp);return0;else{system("cls");fgets(syspwd,21,fp);fclose(fp);printf("pleaseenteryourpassword:");for(i=0;iimage.png20;i++){ch=getehar19;if(ch=='\r'||ch=='\n')break;usrpwd[i]=ch;}if(strcmp(______)!=0)return1;}return0;}}1、變量存儲類型是指數據在內存中存儲的方法,即確定所定義的變量在內存中的存儲位置,也確定了變量的作用域和生存期,內部變量有3種存儲類型。假設有一個內部整型變量aa,請按不同存儲類型給出相應的變量聲明。2、王工在編寫某嵌入式程序時,用到對文件系統的操作,由于要保證系統的安全性,要求必須使用文件檢測函數feof()和ferror(),完成[程序1]中的空。3、王工根據系統的需求編寫了[程序2],請填寫其中的空。正確答案:參考解析:1、自動內部變量:intaa;或autointaa;寄存器內部變量:registerintaa;或registeraa;靜態內部變量:staticintaa;2、(1)NULL或者0(2)!feof(fp)(3)ferror(fp)3、(1)sign==1或sign或sign!=0或等價表示形式(2)syspwd[i]或*(syspwd+i)或等價表示形式(3)usrpwd,syspwd或syspwd,usrpwd或等價表示形式1、本題考查C語言的基本概念和編程方面的基本知識。變量存儲類型是指數據在內存中存儲的方法,即確定所定義的變量在內存中的存儲位置,也確定了變量的作用域和生存期,內部變量存儲類型有3種,分別是:自動內部變量、寄存器內部變量、靜態內部變量。自動(auto)存儲型變量又稱自動變量,它是最常用的一種變量的存儲類型,在函數內部或復合語句內部定義的局部變量(或稱為內部變量)。只要存儲類型是缺省的,均為自動變量。它的特點是其生命期域定義它的函數或復合語句的執行期同長,且有效范圍僅在定義它的函數或復合語句內。寄存器(register)存儲型變量一般存儲在計算機CPU的通用寄存器中,因而定義的這種類型變量存取速度快,適合于頻繁使用的變量,可加快程序的運行速度,由于CPU中通用寄存器的數目有限,且每次可供C語言使用的通用寄存器數更有限,因而在程序中不宜大量使用這種存儲類型的變量,以二三個為宜,當然超過可用的寄存器數,也不會出錯,編譯程序將會將超過可用寄存器數的寄存器型變量當作auto變量處理。一般將最頻繁使用的變量定義成寄存器型變量。靜態(static)存儲型變量是分配在存儲器中C程序占據的數據段內,對運行的C程序而言,這是一個程序所用的固定內存區域,因而靜態變量的存儲地址在整個程序的運行執行期間均保留,不會被別的變量占據。靜態變量可以定義成全局變量或局部變量,當定義成全局變量時,它在定義它的整個程序執行期間均存在,其原來的存儲位置不會變化。當定義成局部變量時,雖然在定義它的函數內或復合語句中有效,但在執行完該函數或復合語句后,靜態變量最后取得的值仍然保存,不會消失,因為它所占的存儲地址不會被別的變量占用,這樣,當程序再次調用該函數或執行該復合語句時,該靜態變量當前值就是再次進入該函數或執行該復合語句的初始值。假設有一個內部整型變量aa,按不同存儲類型的變量聲明如下:a)自動內部變量:intaa;或autointaa;b)寄存器內部變量:registerintaa;或registeraa;c)靜態內部變量:staticintaa;2、王工在編寫某嵌入式程序時,用到對文件系統的操作,由于要保證系統的安全性,要求必須使用文件檢測函數feof()和ferror(),完成[程序1]中的空。feof()函數用于檢測文件當前讀寫位置是否處于文件尾部。只有當當前位置不在文件尾部時,才能從文件讀數據。函數定義:intfeof(FILE*fp)返回值:0或非0如果fp所指的文件的位置處于文件尾部,返回非0;否則返回0。在對文件進行讀操作前,應用這個函數測試當前位置是否在文件尾部。文件操作的每個函數在執行中都有可能出錯,C語言提供了相應的標準函數ferror用于檢測文件操作是否出現錯誤。函數定義:intferror(FILE*fp)返回值:0或非0Ferror函數檢查上次對文件fp所進行的操作是否成功,如果成功則返回0;否則返回非0。因此,應該及時調用ferror函數檢測操作執行的情況,以免丟失信息。[程序1]首先輸入文件名,打開這個文件,如果不能打開,則輸出“不能打開文件:XX”,程序退出。如果能正常打開該文件,則循環讀這個文件,一次讀一個字節,讀取后,及時檢測讀操作是否出錯,如果出錯,報“文件讀錯誤”,退出循環;否則輸出該字符。在循環語句的判斷冬件中,檢測文件是否結束,如果結束,則退出循環。[程序1]需要填空的三條完整語句為:(1)if((fp=fopen(fname,"r'))===NULL)(2)while(!feof(fp))/*檢測文件是否結束*/(3)if(ferror(fp))/*檢測文件是否出錯*/3、[程序2]是某信息管理系統的系統登錄和密碼驗證的一個簡易程序示例,其密碼最長為20個字符。首先,打開密碼文件sys_code,如果成功,則將文件中的密碼信息與用戶輸入的密碼進行比較,若相等,則身份驗證通過并進入信息管理系統,否則輸出錯誤信息并退出登錄系統。如果打開文件sys_code失敗,則由用戶輸入密碼并保存到密碼文件sys_code。[程序2]需要填空的3條完整語句為:(1)if(sign)(2)syspwd[i]=ch;(3)if(strcmp(usrpwd,syspwd)!=0)(6.)【程序1】是關于條件編譯的一段程序示例;【程序2】是一段switch語句應用示例。C語言要求switch之后圓括弧內的“表達式”類型必須是整型或字符型。該程序代碼中a與x的對應關系如表5-1所示。表5-1a與x對應關系表【程序3】是冒泡排序算法的實現。假設有N個數據存放在數組aa中,用冒泡排序將這N個數從小到大排序。首先,在aa[0]到aa[N..1]的范圍內,依次比較兩個相鄰元素的值,若aa[j]>aa[j+1],則交換aa[j]與aa[j+1],j的值取0,1,2,…,N-2;經過這樣一趟冒泡,就把這N個數中最大的數放到aa[N-1]中。接下來對aa[0]到aa[N-2]中的數再進行一趟冒泡,這樣就將該范圍內的最大值換到aa[N-2]中。依次進行下去,最多只要進行N-1趟冒泡,就可完成排序。如果在某趟冒泡過程中沒有交換相鄰的值,則說明排序已完成,可以提前結束處理。【C程序代碼1】【C程序代碼2】【C程序代碼3】問題:5.1(1)什么是c語言的條件編譯?(2)請解釋#ifndef的作用。(3)分析【C程序代碼1】,寫出該段執行后的輸出結果。問題:5.2完成【C程序代碼2】中的(1)?(3)空,將答案寫到相應的位置。問題:5.3完成【C程序代碼3】中的(4)?(6)空,將答案寫到相應的位置。正確答案:參考解析:問題5.1、(1)條件編譯:C語言中提供控制編譯器流程的語句。或C源程序中希望對其中一部分內容只是在滿足一定條件時才進行編譯,形成目標代碼,這種對一部分內容指定編譯的條件稱為條件編譯。(2)#ifndef的作用:如果Wifndef后面的“宏名”未定義,則編譯其體內的程序段;否則編譯#else部分的程序段,如果沒有#else部分,則當“宏名”己定義時直接跳過#endif。(3)x=2問題5.2、(1)x=3(2)x=1(3)x=2問題5.3、(4)&aa[i](5)N-i-1(6)!swap或swap==0問題5.1、本題考查C語言編程方面的基本知識。考查條件編譯的概念。C語言中提供控制編譯器流程的語句為條件編譯語句,在一般情況下,C源程序中所有的行都參加編譯過程,但有時出于對程序代碼優化的考慮,希望對其中一部分內容只是在滿足一定條件時才進行編譯,形成目標代碼,這種對一部分內容指定編譯的條件稱為條件編譯。下面是關于#ifdef語句的使用規則:#ifdef宏名程序段1;#else程序段2;#endif或者#ifdef宏名程序段;#endif該語句的作用是,如果#ifdef后面的“宏名”在此前已用#define語句定義,則編譯“程序段1”或“程序段”;否則編譯“程序段2”。如果沒有#else部分,則當“宏名”未定義時直接跳過#endif。下面是關于#ifndef語句的使用規則:#ifndef宏名程序段1;#else程序段2;#endif或者#ifndef宏名程序段;#endif#ifndef語句的功能與#ifdef語句的功能正好相反,如果#ifndef后面的“宏名”未定義,則編譯“程序段1”或“程序段”;否則編譯“程序段2”。如果沒有#else部分,則當“宏名”已定義時直接跳過#endif。在【C程序代碼1】中,由于在執行條件編譯語句時,x已定義,所以,執行x=2;語句。最終程序執行結果為:x=2。問題5.2、在C語言中,選擇結構的作用是根據所給的條件是否滿足,決定從給定的兩個或多個分支中,選擇其中的一個分支來執行。c語言中有兩種選擇結構語句,if語句和swkch語句。使用if語句的嵌套結構實現多分支選擇功能時,程序的結構顯得不夠清晰。因此,C語言專門提供了switch語句。switch語句的一般形式如下:switch(表達式){Case常量表達式1;語句1;break;Case常量表達式2;語句2;break;……Case常量表達式n;語句n;break;Default:語句n+1;break;}在使用switch語句時有以下要求:1、switch語句后面圓括號內的“表達式”的值和case后面的“常量表達式”的值,都必須是整型或字符型的,不允許是實數。2、在case后的各常量表達式的值不能相同,否則會出現錯誤。在本題中變量a是實數,所以在switch語句要進行轉換:Switch((int)a)。根據題意,a取整后的值為0、1、2時,0<a(7.)某水電站根據安全監控的需要決定采用嵌入式工控微機進行實時多任務安全監測。該系統有32路模擬量輸入、96路開關量、16路脈沖量輸入和水位落差量輸入,產生顯示信息、報警信號、監測報表和水位傳感器控制信號等輸出。該水電站安全監測系統具有以下幾個特點:對各種模擬量、開關量、脈沖量、水位落差量等數據量的監測,事實上只是周期性地重復執行相應的各個任務模塊。監視的對象比較固定,系統硬件的規模相對固定不變。盡可能允許把所有軟件都固化在EPROM中。人機交互作用的內容固定,即由操作人員通過鍵盤去調用此系統中所存入的相應應用程序,不會去修改應用程序。基于以上安全監測系統的特點,該水電站技術研發部門準備選用現有的工業控制機系統及現成的各種模板等硬件,由本部門的開發人員自行開發軟件。所開發的軟件主要包括:應用程序,即按各類輸入/輸出量的采集、處理、顯示、報警和制表等功能分別作為若干任務塊,由這些任務組成應用程序。多任務嵌入式實時操作系統,用來協調各任務的資源分配與管理,管理任務之間的聯系與多任務操作。[問題1]根據以上安全監測系統的特點,技術研發人員郭工程師提出了一個自行編制簡化“多任務嵌入式實時操作系統”的方案,以適應于協調管理硬件資源和監測對象的實際需求,其中只保留了標準的多任務實時操作系統的核心功能,例如CPU管理、中斷管理和外設管理等。請在200字以內簡要說明郭工程師提出的簡化的“多任務嵌入式實時操作系統”可能具有哪些優點。[問題2]設計簡化的多任務嵌入式實時操作系統時,由于多個任務均可能要求占用CPU這個關鍵資源,因此CPU的任務管理是一個非常重要的設計內容。在該嵌入式實時操作系統中,作為占用資源的基本單位,任務總共有五個狀態,分別是休眠狀態、就緒狀態、運行狀態、等待狀態和延時等待狀態。在任何時候,一個任務只會處于其中的某一個狀態。請根據圖6-8中已給出的信息將(1)~(5)空缺處填寫完整。[問題3]在該水電站安全監測系統中,數據采集任務(Collect_task)把所采集的數據送入一單緩沖區,計算任務(Calculate_task)從該單緩沖區中取出數據進行計算。以下是利用信號量機制實現兩個任務共享單緩沖區的C語言形式化描述程序。請將程序代碼中(6)~(9)空缺處以及(10)空缺處的內容填寫完整。intsr=0'int(6):main(){cobeginCollect_task();Calculate_task();coend}Collect_task(){While(采集工作未完成){采集一個數據,P(se),將數據送入緩沖區中:(7),}}Calculate_task(){While(計算工作未完成){(8),從緩沖區中取出數據:(9)進行數據計算送入緩沖區中,}}如果以上程序中“intsf=0;”語句不小心被改寫成“ints{=-1;”,那么系統運行時將會進入(10)狀態。正確答案:參考解析:問題1:①可加快該操作系統的開發周期,并使其更易于維護,②減少操作系統占有內存的容量,便于固化,③減少操作系統的運行開銷(例如CPU占用時間),④可提高系統的實時性能和快速響應能力;⑤可提高系統的資源利用率和性價比等這是一道要求讀者根據實際應用環境分析多任務嵌入式實時操作系統的特點的綜合理解題。本題的解答思路如下:(1)嵌入式實時系統(RTOS)是指能夠在指定的時間內完成系統功能和對內部或外部、同步或異步時間做出響應的系統,它還具有在事先定義的時間范圍內識別和處理離散事件的能力,系統能夠處理和存儲控制系統所需要的大量數據。實時操作系統的主要功能是多任務、可搶占的任務調度、中斷管理、存儲管理、時鐘管理、外部設備管理以及文件系統等。(2)由試題中關鍵信息“只保留了標準的多任務實時操作系統的核心功能,例如CPU管理、中斷管理和外設管理等”可直接理解簡化的多任務嵌入式實時操作系統中“簡化”一詞的涵義。“簡化”可加快該操作系統的開發周期,并使其更易于維護。(3)由題干關鍵信息“對各種模擬量、開關量、脈沖量、水位落差量等數據量的監測,事實上只是周期性地重復執行相應的各個任務模塊”可知,系統中有著相對較多的簡單輸入量,另外由于“監視的對象比較固定,系統硬件的規模相對固定不變”,因此,采用簡化多任務實時操作系統是可行的。(4)采用簡化的實時操作系統比標準多用戶實時操作系統(MROS)所需占用的主存空間容量小,更符合題干中“盡可能允許把所有軟件都固化在EPROM中”的要求。(5)另外,采用簡化的實時操作系統具有可提高系統的實時性能和快速響應能力,可減少操作系統的運行開銷(例如CPU可更快運行任務,更快響應中斷),提高系統的資源利用率和性價比等。問題2:(1)等待狀態(2)就緒狀態(3)休眠狀態(4)延時等待(5)運行狀態這是一道要求讀者根據實際應用環境分析嵌入式實時操作系統任務狀態轉換的綜合理解題。本題的分析思路如下:①任務是相應任務塊程序關于某數據集合的可并發的一次運行活動,即任務通常作為占有資源的最基本單位。在本案例的實時操作系統中,任務總共有五個狀態,分別是休眠狀態、就緒狀態、運行狀態、等待狀態和延時等待狀態。而且試題中已給定“在任何時候,一個任務只會處于其中的某一個狀態”。②其中,休眠狀態指任務還沒有初始化,或任務的執行已經結束,實際上對操作系統來說,該任務是不存在的。就緒狀態是指任務已經具備了運行的條件,但是由于CPU正忙,正在運行其他的任務,因此暫時不能運行的狀態。③運行狀態表示此任務正在占有CPU,并在CPU上運行。處于就緒狀態的任務只要把CPU控制權分配給它(任務調度),它就能夠立刻執行。等待狀態是指任務因為正在等待某種事件的發生而暫時不能運行。例如,它正在等待某個I/O操作的完成,或者它同某個任務之間存在著同步關系,正在等待該任務給它發信號。此時,即使CPU已經空閑了下來,它也還是不能運行。處于等待狀態的任務可以被某些系統調用或事件激發而轉到就緒狀態。當一個任務運行過程中需要等待某個事件或更高優先級的任務占用CPU時,將由運行狀態轉移到等待狀態。由此可判斷(1)空缺處填寫的內容是“等待狀態”,(2)空缺處填寫的內容是“就緒狀態”,(5)空缺處填寫的內容是“運行狀態”。④處于運行狀態的任務如暫時不需要占用CPU資源,則可直接進入休眠狀態;而當操作系統喚醒某一處于休眠狀態的任務時,該任務將進入就緒狀態,因此(3)空缺處可填入“休眠狀態”等內容。⑤由圖6-8中“延時時間到”以及(2)空缺處填寫的內容是“就緒狀態”、(5)空缺處填寫的內容是“運行狀態”可推理出,(4)空缺處可填人“延時等待”這一狀態。⑥圖6-14給出了一個完整的簡化實時操作系統的任務狀態轉換圖。問題3:se=1(7)V(sf)(8)P(sf)(9)V(se)(10)死鎖這是一道要求讀者掌握信號量操作機制的程序分析題。本題的解答思路如下:①在本試題中,數據采集任務(Collect_task)和計算任務(Calculate_task)共用一個單緩沖區。數據采集任務(Collect_task)采集到一個數據后,只有當緩沖區為空時,才能將數據送入該單緩沖區存放,否則應等待單緩沖區騰空。當單緩沖區中有數據時,計算任務(Calculatetask)才能從緩沖區中取出數據進行計算,否則也應等待。②本試題信號量操作機制的實質是一個典型的生產者——消費者操作問題,即需要使用兩個任務間同步算法解決問題。③本試題中應設置兩個信號量,其中一個信號量來表示緩沖區中是否有可供計算的數據,其初值為0。程序代碼中“intsf=0;”語句正是對該信號量的定義。④實現兩個任務間同步算法時,還需定義另一個信號量來表示單緩沖區中有無空位置存放新的數據,其初值為1。數據采集任務(Collect_task)程序代碼中已給出“P(se),”語句,間接說明另一個信號量的標識是“se”。因此(6)空缺處所填寫的內容是“se=1”。⑤當數據采集任務(Collect_task)將數據送入單緩沖區中時,應使用“V(sf),”語句喚醒原處于等待狀態的計算任務(Calculate_task)。因此(7)空缺處所填寫的內容是“V(sf);”語句。⑥由于計算任務(Calculate_task)需要等待單緩沖區中有數據時,才能從緩沖區中取出數據進行計算,也就是說,單緩沖區中沒有數據時,計算任務(Calculate_task)應處于等待狀態。因此(8)空缺處實現此功能語句的語句是“P(sf);”。⑦當計算任務(Calculate_task)從緩沖區中取出數據時,單緩沖區的空間被騰空,此時允許將新數據存人該單緩沖區,即單緩沖區的使用權限將交付給數據采集任務(Collect_task因此(9)空缺處需填入語句“V(se);”實現此功能。⑧當信號量sf的初始值為-1時,假設計算任務(Calculate_task)先被調度執行,它執行P(sf)操作時,使sf的值變為-2,計算任務(Calculate_task)進入阻塞狀態。假設此時發生了一次時鐘中斷,數據采集任務(Collect_task)被調度執行,它順利通過了P(se)操作,并使se的值變為o,接著在執行V(sf)操作,并使sf的值變為-1,假設滿足“While(采集工作未完成)”判斷條件,P(se)操作將再次執行,并使se的值變為-1,數據采集任務(Collect_task)也進入阻塞狀態。這樣一來,兩個任務都在等待對方釋放信號量,就成為了一種死鎖狀態。(8.)使用在汽車、飛機中的嵌入式軟件,由于直接影響人的生命及財產安全,測試要求更為嚴格。語句覆蓋、判定覆蓋、條件覆蓋和MC/DC覆蓋是通常對這類軟件的要求。以下是一段C語言代碼,請仔細閱讀,并回答相關問題:intlogicTest(intx,inty){intmagic=0;if(x>0&&y>0){magic=x+y+10;}else{magic=x+y-10;}if(magicimage.png0){magic=0;}returnmagic;}問題1:請根據測試要求,簡要說明語句覆蓋、判定覆蓋、條件覆蓋和MC/DC覆蓋的含義。問題2:畫出以上代碼的流程圖。問題3:請根據[說明]中的C語言代碼,計算滿足MC/DC覆蓋要求的用例數量及條件取值范圍正確答案:參考解析:問題1:問題2:問題3:用例數量:3個;條件取值范圍:(x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)本問題考查MC/DC覆蓋率判定的綜合運用。MC/DC與代碼中的邏輯運算有關。本題代碼中的邏輯運算為x>0&&y>0。根據MC/DC的定義,MC/DC覆蓋要求每個條件的取值都有覆蓋,每個判定值都有覆蓋且每個條件都能獨立影響判定結果。對于a&&b這樣的邏輯運算,真值表如下。對測試用例1和測試用例2,條件a不變,因為條件b的不同而導致結果的不同,因此條件b獨立影響判定的結果。對測試用例2和測試用例3,因為條件b不變,條件a的不同而導致結果的不同,因此條件a獨立影響判定的結果。綜合以上,對邏輯運算a&&b應產生三個測試用例,包括:(True,False)、(True,True)、(False,True)。所以本題用例數量:3個;條件取值范圍:(x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)。(9.)在開發某嵌入式系統時,設計人員根據系統要求,分別編寫了相關程序,其中:[程序1]是李工編寫的一個數據交換子程序。[程序2]是趙工編寫的一段利用遞歸方法判別鏈表表示的兩個數據結構是否相等的程序,若相等則返回值為1,否則返回為0。判別的準則是若兩個鏈表的首指針相等,則相等;否則進行內部元素比較,元素中的itemid表示后面聯合體un的有效性,itemid為0時,聯合體un里面的data項有效,否則聯合體un中的link項有效。[程序1]#includeimage.pngstdio.h>swap(intx,inty){intt;t=x;x=y;y=t;}main17{inta,b;a=3;b=4;swap(a,b);printf("%d,%d\n",a,b);}[程序2]typedefstructItem{intitemid;union{chardata;structItem*link;}un;structItem*nextItem;}ItemNode;intEqualItem(ItemNode*x,ItemNode*y){intres;ifx==y)return1;if(12){if(13){if(x->itemid==0){res=14;}else{res=15}if(res){return16}}}return0;}問題1:執行[程序1]后,打印出來的a=3,b=4;并沒有完成數據交換,請指出李工的問題?并改正程序錯誤。問題2:仔細閱讀并分析[程序2]中的C語言代碼,完成其中(1)~(5)空白填空。問題3:李工編寫某嵌入式軟件時,遇到了一些問題,請幫助李工解答下面2個問題。(1)李工在編譯時,程序沒有通過編譯,經檢查程序后將文件頭的#includeimage.pngfilename.h>改為#include"filename.h"后編譯通過,請問#includeimage.pngfilename.h>和#include"filename.h"的區別是什么?(2)李工在編寫一段c++程序時,需要調用一段已編譯的C語言函數,為什么要加extern"C"?正確答案:參考解析:問題1:李工的問題:形參不能作為函數的輸出參數使用。對應的swap函數修改如下:swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}調用時修改為swap(&a,&b)本題考查嵌入式C/C++編程知識與應用。函數swap采用值傳遞,雖然將形參x和y交換了,但是并不影響到實參,所以執行[程序1]后,打印出來的a=3,b=4;并沒有完成數據交換。將值傳遞改成指針傳遞就可以了。對應的swap函數應修改如下:swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}調用時應修改為swap(&a,&b)問題2:(1)x!=NULL&&y!=NULL(2)x->itemid==y->itemid(3)x->un.data==y->un.data(4)EqualItem(x->un.link,y->un.link);(5)EqualItem(x->nextItem,y->nextItem);該段C語言程序是一段利用遞歸方法判別鏈表表示的兩個數據結構是否相等的程序,若相等則返回值為1,否則返回為0。判別的準則是若兩個鏈表的首指針相等,則相等;否則進行內部元素比較,元素中的itemid表示后面聯合體un的有效性,itemid為0時,聯合體un里面的data項有效,否則聯合體un中的link項有效。該程序具體如下:如果x==y,則返回1,表示斷定兩個數據實際指向是同一地方,當然相等;如果x和y都不為空則繼續,否則返回0;如果x->itemid==y->itemid,則繼續,否則返回0;如果x->itemid==0,則若x->un.data==y->un.data,res=1,否則res=0;如果x->itemid不等于0,聯合體un中的link項有效,遞歸調用EqualItem(x->un.link,y->un.link),繼續判斷;如果res=1,也就是x->un.data=y->un.data,則遞歸調用EqualItem(x->nextItem,y->nextItem),判斷下一級鏈表;如果res=0,也就是x->un.data不等與y->un.data,則即可斷定兩個數據不相等,返回為0。問題3:(1)對于#include<filename.h>,編譯器從工程指定路徑搜索filename.h;對于#include"filename.h",編譯器從當前路徑和工程指定路徑搜索filename.h;(2)C++語言支持函數重載,C語言不支持函數重載,函數被C++編譯后在庫中的名字與C語言不同。C++提供了C連接交換指定符號extern"C"來解決名字匹配問題。本題考查考生對預處理指令include的正確理解。對于#include<filename.h>來說,編譯器會從工程指定路徑搜索filename.hwen件;對于#include"filename.h"來說,編譯器會從當前路徑和工程指定路徑搜索filename.hwen件。C++語言支持函數重載,C語言不支持函數重載,函數被C++編譯后在庫中的名字與C語言不同。為了C++程序中能夠調用C程序,就需要C++提供C連接交換指定符號extern"C"來解決名字匹配問題。(10.)某公司承接了一個控制系統的項目,由王工負責系統的方案設計。王工的設計方案如圖1所示。該方案是基于VME總線的多機并行處理系統,由主控制模塊作為VME總線的主設備,即總線控制器,負責整個系統的控制與管理;3個數據處理模塊作為從設備,負責數據處理與計算;1個I/O模塊也作為從設備,負責系統與外部接口之間的高速數據通信。同時,為了簡化設計,該系統5個模塊均采用同一款VME協議芯片,實現內總線和VME總線的連接。該系統中每個模塊的相關信息見表1所示。1、王工設計采用共享存儲器方式,進行多機之間的通信。VME共享存儲器的地址空間映射,分為輸出窗口和輸入窗口兩部分。輸出窗口實現處理器本地地址空間到VME總線地址空間的映射,輸入窗口實現VME總線地址空間到處理器本地地址空間的映射。輸出窗口空間設置說明:為了每個模塊能訪問到其他4個模塊,在每個模塊的處理器本地地址空間中開辟5M空間,映射到VME總線上的5M地址空間。映射關系見表2。輸入窗口空間設置說明:每個模塊分配1M的VME地址空間,并將這1M空間映射到處理器本地RAM區域中,專門用于VME通信數據緩沖區。映射關系見表3。VME總線驅動中,按照上述方式對寄存器進行設置,實現了VME總線共享存儲器工作方式,將對其他模塊的操作轉化為對處理器本地地址空間訪問操作相似的讀寫操作,并且都采用總線遠程寫,總線本地讀的方式。數據處理模塊1發送消息到數據處理模塊2,它們之間采用1M數據緩沖區的第一個32位作為握手標志。則數據處理模塊1訪問標志區的總線地址為______,數據處理模塊2訪問標志區的總線地址為______。I/O模塊向主控制模塊發送控制命令,它們之間采用1M數據緩沖區偏移0x100處作為命令緩沖區。則I/O模塊訪問命令區的總線地址為______,主控制模塊訪問命令區的總線地址為______。2、如表1所示,該系統中采用的處理器有大端和小端兩種工作模式。王工設計VME總線上傳輸的數據全部采用小端方式,那么當處理器通過VME總線發送數據時,需要根據自己的工作模式,對數據進行必要的轉換,以符合協議要求。當I/O模塊向主控制模塊發送控制命令0xAABBCCDD,那么它寫入V=ME總線的實際數據是______,當主控制模塊向數據處理模塊3和I/O模塊發送控制命令0x12345678,那么它寫入VME總線的實際數據是______和______。3、為了提高數據通信的性能,在進行大數據量通信時,王工設計采用DMA的方式。DMA通信方式能夠滿足高速VME設備的需求,也有利于發揮CPU效率。該VME協議芯片有兩種DMA工作方式:一種是直接方式(Directmode),一種是鏈方式(Linkedlistmode)。在直接方式下,在每次數據傳輸前,需要驅動程序對DMA控制寄存器進行設置,然后進行DMA傳輸,并等待傳輸完成,或者異常錯誤。直接方式是一種軟件和硬件同步工作方式。在鏈方式下,驅動程序只需要設置命令包。在通信過程中,硬件根據命令包的內容完成傳輸,并根據鏈中的下一個命令包,繼續傳輸,直到所有命令包完成或者異常錯誤。鏈方式是一種軟件和硬件異步工作的方式。圖2是DMA直接方式的流程圖,請補全流程圖。正確答案:參考解析:1、0xD020'00000x00F0'00000xD000'01000x00F0'01002、0xAABBCCDD0x785634120x785634123、(1)設置DMA目的地址或(2)(2)設置傳輸長度或(1)(3)設置DMA傳輸啟動位DMA是否正常終止1、本題考查嵌入式系統中計算機總線、存儲、DMA等相關知識及應用。該系統是基于VME總線的多機并行處理系統,采用共享存儲器方式進行多機之間的通信,定義了5MB的VME空間,用于主控制模塊等5個模塊之間的VME通信。VME總線的共享存儲器方式,通過地址空間映射來實現,分為輸出窗口和輸入窗口兩部分。輸出窗口實現處理器本地地址空間到VME總線地址空間的映射,本系統中每個模塊配置了相同的5MB的處理器輸出窗口地址空間(0xD000'0000~0xD04F'FFFF),用于映射到VME總線上的5MB地址空間(0x0000'0000~0x004F'FFFF)。輸入窗口實現VME總線地址空間到處理器本地地址空間的映射。本系統中按照模塊順序,每個模塊將1M的VME地址空間,映射到處理器本地RAM區域中(0x00F0'0000~0x00FF'FFFF),專門用于VME通信數據緩沖區。整個系統的映射關系圖3所示。由于所有驅動都采用總線遠程寫方式,數據處理模塊1要訪問數據處理模塊2的通信緩沖區,訪問的基地址就是數據處理模塊2內存緩存區對應的VME總線地址,即VME總線0x0020'0000,該地址對應數據處理模塊1的本地地址,則為0xD020'0000。由于所有驅動都采用總線本地讀的方式,所以數據處理模塊2訪問的基地址為本地存儲器地址,即0x00F0'0000。具體的地址空間再由基地址加上指定的偏移即可。同理,I/O模塊要訪問主控制模塊的通信緩存區,訪問的基地址就是主控制模塊內存緩存區對應的VME總線地址,即VME總線0x0000'0000,該地址對應I/O模塊的本地地址,則為0xD000'0000。主控制模塊訪問的基地址為本地存儲器地址,即0x00F0'0000。具體的地址空間再由基地址加上指定的偏移即可。2、數據在計算機中表示時,有大端和小端兩種格式。大端模式是指數據的高位保存在內存的低地址中,而數據的低位保存在內存的高地址中,這樣的存儲模式有點兒類似于把數據當作字符串順序處理,地址由小向大增加,而數據從高位往低位放。小端模式是指數據的高位保存在內存的高地址中,而數據的低位保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,與用戶的邏輯方法一致。例如,數字0x12345678在內存中的表示形式為:1.大端模式:低地址------>高地址0x12|0x34|0x56|0x782.小端模式:低地址------>高地址0x78|0x56|0x34|0x12從軟件處理的角度上,不同端模式的處理器進行數據傳遞時必須要考慮端模式的不同。如進行網絡數據傳遞時,必須要考慮端模式的轉換。其中互聯網使用的網絡字節順序采用大端模式進行編址,而主機字節順序則根據處理器的不同而不同,如PowerPC處理器使用大端模式,而Pentium處理器使用小端模式。大端模式處理器的字節序到網絡字節序不需要轉換;而小端模式處理器的字節序到網絡字節必須要進行轉換。在該系統中,VME總線上傳輸的數據全部采用小端方式,但主控制模塊、數據處理模塊1、數據處理模塊2、數據處理模塊3均采用大端方式處理器,因此發送到VME總線上的數據要進行大端到小端模式的轉換,而從VME總線上接收的數據,要進行小端到大端模式的轉換,但I/O模塊由于采用的是小端模式的處理器,則不需要進行轉換。3、DMA(DirectMemoryAccess,直接內存存取)是所有計算機的重要特色,它允許不同速度的硬件裝置來傳輸數據,而不需要依賴于CPU的大量負載。DMA傳輸將數據從一個地址空間復制到另外一個地址空間。當CPU初始化這個傳輸動作,傳輸過程則由DMA控制器來實行和完成,如圖4所示。典型的例子就是移動一個外部內存的區塊到芯片內部更快的內存區。這樣的操作并沒有讓處理器工作拖延,反而可以被重新安排去處理其他的工作。DMA傳輸對于高效能嵌入式系統是很重要的。在實現DMA傳輸時,由DMA控制器直接掌控總線,因此,存在著一個總線控制權轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸后,DMA控制器應立即把總線控制權再交回給CPU。一個完整的DMA傳輸過程必須經過DMA請求、DMA響應、DMA傳輸、DMA結束4個步驟。(1)DMA請求CPU對DMA控制器初始化,并提供要傳送的數據的起始位置、目的地址和數據長度。并向I/O設備發出啟動操作命令,I/O設備提出DMA請求。(2)DMA響應DMA控制器對DMA請求判別優先級及屏蔽,向總線裁決邏輯提出總線請求。當CPU執行完當前總線周期即可釋放總線控制權。此時,總線裁決邏輯輸出總線應答,表示DMA已經響應,通過DMA控制器通知I/O設備開始DMA傳輸。(3)DMA傳輸DMA控制器獲得總線控制權后,CPU即刻掛起或只執行內部操作,由DMA控制器輸出讀寫命令,直接控制RAM與I/O設備進行DMA傳輸。在DMA控制器的控制下,在存儲器和外部設備之間直接進行數據傳送,在傳送過程中不需要中央處理器的參與。(4)DMA結束當完成規定的成批數據傳送后,DMA控制器即釋放總線控制權,并向I/O設備發出結束信號。當I/O設備收到結束信號后,一方面停止I/O設備的工作,另一方面向CPU提出中斷請求,使CPU從不介入的狀態解脫,并執行一段檢查本次DMA傳輸操作正確性的代碼。最后帶著本次操作結果及狀態繼續執行原來的程序。由此可見,DMA傳輸方式無需CPU直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬件為RAM與I/O設備開辟一條直接傳送數據的通路,使CPU的效率大為提高。(11.)在某四軸飛行器系統設計中,利用慣性測量單元(IMU)、PID電機控制、2.4G無線遙控通信和高速空心直流電機驅動等技術來實現一個簡易的嵌入式四軸飛行器方案。整個系統的設計包括飛控板和遙控板兩部分,兩者之間采用2.4G無線模塊進行數據傳輸。飛控板采用高速單片機STM32作為處理器,采用含有三軸陀螺儀、三軸加速度計的運動傳感器MPU16050作為慣性測量單元,通過2.4G無線模塊和遙控板進行通信,最終根據PID控制算法以PWM方式驅動空心電機來控制目標。圖1為李工設計的系統總體框圖。飛控板和遙控板的核心處理器都采用STM32F103。飛控系統的慣性測量單元采用MPU6050測量傳感器,MPU6050使用IIC接口,時鐘引腳SCL、數據引腳SDA和數據中斷引腳分別接到STM32的對應管腳,圖2為該部分原理圖。遙控板采用STM32單片機進行設計,使用AD對搖桿模擬數據進行采集,采用NRF2401無線模塊進行通信,圖3為該部分原理圖。李工所設計的系統軟件同樣包含飛控板和遙控板兩部分,飛控板軟件的設計主要包括無線數據的接收、自身姿態的實時計算、電機PID增量的計算和PWM的電機驅動。遙控板主控制器軟件通過ADC外設對搖桿數據進行采集,把采集到的數據通過2.4G無線通信模塊發送至飛控板。圖4為飛控系統的軟件流程示意圖。1、由圖1系統總體框圖設計可知,飛控板和遙控板之間是用2.4G無線通信進行數據傳輸,各自主處理器和無線通信模塊之間是SPI接口。同時,在飛控板上,處理器和慣性測量單元是通過IIC進行數據交互。以下關于SPI接口和IIC接口的描述中,正確的是:______、______、______、______。A.SPI和IIC都是主從式通信方式B.SPI的數據收發線是各自獨立的,IIC也是同樣C.SPI和IIC的傳輸都不需要片選控制D.IIC總線是一個多主機的總線,可以連接多于一個能控制總線的器件到總線E.IIC總線包括標準模式,快速模式和高速模式,相互之間的傳輸速度差異并不大F.在原理設計中,到底采用SPI和IIC哪種方式,需要依據外設芯片的接口而定G.SPI是一種環形總線結構H.在IIC總線上,可以有多個從設備具有相同的IIC地址2、(1)圖2飛控板部分原理圖中,R4的作用是什么?(2)圖3遙控板部分原理圖中,C11、C12、C13、C14的作用是什么?3、在STM32處理器的PWM使用過程中,最為關鍵的就是PWM的頻率和占空比。PWM的頻率依賴于PWM模塊的參考時鐘頻率,自動裝載寄存器ARR的值加1之后再乘以參考時鐘頻率即可得到PWM的頻率。PWM的占空比是用捕獲比較寄存器CCR和自動裝載寄存器ARR獲得的,PWM占空比=CCR/(ARR+1)。假設當前主控板的STM32處理器PWM模塊的參考時鐘頻率為1kHz,要將PWM模塊的頻率設置為100kHz,則ARR寄存器的值應設置為多少?如果此時占空比希望設置為20%,那么CCR寄存器的值應該設置為多少?4、5毫秒進行一次定時器的觸發,每次中斷都會檢查一次無線模塊數據的接收,以確保飛控系統控制信息的實時性。每2次中斷(即1毫秒)讀取一次。MPU16050單元的數據,并進行算法處理。每4次中斷(即2毫秒)通過計算當前飛控板系統的姿態,結合遙控端的目標姿態,根據兩者的差值通過PID控制算法對各個電機進行調速控制。每200次中斷(即100毫秒)采集一次電池電壓,然后通過無線模塊把電池電壓發送給遙控板,以告知操作人員當前電壓的大小。圖4為飛控系統軟件實現的簡要流程圖,根據以上描述,請補全圖4中的空(1)~(6)處的內容。正確答案:參考解析:1、(順序不限)(1)~(4):A、D、F、G2、(1)增強驅動能力(2)濾波,保持信號的穩定性3、ARR寄存器的值:99CCR寄存器的值:204、(1)檢查一次無線模塊數據的接收(2)count%2=0(3)讀取MPU16050單元的數據,并進行算法處理(4)計算當前飛控板系統的姿態,對各個電機進行調速控制(5)count%200=0(6)采集電池電壓,通過無線模塊把電池電壓發送給遙控板1、本題考查嵌入式軟硬件系統協同設計過程中的知識及應用。此類題目要求考生認真閱讀題目中的題干描述,仔細理解設計的原理框圖,詳細觀察提供的硬件原理圖和所描述的軟件實現流程示意圖。前后結合進行題目分析。由圖1系統總體框圖可知,飛控板和遙控板之間是用2.4G無線通信進行數據傳輸,各自主處理器和無線通信模塊之間是SPI接口。同時,在飛控板上,處理器和慣性測量單元是通過IIC進行數據交互。IIC(Inter-IntegratedCircuit)和SPI(SerialPeripheralInterface)這兩種通信協議非常適合近距離低速芯片間進行通信。Philips(forIIC)和Motorola(forSPI)出于不同背景和市場需求制定了這兩種標準通信協議。IIC開發于1982年,SPI總線首次推出是在1979年。SPI包含4根信號線,分別是:(1)SCLK:SerialClock(outputfrommaster)(2)MOSI,SIMO:MasterOutput,SlaveInput(outputfrommaster)(3)MISO,SOMI:MasterInput,SlaveOutput(outputfromslave)(4)SS:SlaveSelect(activelow,outputfrommaster)SPI是單主設備(single-master)通信協議,這意味著總線中只有一支中心設備能發起通信。當SPI主設備想讀/寫從設備時,它首先拉低從設備對應的SS線(SS是低電平有效),接著開始發送工作脈沖到時鐘線上,在相應的脈沖時間上,主設備把信號發到MOSI實現“寫”,同時可對MISO采樣而實現“讀”。SPI有4種操作模式——模式0、模式1、模式2和模式3,它們的區別是定義了在時鐘脈沖的哪條邊沿轉換(toggles)輸出信號,哪條邊沿采樣輸入信號,還有時鐘脈沖的穩定電平值(就是時鐘信號無效時是高還是低)。與SPI的單主設備不同,IIC是多主設備的總線,IIC沒有物理的芯片選擇信號線,沒有仲裁邏輯電路,只使用兩條信號線——‘serialdata’(SDA)和‘serialclock’(SCL)。IIC數據傳輸速率有標準模式(100kbps)、快速模式(400bps)和高速模式(3.4Mbps),另外一些變種實現了低速模式(10kbps)和快速+模式(1Mbps)。物理實現上,IIC總線由兩根信號線和一根地線組成。IIC通信過程大概如下。首先,主設備發一個START信號,這個信號就像對所有其他設備喊:請大家注意!然后其他設備開始監聽總線以準備接收數據。接著,主設備發送一個7位設備地址加一位的讀寫操作的數據幀。當所有設備接收數據后,比對地址以

溫馨提示

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

評論

0/150

提交評論