Event-Driven(或 Event-Trigger)的架構研究,通常伴隨嵌入式系統與控制的主題出現,我們以「嵌入式控制系統(Embedded Control Systems)」來泛指相關的研究主題。目前,在 embedded control system 的研究領域中,以 event-trigger 和 feedback scheduling 的技術為主;embedded control system 目前是 pervasive computing 的當紅題目。相關的研究,可在 [Feng XIA] 的網站中找到許多有用的 paper,建議可先由 "Event-Triggered Feedback Scheduling of Embedded Control Systems [1]" 此篇 paper 著手,以了解更多這方面的最新研究。
不過,我的目的並不是在了解 embedded control system 的設計理論,而是希望由相關的研究文獻中,找到一些適合「顯示與互動式」的嵌入式軟體架構。大略分享一下目前的初步研究如下。
互動是指使用者與機器的互動,而我想要的架構在於能簡化與有效設計「顯示(GUI)與互動(user interaction)」的軟體;其中,使用者的輸入或點擊(即互動),都可以表示成 event。因此,在人機界面的設計層,我們可以想辦法把整個人機界面表示成一組事件,並做細分。
根據 [1] 所提出的 event-triggered feedback scheduling structure 基礎架構,feedback scheduler 分為 event logic(time-triggered)與 scheduling algorithm(event-triggered);其中,time-trigger 是以一段固定的時間間隔(time interval)來觸發執行,並發出 event-trigger 請求給 scheduling algorithm。另外,此架構中,real-time control tasks 共用 CPU。
根據 [1] 的說明,feedback scheduler 的目的在於有效地排程 real-time control tasks,並且根據 [1] 的摸擬與結論得到,event-driven 的架構似乎能取得較佳的 real-time control 能力。以 event-driven 的基礎來做 real-time control 或許會比較容易規劃與測試整個系統,由於,我們只需要在特定事件被觸發(驅動)後,在規定的到期時間(deadline)內做完 control tasks 的工作即可達到軟即時(soft real-time)的要求,不管到期時間是長是短(microseconds, seconds or minutes),都不必像以往的 real-time system(or time-triggered)實作,必須強迫 task 在一個標準的時間內做完,因此,較容易實作出可接受的即時系統。
更進一步,甚致可以讓不同的 control tasks 定義不同的 deadline。目前,我針對相關的 event-driven & real-time control 理論架構與觀念,正設法簡化太過複雜的理論架構,或是太過華麗不切實際的理論基礎,希望能擬出一套精簡的 event-driven 的軟體架構。此架構的原則與目的與大家分享如下:
1. 必須夠簡單、精簡,程式碼要「少」;
2. 必須易於實作;
3. 適合應用在嵌入式系統的使用者互動軟體設計上;
4. Full user-space architecture, based-on POSIX threads;
5. 可以很容易套用,縮短「行前教育」時間;
6. 設法以「definition」或「generation」方式勾勒框架(framework),而不是以程式實作(implementation)方式寫框架。
7. 特定使用在顯示與互動的嵌入式軟體,所以改用 "acceptable time" 來取代 "real-time";希望換個 term 來區別二者的差異;
8. ...(more)
對於使用者互動與顯示的應用,其實比較容易設計基礎架構,但是我希望程式碼方面可以越簡化越好,所以決定 re-write 我的 prototype ;-)
參考資料
1. Feng Xia, and Youxian Sun: Event-Triggered Feedback Scheduling of Embedded Control Systems. Proc. 1st National Conference on Pervasive Computing, Kunming, China, Oct. 2005, pp.660-666.