1、精选资料即時嵌入式系統之軟體合成工具設計即時嵌入式系統之軟體合成工具設計1Design of a Software Synthesis Tool for Real-Time Embedded Systems李宗演1吳宜穆2張劍平3熊博安4蔡加春1李文達1Trong-YenLeeI-MuWuChien-Pin ChangPao-Ann HsiungChia-Chun TsaiWen-TaLee1國立台北科技大學電子工程系、2大霸電子股份有限公司3國防大學中正理工學院電子工程研究所、4國立中正大學資訊工程學系摘要本文的研究重點在於發展一個具圖形化的使用者介面之即時嵌入式系統軟體合成工具,為了可描述
2、設計系統所使用之中斷處理的動作與每一個任務的即時限制,因此我們提出以中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)的方法來描述系統模型,同時提出具中斷處理能力的類似動態排程(Interrupt-Based Quasi-Dynamic Scheduling, IQDS)演算法,將中斷動作與即時的行程作有效的排程,當找出有效排程之後利用產生程式碼(Code Generation)演算法產生包含中斷相關指令的單晶片C語言程式碼。在嵌入式軟體合成工具中,我們設計出一個高親和度之圖形化的使用者介面,它提供使用者一個視窗化的設計介面,可以簡易的描繪系統模型與參數之設定
3、並內建一些常用的函式提供給系統設計者,以減少軟體設計與開發的時間。最後我們使用電腦溫度量測與四相步進馬達控制為例子來驗證本工具之正確性與方便性。關鍵詞:嵌入式系統、具中斷處理能力的類似動態排程、軟體合成。投稿受理時間: 92 年 10 月 15 日 審查通過時間: 92 年 12 月 24 日ABSTRACTIn this Thesis, we try to bridge this gap by developing a software synthesis tool with a graphical user interface for designing real-time embedd
4、ed systems. We propose an Interrupt Time Petri Nets (ITPN) model for real-time embedded software requirements modeling. ITPN can handle both interrupt behavior and real-time constraints on tasks in a real-time embedded system. An Interrupt-Based Quasi-Dynamic Scheduling (IQDS) algorithm is proposed
5、to find valid task schedules satisfying interrupt behavior specifications and real-time constraints in a real time embedded system. We use a Code Generation algorithm to produce micro-controller (8051) C program code. The graphical user interface makes our tool more user-friendly. This tool supports
6、 the Windows OS environment and can be used for system model input and easy setting of system parameters. Several common function calls also be installed into the tool for reducing development time in the system design process. Finally, we give two examples: Digital Thermometer with Micro-controller
7、 and Four-phase Stepping Motor Controller to illustrate the correctness of our methodology and the increase in productivity provided by our real-time embedded software synthesis tool. 2臺北科技大學學報第三十七之一期Keywords:Embedded System, Interrupt-Based Quasi-Dynamic Scheduling, Software Synthesis.可修改编辑壹、前言近年來由
8、於電子產品的外觀要求短、小、輕、薄,功能也要求更多樣性,除此之外更重視成本與開發時間的減少,在這些需求促使之下嵌入式系統(Embedded System)的技術不斷的開發與進步以滿足電子產品的需求。舉凡日常生活中食、衣、住、行、育、樂各方面所看到的、用到的東西,如飛機、電磁爐、數位像機、投影機、血壓計、數位溫度計和遊戲機等都為嵌入式系統1 2,它在設計方面不像桌上型電腦是由零組件組裝而成,而是以軟硬體共同設計(Hardware/Software Co-design)的方式,將要求的系統規格(System Specification)經一致化的描述(Unified Repre- sentatio
9、n),透過分析的機制將系統功能做適當的分割(Partition)成硬體與軟體部分,然後藉由軟體和硬體的合成工具將軟體和硬體合成出來,最後再將軟體與硬體結合模擬(Co- Emulation)做最後的整合與調整。嵌入式軟體合成是一個自動化的設計(Automatic Design)技術,大致上分成三個步驟,第一步驟為:利用系統模型(System Model)來描述軟體的結構;第二步驟為:根據系統模型的描述來對即時任務作排程(Schedule),進而獲得有效的系統排程,此系統排程稱之為可排程(Schedulable),最後一個步驟為:將可排程的即時任務根據系統模型所描述的軟體結構自動化的產生相對應程式
10、碼,以供嵌入式系統使用。即時嵌入式系統之軟體合成工具設計3在文獻3 4 5中,使用的系統模型中缺少對中斷的表示與描述。但實際上,微控制器的程式碼中含有中斷相關指令。因此在系統模型中應該加入對中斷指令的表示與描述,如此一來合成出的程式碼更可直接使用於微控制器中。近年來由於視窗程式設計的興起,使得人與機器的介面從文字變成圖形,這不只讓使用者更容易使用與學習。由於先前嵌入式軟體合成工具是利用文字編輯方式來描述系統模型,與使用者的親和性(User-Friendly)較差6,所以當發展嵌入式軟體合成工具時,在使用者介面(User Interface)方面,若能採圖形編輯方式將可讓使用者更容易、更直覺的編
11、輯所需的嵌入式軟體,也使維護與新增更方便。本文的研究重點著重於提出嵌入式軟體合成方法,並依此方法論發展嵌入式軟體合成工具,並且設計一個高親和度(Friendly)的使用者介面。在系統模型方面,利用派翠網路並擴增其元件,加入對中斷的表示與描述,以中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)作為系統模型,提出以具中斷處理能力的類似動態排程(Interrupt-Based Quasi-Dynamic Scheduling, IQDS)演算法根據系統模型找出有效的排程,此方法可較有系統且簡單的共用於分解自由選擇之派翠網路(Free Choice Petri Ne
12、t, FCPN)與複雜選擇之派翠網路(Complex Choice Petri Net, CCPN)找出可能路徑,然後利用產生程式碼 (Code Generation)演算法產生包括中斷指令的程式碼,最後根據這些方法設計出嵌入式軟體合成工具,並且設計一個高親和度(Friendly)的圖形之使用者編輯系統的介面。本文於第一節中簡介嵌入式系統合成工具的發展。第二節中介紹了嵌入式軟體合成工具的相關研究。第三節說明軟體合成之系統架構,包含了系統模型、系統架構與系統的設計。第四節以實例驗證,舉出電腦數位溫度量測與四相步進馬達控制的兩個實例以證明嵌入式軟體合成工具的實用性。最後為本文提出的結論與未來研究之
13、方向。貳、相關研究嵌入式軟體合成是藉由一個可行的排程方法,將行程(Process)依序排列,以滿足設計者所提出的功能要求、即時的限制與記憶體容量的限制。嵌入式軟體結構通常包括資料計算(Data Computations);和控制結構(Control Structures),其中控制結構又包含了資料相依控制(Data-Dependent Controls),如:if-then-else或while-do-loops,必須依測試值或一些資料來決定下一個運算稱之;和即時控制(Real- Time Controls),如優先權(Priority)、中斷(Interrupt)與觸發行為(Trigger
14、Actions)等,這些動作是發生於內部(Internal)或外部(External)4臺北科技大學學報第三十七之一期的事件(Events)0。對於排程而言,只包含資料計算的排程,稱為靜態排程(Static Schedule),排程中增加了資料相依控制的排程,稱為類似靜態排程(Quasi-Static Schedule),若包含即時控制的排程,就稱為動態排程(Dynamic Schedule)。嵌入式軟體合成的過程中,首先必須定義出系統模型,作為使用者描繪系統的標準,接著利用排程的方法,將行程適當的排程,最後根據排程的結果與模型的描述,映對出符合微控制器種類的程式碼。如表一所示為常見的圖形表示
15、法之功能比較,可以看出派翠網路的優勢,它是以直觀的圖形方式描繪系統,更以簡單的數學定義和數學運算作為分析系統的方法,更減少學習上的困難度7 8 9,所以在先前的研究當中3 4 5 6 10 ,都將派翠網路作為系統模型,並且根據實際需要加以變形。在11中作者提出一個以Co-design Finite State Machine (CFSM)為架構的嵌入式系統軟硬體設計工具POLIS,但是此架構並不容易的被延伸到其他一般的架構上。一般在派翠網路中決定激發順序的合成問題是一個很難的問題,所以目前的研究都是將派翠網路的模型簡化或是變形。很多的合成技術相繼被提出,在5中作者使用派翠網路的子類別為Free
16、Choice Petri Nets (FCPN),作為系統模型,並提出針對FCPN的類似靜態排程演算法。FCPN可描繪出軟體架構,並可藉由類似靜態的排程演算法,合成出程式碼,但嵌入式軟體大部分都為即時軟體,且為循環執行的程式,此模型未將即時限制(Real-Time Constraint)的特點表示出來,也無法對即時行程作排班,所以在3中,作者提出以FCPN延伸的Time Free-Choice Petri Nets (TFCPN)作為系統模型,最大的差別於系統模型的轉移上加入最早的激發時間(Earliest Firing Time; EFT)與最晚激發時間(Latest Firing Tim
17、e, LFT),其用意是限制轉移在最晚激發時間前,一定要將權杖轉到下一個位置,如此一來就可計算出的全部程式執行的時間,以便作循環執行週期的預估。在4中作者提出Time Complex-Choice Petri Nets (TCCPN),此模型移除了先前Free Choice的限制,結合了3中所提出的即時的限制,並利用Time-Extended Quasi-Static Schedule (TEQSS)的演算法,找出可排程的結果。在產生程式碼方面,在4中作者提出以多執行緒(Multi-Threads)的嵌入式軟體取代單執行緒(Single-Thread)的嵌入式軟體,其中利用互斥器(Mutex)
18、與號誌(Semaphore)觀念,可以避免在內文切換(Context-Switch)或同步發生時所產生的資料污染(Corruption)之問題,並可增加程式執行的速度。綜合以上所介紹的系統模型與排程的演算法,發現所產生的程式碼與8051規格的C語言的程式碼有些差別,因為8051的程式會直接對記憶體、暫存器或是輸出、入做存取,也會利用中斷服務程式處理一些動作,例如利用中斷來讀入按鍵值等,所以本文將派翠網路中加入對中斷的描述,以中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)作為系統的模型,並提出較有系統且簡單的共用於分解FCPN與CCPN找出可能路徑的中斷處理
19、能力的類似動態排程(Interrupt-Based Quasi-Dynamic Scheduling, IQDS)演算法。即時嵌入式系統之軟體合成工具設計5先前的嵌入式軟體合成工具之使用者介面是利用文字編輯方式描繪出所要的系統模型6,所以本文將針對系統模型,設計一個圖形描述的使用者介面,利用一個簡易的圖形介面將系統之軟體規格輸入,進而產生排程及產生所需的程式碼。參、嵌入式軟體合成工具之設計此章節將介紹本文中的嵌入式軟體合成工具所使用的系統模型、系統架構與系統設計,其中系統設計包含了使用者介面設計、排程的方法與程式碼產生的方法。一、系統模型由於嵌入式系統中需使用即時的中斷服務程式來完成一些動作,
20、所以針對此特性本文中使用的系統模型為派翠網路的延伸,在此稱為中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN),如圖一所示,其中包含了轉移激發的即時限制,與TFCPN和TCCPN最大的差別在於加入了一個中斷處理的表示,相關定義如下:定義一:一中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)之結構由5個部分組成的,其中: ,為所有位置所構成的有限集合。,為所有轉移所構成的有限集合,其中和。,為輸入函數,是一個由轉移映射至其一群輸入位置的函數,表示為。,為輸出函數,是一個由轉移映射至其一群輸出位置的函數,表示為。,這裡的tT,為
21、最早的激發時間(Earliest Firing Time, EFT);最晚的激發時間(Latest Firing Time, LFT);則代表致能(Enable)那一類中斷,以8051為例包含了五種中斷源,總共有三十二種組合,故,如表一所示。圖一中斷式時間派翠網路定義二:狀態值(Marking)在派翠網路中,為位置所構成有限集合的函數,此n=|P|且每一個,也就是說是於穩態時上的權杖數目,通常標註表示資源的數目,而為系統的初始狀態。一個加入狀態值的派翠網路表示為。定義三:選擇區塊(Choice Block)在本文中簡稱CB,是由一個Free Choice或是一個6臺北科技大學學報第三十七之一期
22、Complex Choice所構成的,包含了一組輸入轉移(如圖二中的t1、t4與t5)與一組輸出轉移(如圖二中的t2、t3、t6、t7與t8)。若一個輸出轉移包含來自不同選擇位置(Choice Place)的方向弧線,代表此轉移需同時滿足兩種或兩種以上的條件才可被激發,如圖二中當p2選擇no與p3選擇yes時,t7才會被激發。表一8051致能中斷表致能8051中斷種類除能外部中斷0外部中斷1計時器中斷0計時器中斷1串列埠中斷01234567891011121314151617181920212223242526272829303132No DefineNo DefineNo DefineNo
23、DefineNo DefineNo Define圖二選擇區塊(Choice Block, CB)二、系統架構嵌入式軟體合成工具之系統架構如圖三所示,其主要部分可分成三個步驟,第一步驟是將設計者所描繪出的中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)轉換成一個關係表,此關係表紀錄了每一個方向弧線(Directed Arc),一個方向弧線是指由位置(Place)指向轉移(Transition)或是由轉移指向位置,並且從關係表判斷出初始位置(Initial Place)、結束位置(End Place)與選擇區塊(Choice Block);第二步驟是利用第一步驟
24、中所建立的關係表與相關資訊藉由具中斷處理能力的類似動態排程(Interrupt-Based Quasi- Dynamic Scheduling, IQDS)演算法找出所有符合即時與執行週期限制的可排程序列;最後步驟是當所有的排程序列符合即時限制與執行週期後,根據第一步驟中所建立的關係表與相關資訊並利用產生程式碼(Code Generation)演算法產生含有中斷指令的程式碼。即時嵌入式系統之軟體合成工具設計7圖三嵌入式軟體合成工具之系統架構三、系統設計本文中所發展的嵌入式軟體合成工具主要包含了三種設計,為使用者介面設計、排程方法與程式碼產生之方法。系統設計流程如圖四所示,為了符合嵌入式軟體的中
25、斷行為與即時的限制,所以本文提出以派翠網路延伸出的中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)作為系統的模型。為了要改善先前嵌入式軟體合成工具以文字編輯系統模型的親和度較差的缺點6,因此本文以Microsoft Visual Basic 6.0建立一個圖形編輯系統模型的介面,讓使用者可以快速而且容易的使用圖形方式建立系統模型。接著提出具中斷處理能力的類似動態排程(Interrupt-Based Quasi-Dynamic Scheduling, IQDS)演算法做系統排程及產生程式碼(Code Generation)演算法產生8051規格的C語言,結合圖
26、形化的使用者介面,構成嵌入式軟體合成工具。圖四系統設計流程使用者介面設計為了讓使用者方便且快速的描繪出所要的嵌入式軟體,我們利用Microsoft Visual Basic 6 建立了一個圖形編輯的使用者介面,其介面包含了三個視窗如圖五所示:基本元件編輯視窗:視窗最右邊之工具列中的按鈕其功能依序由上而下為在此視窗產生轉移、位置、方向弧線、刪除元件、復原動作,並可對產生的位置上方輸入名稱,且於轉移上方也可輸入最早的激發時間與最晚的激發時間、允許中斷種類與名稱更可在方向弧線上方寫入權值重(Weight)。檢視排程結果視窗:設計者編輯完後,按下第六個按鈕後,將排程出所有可能排程序8臺北科技大學學報第
27、三十七之一期列,並可利用此視窗內的時間軸看出是否超出設計者要求程式的執行週期時間。產生程式碼之視窗:排程完後,當每一個排程序列都滿足程式執行的週期時間時,按下第七個按鈕後,將會在產生程式碼視窗中產生設計者所要的程式。圖五嵌入式軟體合成工具之使用者介面在此編輯工具中也提供讓使用者編輯副程式與中斷服務程式,且可以增加、刪除與修改,為了讓使用者減少對硬體低階的設定與編輯副程式的時間,所以在工具中內建一些常用的副程式供設計者直接使用,如圖六所示。圖形編輯的使用者介面也提供讓使用者定義每一個轉移所代表的動作,此動作可能是副程式、時間延遲程式、計算過程與輸入、輸出程式。在欲定義的轉移上方連續點兩下即出現如
28、圖七所示的視窗供使用者做轉移之功能選擇。排程之方法本文提出以具中斷處理能力的類似動態排程(Interrupt-Based Quasi-Dynamic Scheduling, IQDS)演算法針對中斷式時間派翠網路(Interrupt Time Petri Nets, ITPN)的系統模型找出有效排程。IQDS演算法的觀念是將ITPN分成兩個部分,為靜態排程(Static Scheduling)部分,就是程式結構中的循序結構,與選擇區塊(Choice Block, CB)部分,就是程式結構中的選擇結構的部分,如圖八所示。靜態排程中的每一個轉移只能有一個輸入方向弧線與一個輸出方向弧線,而選擇區塊可
29、能是一個Free Choice或是Complex Choice。圖六副程式之編輯說明圖七轉移之功能選擇圖八將ITPN分成兩個排程部分本系統即時嵌入式系統之軟體合成工具設計9具中斷處理能力的類似動態排程(Interrupt- Based Quasi-Dynamic Scheduling, IQDS)演算法如表二所示。表二具中斷處理的類似動態排程演算法表二中(1)是從系統模型中找出初始位置、結束位置與選擇區塊,表二中(2)為找出每一個選擇區塊之輸出轉移的互斥關係並建立各自的互斥表(ExTable),表二中(3)是根據互斥表找出每一個選擇區塊路徑(Choice Block Set, CBS)。如圖十
30、所示為一個選擇區塊找出選擇區塊路徑的步驟。圖九中的步驟一是根據選擇區塊之輸出轉移間的激發(Fire)關係所建立的,例如選擇區塊一所建立的互斥表是因為當t2激發的時候t3是不會被激發的,同理當t3被激發時t2是不會被激發的;步驟二中之路徑表是根據互斥表所決定,其中“0”代表不激發(Not Fire),而“1”代表被激發,例如圖九中的選擇區塊一根據互斥表可知當t2被激發時t3不能被激發,所以在路徑表中只有“01”與“10”項目符合互斥條件,其中“01”代表t3而“10”代表t2;步驟三中根據路徑表中符合互斥條件的項目轉換成選擇區塊路徑,所以在圖九中選擇區塊一總共找出二組選擇區塊路徑,而選擇區塊二則
31、找出四組選擇區塊路徑。圖九找出選擇區塊路徑的過程10臺北科技大學學報第三十七之一期如圖十中的選擇區塊一共可找出三組選擇區塊路徑,所以經第一次擴充後從原本一條路徑擴增為三條路徑,表二中(9)至(19)將目前每一條路徑當中最後一個轉移開始尋找靜態排程路徑,表二中(10)當路徑尚未遇到結束位置將繼續尋找路徑的動作,表二中(11)與(12)的動作與(4)相同,表二中(13)至(15)為當回傳值為0時表示此路徑最後遇到一個結束位置,且找尋靜態排程路徑與目前的路徑結合,最後將路徑輸出,表二中(16)與(17)是判斷若為最後一條路徑時將結束排程,表四中(18)與(19)為回傳值不為0時表示此路徑遇到一個選擇
32、區塊將重複表二中(9)至(20)的動作。例如圖十中當經第一次擴充後,根據每一條路徑之最後一個轉移找出排程路徑,其中第一、二條路徑所找出的為靜態排程路徑,而第三條路徑因遇到選擇區塊,所以必須在做一次擴充的路徑,所以最後有四條排程路徑輸出。當找出所有排程路徑後,由表二中(21)檢查每一個轉移與路徑是否滿足即時的限制,若滿足即時限制則由表二中(22)產生對應的程式碼。表二類似動態排程演算法所找出來的路徑必須再符合即時時間之限制,經修改3之演算法並加入具有處理中斷控制之演算法列於表三。從演算法中可以找出不符合即時時間與中斷產生限制的排程序列,其限制包括每一個排程序列的執行時間是否小於系統的執行週期(P
33、eriod)與每一個轉移的最晚激發時間內是否足夠讓允許的中斷種類之中斷服務程式執行,若全部排程序列滿足即時限制則稱此系統為可排程(Schedulable)的系統。圖十路徑擴充的範例表三即時限制(Real-Time Constraint)演算法表三中(1)至(10)是檢查每一條路徑與路徑中的每一個轉移是否滿足即時的限制,表三中(3)為呼叫函式的動作,引數為轉移的代號且回傳值為布林值,其功能是檢查每一個轉移是否滿足即時的限制,表三中(4)至(6)當回傳值為真時,將此轉移的最晚的激發時間(Latest Firing Time, LFT)加於此路徑的時間當中,若為假時,則此模型為不可排程,表三中(7)
34、至(10)則是檢查每一條路徑是否滿足即時的限制,小於系統的值執行週期時間,表三中(11)至(14)是檢查每一個轉移所允許的中斷服務時間是否小於最晚的激發時間與最早的激發時間(Earliest Firing Time, EFT)的差值,若成立則回傳值為真,反之為假。即時嵌入式系統之軟體合成工具設計11表四為產生程式碼(Code Generation)演算法,如表四中的(1)至(5)是判斷所產生的程式類別,其中(3)是將整個主程式當成一個反覆的程式結構。表四中(6)為呼叫函式的動作,引數為轉移的代號且回傳值為選擇區塊的代號,其動作為依序列印出靜態排程路徑中每一個轉移之中斷致能暫存器設定與代表的程式
35、碼,表四中(7)當不為0代表遇到選擇區塊,表四中(8)之“count”代表目前產生到哪一條路徑,表四中(9)與(10)是將選擇區塊的分歧路徑記錄起來,表四中(11)為列印出程式的選擇結構,表四中(12)與(6)是一樣的動作,表四中(13)與(14)假如回傳值為0時表示此路徑已完成輸出,接下來要處理下一路徑,表四中(15)至(19)是擴增所要接下去尋找轉移,表四中(20)若處理到最後一條路徑時停止,表四中(21)其將所有的副程式、中斷服務程式與主程式結合起來,完成全部的程式碼的輸出。表四產生程式碼(Code Generation)演算法肆、實例驗證嵌入式系統之軟體使用IPTN模型描述後,經過排程
36、後,可以使用數學模式驗證如SGM驗證工具12,另一種驗證方式以實際系統驗證平台為之,本文為求具體選用後者之方法來做驗證。我們將提出電腦數位溫度量測與四相步進馬達控制兩個例子作為本文的實例驗證。嵌入式軟體合成工具所合成出的兩個實例程式是符合Keil公司的Keil C51編輯器所要求的C語言語法,而系統的單晶片是使用12臺北科技大學學報第三十七之一期ATMEL公司89C51,其內部含有4K記憶體,提供四組輸出入埠和提供五個中斷源。一、電腦數位溫度量測在此實例當中,將利用單晶片、類比數位轉換電路與溫度感測器電路完成溫度量測的功能,並利用單晶片的串列埠傳送至個人電腦,其硬體方塊圖如圖十一所示,其中溫度
37、感測電路包括溫度感測器(AD590)與放大電路,類比/數位轉換電路(ADC0804)是將類比訊號轉換成數位信號後傳送給單晶片,且利用單晶片於七段顯示器上顯示量測溫度,並利用串列埠傳送給個人電腦。此實例中,我們將利用外部中斷0、計時器中斷0,其中類比/數位轉換電路會利用外部中斷0告知單晶片已將類比訊號轉換成數位訊號,而後透過輸出埠0將數位訊號傳給單晶片,而利用計時器中斷0將數位溫度訊號顯示於四個七段顯示器上,最後再利用串列埠將數位溫度數值透過RS232傳送給個人電腦中。圖十一電腦數位溫度量測之硬體方塊圖首先在此實驗中我們一開始要設定所使用的中斷類型之工作模式,圖十二為中斷工作模式選擇與設定視窗,
38、在上半部是設定外部中斷0(INT0)與外部中斷1(INT1)的觸發方式,若為點選則設定為負緣觸發,在此實例中設定外部中斷0為負緣觸發的方式。中間部分是設定計時器/計數器0與計時器/計數器1的使用模式與填入計時的時間,在此步驟中設定計時器0工作於模式1,且設定時間為5000個脈波時間。下半部是設定串列埠工作於模式1,由於串列埠工作於模式1與模式3時傳送的鮑率(Baud Rate)是利用計時器來完成的,所以此時計時器1將是停用的。圖十二中斷工作模式之選擇與設定如圖十三所示為外部中斷0的系統模型,p5為中斷開始狀態,t4的功能是將取樣次數減一,p6為判斷取樣次數是否為0,t5的功能是重設取樣次數,p
39、7為等待讀取數位資料狀態,t7的功能是讀取數位資料,p9為等待轉換的狀態,t9的功能是將電壓的數位轉換成溫度數值,t6的功能是不作動作(Undo),p10與p8為結束狀態,由下方的時間軸中可以得知此中斷服務程式最多將花費22個單位時間。如圖十四所示為計時器中斷0的系統模型,p11為中斷開始狀態,t9為重設計時器的計時初值,p12為等待顯示的狀態,t10的功能是將偵測到的數值在四個七段顯示器上顯示,p13為結束狀態,此中斷服務程式最多將花費12個單位時間。即時嵌入式系統之軟體合成工具設計13圖十三外部中斷0之系統模型圖十四計時器中斷0之系統模型如圖十五為電腦數位溫度量測之系統模型與產生程式碼的結
40、果,p1為系統開始狀態,t1的功能是設定鮑率的步驟,p2為等待開始轉換的狀態,t2的功能是使類比/數位電路開始轉換,p3為等待傳送狀態,t3的功能是透過串列埠將偵測到的數值透過RS232傳送給電腦。在圖十五中每一個轉移都允許外部中斷0與計時器中斷0的發生,所以每一個轉移的最晚的激發時間(Latest Firing Time, LFT)與最早的激發時間(Earliest Firing Time, EFT)的差值時必須大於34個單位時間,在本實例中每一個轉移都符合此要求,且系統執行週期至少為125個單位時間,若要求大於125個單位時間,則此系統為可排程系統,最後可以按下視窗右邊由上面算起的第七個按
41、鈕便可以產生對應的程式,產生的結果如圖十五中所示。圖十五電腦數位溫度量測之系統模型與產生程式碼的結果由於視窗大小的關係,無法一次顯示所有電腦數位溫度量測程式,所以將產生的程式碼列於表五中。表五為電腦數位溫度量測之程式碼,其為程式的初步架構,還須以手動方式加入變數的宣告、巨集的定義和選擇結構中的條件值(如表五中的p.6)等細部程式碼,完成後將程式碼經過C編譯器編譯成目的碼在經連結器產生可執行檔,最後將此執行檔燒入6 10中所發展的模擬平台(Emulation Platform)中執行,此模擬平台包括一個微控制器(89C51)14臺北科技大學學報第三十七之一期提供軟體執行、FPGA晶片提供硬體模擬
42、與一些輸出入元件等。表五電腦數位溫度量測之程式碼產生結果二、四相步進馬達控制四相步進馬達控制實例之硬體方塊圖如圖十六所示,其中利用單晶片系統經由輸入電路控制馬達正轉、反轉與停止,並透過外部中斷0與外部電路達到加速與減速的控制,且利用計時器0偵測正轉、反轉與暫停的按鍵值與計時器1產生脈波控制步進馬達的轉動。其中嵌入式的系統軟體將存在單晶片的記憶體中。四相步進馬達激磁的方法可參考2。圖十六四相步進馬達控制之硬體方塊圖在此實例中我們一開始要設定所使用的中斷類型之工作模式,圖十七為中斷工作模式選擇與設定視窗,設定外部中斷0為負緣觸發,計時器0設定為2000個計時脈波,且工作於模式1,而計時器1其計時脈
43、波值為一變數,且工作於模式1,改變變數可以控制輸出脈波的數量,以控制馬達轉速。圖十七中斷工作模式之選擇與設定如圖十八所示為計時器中斷0之系統模型,p9為中斷開始狀態,t8為重設計時器0之初值,p10為等待讀入按鍵值狀態,t9讀入按鍵值,p11為中斷結束狀態,此中斷服務程式最多將花費8個單位時間。即時嵌入式系統之軟體合成工具設計15即時嵌入式系統之軟體合成工具設計15圖十八計時器中斷0之系統模型如圖十九所示為計時器中斷1之系統模型,p12為中斷開始狀態,t10為重設計時器的計時初值,t11將檢查計數中斷次數值減1,p14為判斷是否以中斷100次,t12重設計數中斷次數值,p15為等待控制馬達狀態
44、t14步進馬達正、反轉與速度控制,t13的功能是不作動作(Undo),p16與p17為結束狀態,此中斷服務程式最多將花費15個單位時間。圖十九計時器中斷1之系統模型圖二十所示為外部中斷0之系統模型,此系統模型的選擇區塊為一個Complex Choice所構成的,p18為中斷開始狀態,t15為讀取按鍵值,t16為檢查是否為最高速,t17為檢查是否為最低速,p19為判斷按鍵值為加速或減速,p20為判斷是否為最高速,p21為判斷是否為最低速,若按鍵值為加速且此時不為最高速時t19將步進馬達加速一級,若按鍵值為減速且此時不為最高速時t20將步進馬達減速一級,p22、p23、p24與p25為結束狀態。
45、圖二十外部中斷0之系統模型在圖二十一為四相步進馬達控制之系統模型,t1為讀入按鍵值,p2為判斷按鍵值,t2與t3為啟動馬達(激發計時器1),t4為將步進馬達停止 (停止計時器1),p3、p4為步進馬達為轉動狀態,t5使步進馬達正轉,t6使步進馬達反轉,p6、p7與p8,為結束狀態。在圖二十一中每一個轉移都允許外部中斷0、計時器中斷0與計時器中斷0的發生,所以每一個轉移的最晚的激發時間(Latest 16臺北科技大學學報第三十七之一期Firing Time, LFT)與最早的激發時間(Earliest Firing Time, EFT)的差值時必須大於31個單位時間,在本實例中每一個轉移都符合此要求,且系統執行週期至少為105個單位時間,若要求大於105個單位時間,則此系統為可排程系統,最後可以按下視窗右邊由上面算起的前七個按鈕便可以產生對應的程式,產生的結果如圖二十一所示。由於視窗大小的關係,無法一次顯示所有四相步進馬達控制程式,所以本文將此實例的產生程式結果置於表九中。圖二十一四相步進馬達控制之系統模型表九為四相步進馬達控制之程式碼,也為程式的初步架構,必須以手動方式加入變數的宣告