閱讀以下關于嵌入式系統(tǒng)軟件設計方面的敘述,在答題紙上回答問題1 至問題3。
某公司承擔了一項嵌入式系統(tǒng)軟件開發(fā)項目。該項目主要用于車載電子系統(tǒng)中監(jiān)視發(fā)動機及燃油系統(tǒng)等系統(tǒng)工作狀況,并通過綜合儀表顯示給駕駛員。經過多次與用戶溝通,形成以下技術要求:
(1)本項目的硬件平臺由主處理機模塊和多種接口模塊組成,底板采用標準VME總線(硬件結構圖見圖3-1),具體硬件模塊配置如下:
① 主處理機模塊(CPM)采用PowerPC755,主頻266MHz,配有SDRAM存儲器和FLASH 存儲器;提供一個定時/計數器;支持16級中斷和二級cache;
② 輸入輸出模塊(IOC)支持16路RS422接口信號,傳輸速率不低于115.2kbps,IOC 模塊與CPM模塊的數據交換采用64KByte雙端口存儲器;
③ 離散量接口模塊(DAM)支持64路開關型離散量輸入輸出接口;2路頻率量輸入;12位A/D 轉換器和12位D/A 轉換器;
④ 圖形處理模塊(GPM)用于顯示圖形,支持OpenGL標準接口軟件;
⑤ MBI模塊主要提供1553B 外總線接口,PSM為電源支持模塊。
(2)本項目軟件主要工作在CPM模塊中,完成對外部設備的數據采集、分析和相應的控制,將監(jiān)視結果以圖形方式顯示給駕駛員。該系統(tǒng)的軟件主要包括外部接口驅動軟件、VME數據傳輸軟件、處理軟件、圖形顯示和外總線(1553B)數據交換軟件。要求數據的采集必須確保每幀數據無丟失,并在本幀內完成數據的處理工作,本幀信息顯示給駕駛員的時刻最晚不能超過下幀。詳細的技術要求如下:
① 16 路 RS422 接口主要完成對汽車燃油系統(tǒng)、動力系統(tǒng)和駕駛員命令的數據采集與控制。RS422數據傳輸格式將以32Byte為基本數據塊,分別以20ms、40ms、60ms、1s四個不同周期交換數據;
② 64路離散量數據主要監(jiān)控發(fā)動機工作狀態(tài),要求每10ms采集一次,并在下一個10ms周期內將發(fā)動機狀況顯示到駕駛員座艙;
③ 多路模擬量數據主要采集發(fā)動機轉速、油量以及汽車的其他數據,為駕駛員監(jiān)控;
汽車狀態(tài)提供必要的量化數據。模擬量數據的刷新頻率為1s;
④ 外總線(1553B)主要完成該系統(tǒng)與汽車其他電子系統(tǒng)的數據交換。
公司將本項目交給項目主管李工實施,要求李工按技術要求完成本項目的軟件設計工作,公司根據合同關于“數據的采集必須確保每幀數據無丟失,并在本幀內完成數據的處理工作,
本幀信息顯示給駕駛員的時刻最晚不能超過下幀”的要求,提醒李工設計中重點考慮整個系統(tǒng)的實時性問題。李工完成設計后,提交公司評審,會上就李工設計中存在的缺陷展開了激烈討論,最終達成一致。
【問題1】(12 分)
李工在設計IOC模塊軟件時指出:為了使CPM模塊能夠及時處理RS422數據,在IOC 與 CPM 間的雙端口存儲器中為每個 422 通道設計一級緩沖,當某通道接收一個字節(jié)時,就將數據放入緩沖,由 CPM 接收(其結構見圖 3-2)。這樣的好處在于每當有數據輸入時,CPM模塊可立即讀取,而增大雙口緩沖的目的是在CPM來不及處理時可防止數據的丟失。同時,IOC 中的程序相對簡單、實時性好、可以不考慮422通道的數據傳輸周期,只要按查詢方式對16路422輸入進行查詢讀取即可。
會上,王工提出了強烈的反對意見,認為這種設計方法絕對不可取,這種方法只考慮了軟件的簡單與便利,而沒有針對軟件特點考慮問題,在設計中對實時性、負載平衡分配以及實現(xiàn)算法上均存在缺陷,必須改進。
(1)你認為李工的設計在實時性、負載平衡分配和實現(xiàn)算法上存在怎樣的缺陷?詳細說明理由。
(2)請給出IOC 模塊和CPM模塊之間雙口存儲器數據交換方法。
【問題2】(7 分)
如果 CPM 模塊中采用了嵌入式實時操作系統(tǒng),請根據本項目的需求,用 300 字以內的文字說明 CPM 模塊中數據采集任務應如何劃分?系統(tǒng)對任務調度的最小調度周期如何計算?各個任務周期及優(yōu)先級如何定義?
【問題3】(6 分)
請用150 字以內的文字說明針對 IOC 模塊的多路 RS422 接口的數據采集,其驅動程序使用中斷方式或查詢方式的主要差別是什么?主要優(yōu)缺點有哪些?