?
嵌入式系統是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適用于應用系統對功能,對可靠性、成本、體積、功耗有嚴格要求的專用計算機系統,其工程實踐正逐漸地引起研究人員的關注,在實際工程中有諸多因素需要考慮,比如微處理器的功耗,器件的可靠性,設備的抗惡劣環境能力,人機交互界面(HCI),現場通信等等問題。HCI是嵌入式系統工程中的一個重要課題。由于某些嵌入式系統研發的復雜性和工程實施中的不確定性,導致嵌入式系統HCI有僵化的趨勢,對此提出一種可適應性的解決思路是必要的。
1 嵌入式工程的HCI
圖形用戶界面是當前用戶界面的主流。HCI是決定嵌入式計算機系統是否友好的一個重要因素。嵌入式系統人機交互功能主要靠輸入輸出的設備與相應的軟件協同來實現。可供人機交互使用的設備主要有鍵盤、顯示以及各種模式識別設備等。嵌入式系統的人機交互因其特殊性而與PC有所區別,多數的嵌入式系統都是顯示屏幕與鍵盤,或者帶觸摸屏定位的設備組成。對用戶而言,需要用按鍵或觸摸屏的動作告知系統如何按照人的意圖去輸出,絕大多數嵌入式系統都有個HCI系統供用戶使用。問題是在工程中交互設計時,設計者往往會把交互界面和系統的資源聯系起來,使得界面的設計不獨立于系統資源。軟件設計勢必在很大程度上受限于硬件資源。實踐中,通常的做法是根據現有的硬件條件臨時組織一個數據結構,把一系列字符串值“串”起來,之間可以實現相互跳轉。一個交互節點的快照描述一般需要幾部分組成:1)狀態枚舉量;2)顯示常量狀態值;3)前趨狀態;4)后繼狀態。還可能需要包含節點Id標識等其他的輔助信息。顯然,這是用一種靜態的方法來生成一個菜單對象,代碼易讀性強,但各個部分相互依賴,編碼和調試比較繁瑣,需要設計者對各部分都十分清楚。最大的問題是可擴展性受限,對后續規模的增加造成一定的影響。工程實踐中,用戶的需求及隱含需求往往是復雜和不確定的。
本文的研究目的是建立一套能夠適應應用復雜性和不確定性的實現方案,為后續嵌入式系統開發提供一個工程性的解決思路。
2 可適應的嵌入式HCI
可適應的HCI是指可根據系統的計算環境或應用情境進行伴隨調節的界面??梢赃M一步區分為被動性適應和主動性適應(或自適應)。
可適應性HCI在嵌入式系統開發中有著越來越迫切的要求。通常該需求來源于2個方面,一個是用戶需求的變更;另一個是系統執行中的應用環境變化。由這2種因素出發,依據可適應性的行為模式,嵌入式HCI的可適應性從以下2個方面展開研究:
所謂靜態可適應性是指與系統靜態配置相關的可適應性,通常適應行為發生在2次系統啟動之間。這種適應的需求通常是外來的,比如用戶需求的修改,設計方案的變化。在工程中,常常出現迭代式的適應性修改,所以靜態可適應性也是一個很有現實意義的需求。這種可適應性的實現必須借助非易失性存儲器來進行,用來存儲變化后的定義及配置參數,使得順利完成適應行為。
動態可適應性是指在系統運行過程中,可以依據環境的變化進行在線自適應修改,即普適環境下的修改。通常普適設備在使用環境中遷移,引起了環境參數的強制性變化,系統的HCI與環境就會產生矛盾,因此普適策略下的自適應調整是很有必要的。依據收集到的系統狀態信息,判斷是否HCI與系統配置同步,依靠算法實時糾正系統配置來實現自適應。普適環境下的自適應特點在于動態性,只有在出現矛盾的時候才做普適調整,在設計中必須對匹配性進行考慮。
3 基于多重鏈表的嵌入式HCI
3.1 模型建立
多重鏈表在組織順序型結構數據時具有較快的搜索速度,下面給出一個基于多重鏈表的模型,每個節點扇出為4,分別指向上層節點、下層節點及左、右的鄰居節點,扇入不限。每個節點與相鄰的節點之間都有雙向連接,并且每個節點均可帶子節點進行擴展。
模型從功能上講是個層次結構,從數據模型上看是網狀結構,允許有一個以上的節點無雙親,并且一個節點可以有多于一個的雙親。每層節點的數目不固定,可視實際情況而變化。每層都是一個閉環的雙向回路,可進行水平雙向遍歷。層與層之間由父節點與長子節點雙向連接。父層節點對子層節點是一對一聯系,由父節點進入子層時在長子節點駐足;子層節點對父節點是多對一聯系,意味著由每個子節點都可回溯至父節點。由父層切換至子層的每次遍歷必須經過長子節點,然后可由長子節點依次進行水平循環遍歷,子層切換至父層則比較靈活,每個子節點均可到達其父節點。
3.2 方案實現
3.2.1 內存結構設計
節點應該具備4個域,除了標示身份外還至少應該具備指向上層父節點的指針域、指向下層子節點的指針域以及指向同層左、右兄弟的指針域。
圖1是一個簡單的HCI結構圖,從功能上看,它分為5層,第一層有5個節點項形成一個閉環,第二層閉環是第一層第一個節點的子節點組,該子節點組的第二項又有子節點組。如此下去共有5層,處在最高位置的節點其父指針為空,最低位置的節點的兒子指針為空。
?
圖1 一個簡單的HCI結構圖
3.2.2 類設計
依據模型定義如圖2所示的類對象。左邊所示是個基本的菜單節點類,除了模型中提到的幾個節點指針,還增加了幾個相關的屬性域,Id用來標識節點身份,displayValue用來存儲菜單的顯示標題,布爾成員editable指明當前節點是否可編輯,另外還增加一個ptr_functiON域,用來指向一個功能函數,該函數完成節點在接受確定消息后要做的工作。
?
圖2 菜單結點的類定義和菜單代理類定義
在節點類中還定義了幾個成員方法,與私有屬性相關的命名符合OOP的命名規定,均使用Get—Set前綴規則。除針對幾個成員屬性的方法外,還引入了另外幾個成員方法,CoUp執行向父節點的跳轉,CoDown執行向長子節點的跳轉,CoLeft和GoRight負責向左右鄰居的跳轉。
從軟件設計獨立與資源來考慮,提出一個界面代理的概念,界面代理就是基于事件驅動,處在界面與環境之間一個中間對象。外界事件的消息均由代理來接收識別,并由它調用界面元素,對界面做出改變。圖2右邊上部所示的定義的是菜單代理類MenuManageAgent。該類對象用來作為菜單體系與外界交互的媒介物,它用來記錄菜單的頭指針,菜單體系的規模以及菜單的總體狀態;初始化菜單結構,創建菜單系統并代表菜單接受外來的消息,并對消息加以識別和做出合理的響應。圖2右下是對外部消息的定義。消息的列表可以依據實際情況擴展和修正。
4 嵌入式HCI的可適應性實現
靜態可適應的實現是基于用戶主觀意圖進行的。這個過程強調人機交互,因此用戶的工作內容很重要,一般也作為靜態可適應性實現的輸入參數。而實現的技術細節相對簡單。在算法設計上,該種可適應性實現工作重點仍然放在用戶交互內容的管理上,由用戶的“交互內容”綜合系統功能可以得到界面的“變更差”,進而推導出系統HCI的具體參數集的變化。
如圖3所示,設備在使用環境中的動態可適應以系統狀態檢測開始,這是一個周期性的行為,頻率依據系統在HCI上的實時性要求而定。系統狀態檢測應該包含幾部分的工作:1)應該有監測環境參數的手段,比如傳感器、接入信號等;2)要依據特定的算法來測定這個矛盾,其中包括差異的獲取,尺度的制定。狀態檢測的結果是,是否有矛盾輸出,如果有矛盾出現的情況下,還需要做決策分析,其主要任務是基于系統現有條件是否可實現動態可適應,比如已經達到了臨界狀態時,就喪失了這種可能性。所以這里涉及到對系統資源的管理調度。下一步就是在動態適應的情況下,采用動態適應策略對系統HCI給出合適的調整,從而達到普適環境下可動態適應的目的。
?
圖3 動態自適應性算法流程
5 工程應用
5.1 工程介紹
我們在一個系列工程中采用了以下方案構造HCI的菜單體系。某公司研發一款嵌入式的數據采集產品,該產品的代碼與數據獨立存儲在兩個Flash芯片,通過采集外界的模擬量和數字量對其處理后進行輸出。產品的人機交互界面采用按鍵、LED數碼管,計算控制單元采用飛思卡爾半導體的微處理器Coldfire V2系列,該CPU基于變長RISC處理器核心,具有32位地址線和數據線以及集成的調試模塊,MAC/eMAC單元能提供高性能的品質。
嵌入式操作系統采用Nucleus PLUS,Nucleus PLUS實時操作系統是Accelerated Technology公司開發的嵌入式RTOS產品,只需一次性購買Licenses,就可以獲得操作系統的源碼。最終是以C庫的形式提供給用戶,可以選擇所需要的部分鏈入到應用程序中。具有如下特性:
1)快速響應時間:對臨界資源的檢測時間不依賴于占有該臨界資源的線程執行時間長短,一旦低優先級線程釋放掉臨界資源(不管其是否執行完),高優先級線程就會搶占運行。
2)模塊相互獨立:每個任務的執行時間和其他任務的處理時間無關。
3)較高吞吐量:隨著任務數目的增多,任務的調度時間為常數。
4)具有可擴展性:利用現有系統調用的結合可得到新的系統調用。
5.2 驗證過程
我們擬在這個項目開發中實現普適設備的嵌入式人機交互界面,在其中應用可適應性的思想。
首先是硬件設計,該產品設計了8個Ied數碼管,8個按鍵Key1~Key8。這部分設計的功用體現在兩個方面:
1)數據采集設備通過LED顯示采集的數據和處理結果;
2)用戶通過按鍵可以查看和設置設備的參數。
其次是一些必要的定義,對按鍵的功能通過項目組討論做了如表1的定義。
表1的定義給消息定義提供一個依據。按功能鍵送入一個OK消息,按取消鍵則發送了一個CANCEL消息,其他按鍵事件以此類推。于是我們便得到一個消息枚舉量的定義。
表1 按鍵定義
?
界面狀態定義。把人機交互工作分為工作、驗證和設置狀態。每種狀態用一個MenuSTatus枚舉常量表示,NORMAL表示工作狀態,CHECKI-NG表示驗證狀態,SETHNG表示設置狀態。正常工作時處于NORMAL狀態,一旦按下功能鍵會進入菜單成為驗證或設置態。
交互行為定義如下:
1)常態時默認為各通道實時數據循環顯示,有報警時,可顯示報警標識;
2)默認常態下按功能鍵進入1層菜單,按上翻鍵、下翻鍵顯示1-、2-、3-、…、14-Reset;
3)狀態2-和狀態4-可用作擴展;
4)狀態3-時,按功能鍵進入日期時間設置菜單,按上翻鍵、下翻鍵顯示日期、時間,設置好后,按功能鍵確定退出;
5)狀態4-時,按功能鍵進入參數設置菜單,按上翻鍵、下翻鍵顯示4-1、4-2、4-3……、4-19,表示通道選擇;
狀態4-x時,按功能鍵進入x通道的參數設置菜單,按上翻鍵、下翻鍵顯示4-x-O、4-x-2、4-x-3、…、4-x-8時,按功能鍵進入x通道的y(0≤y≤8)參數設置菜單,按加1鍵、減1鍵和移位可以進行參數修改操作;修改好參數按功能鍵確定退出;
6)在任一狀態時,按Key7則返回上層;
7)在任一狀態時,按取消鍵可返回常態。
然后按照上面定義的交互行為,定義菜單節點的功能函數。在菜單的創建時把函數的指針賦值給節點。該模型同樣可以用于實現通過通信進行的交互。
上述HCI的實例,不但實現簡潔,開發效率高,而且是結構開放性的,便于界面規模的控制。
6 結束語
通過工程實踐驗證,該基于可適應性考慮的嵌入式HCI方案有如下特點:
1)易于維護,在拓撲結構不變的情況下,隨按鍵或輸入的不同,數據結構易于加以修改。菜單節點可以隨實際項目需求增減成員,代理類也可隨實際需求修改。
2)開放性好,便于擴展。只要內存容量允許,菜單規模理論上不受限,并且增刪節點容易實現。菜單結構可以靜態聲明,也可以使用動態內存分配。
3)通用性強,不但適應于Led數碼管與按鍵的組合,而且適應于LCD屏幕與按鍵或觸摸屏。只要是用戶與系統交互,能產生消息驅動的地方都可以使用。
4)效率高,從根節點到任一節點的路由不需要軟件實現,由用戶交互決定。雖然是網狀模型,但對用戶而言,從功能上仍是個層狀結構,脈絡比較清楚,容易被開發人員掌握。
另外,在具體應用中,可適應性的實現還可能以混合的模式出現。
未來的研究是考察在宿主機與目標機交互的情況下,如何實現HCI方案到目標機的遷移,實現目標機HCI動態配置。
評論
查看更多