單片機作業系統的模塊化實現方法
2023-04-28 06:02:56
專利名稱:單片機作業系統的模塊化實現方法
技術領域:
本發明涉及通信自動化和控制領域,具體涉及在單片機彙編作業系統中作業系統和應用進程的實現方式。
背景技術:
在通信領域、自動化和控制領域中,系統的控制往往分為多級控制,而單片機例如8031/8051等的彙編系統又常用作子系統的控制,用來處理諸如單板級子系統的工作。在8031/8051子系統中,它的作業系統和應用程式結構安排是否合理對於提高子系統的安全性、可靠性起了重要的作用,同時也可以減少應用程式設計的複雜度,使得應用程式的實現更加簡易,可讀。
現有的8031/8051彙編系統,還沒有一個現成的作業系統專門用於系統控制。整個子系統的控制全部由應用程式完成,一方面它要完成所有作業系統的功能,另一方面又要完成應用程式的功能,兩者完全融合為一體。這樣的實現方式增加了系統的複雜度,同時也不利於系統的擴充和應用。在一個普遍應用8031/8051彙編系統作為子系統控制的作業系統中,存在多個子系統,而每個子系統又必須完成一套完整的作業系統功能。如在一個採用8031/8051彙編系統作為子系統控制的交換機系統中,它的子系統類型很多用戶子系統、雙音多頻子系統、交換網子系統、多頻互控子系統、中繼子系統、測試子系統等,一方面這些子系統需完成的應用功能很複雜,另一方面它又要完成作業系統中時鐘控制系統、內存管理系統、消息調度系統及子系統和主控系統進行消息通訊等功能。如果所有這些功能全部都由應用程式來完成,會使得應用程式非常複雜,很容易出錯,同時對子系統的擴充也很麻煩,每增加一項子系統或子系統功能,都要對系統結構做出調整。另外對於維護也很難,畢竟系統太複雜了,它既有來自作業系統的,又有來自應用程式的。
發明內容
本發明的目的在於提供一種單片機作業系統的模塊化實現方法,適合於所有子系統的獨立的作業系統,同時給應用程式提供了標準的接口,使得應用程式只關注於具體應用的實現即可。
本發明的目的是這樣實現的本發明公開了一種單片機作業系統的模塊化實現方法,用於對主控系統與子系統組成的控制系統中的子系統進行控制,包括設置系統調度的步驟,用於完成任務的調度功能,通過消息的觸發對應用進程進行調度,同時完成存放消息的內存緩衝區的管理工作;設置中斷處理步驟,用於完成中斷處理功能,通過內部時鐘周期性地產生中斷,在中斷裡對中斷任務進行周期性調度;設置定時掃描步驟,用於完成時鐘管理功能,為用戶提供定時和定時取消的服務;設置消息通訊的步驟,用於完成進程間的消息通訊,提供子系統內進程間的通訊及子系統與主控系統進程間的通訊。
所述設置系統調度的步驟包括對系統環境進行初始化工作,對時鐘數據區進行處理,根據消息及進程調度表對應用進程進行調度;所述設置中斷處理步驟包括保存中斷環境,根據中斷任務周期性掃描控制表對任務進行調度,退出中斷時恢復中斷前的環境;所述設置定時掃描步驟包括根據進程控制進行定時器的設定,在每次中斷處理中,簡單地置一個調度標誌;每次掃描定時數據區前,先檢查該標誌是否已置上,如已置上,則對該標誌清0並對定時數據區進行掃描處理;否則不處理。
所述設置消息通訊的步驟包括時鐘級任務和基本級進程間進行通訊,基本級進程間相互通訊,子系統和主控系統進程間進行通訊;系統處理時首先需要確定是子系統內進程間的通訊還是子系統和主控系統進程間的通訊。
所述初始化工作包括設置堆棧起始地址、中斷定時系統的初試設置、寄存器組的設定、系統控制字的設定,建立消息調度隊列、空閒內存管理隊列、準備打包隊列、消息包發送隊列,初始化定時器數據區。
所述對時鐘數據區進行處理包括檢查定時器定時是否到,如果是,則給設置定時器的進程產生定時消息。
所述定時消息被調度前,檢查定時器數據區的校驗值和當時定時器中的校驗值是否相同。
所述調度進程表、周期性掃描控制表、中斷任務調度表存儲於與作業系統存儲地址不同的存儲空間。
所述的系統調度還包括應用進程執行完畢,將所述消息掛入空閒隊列,並重新開始時鐘數據區處理。
所述保存中斷環境是採用壓棧的方式,保存中斷寄存器、中斷向量、基本級操作選用的寄存器組,另外還需切換寄存器組,並重新設置中斷時間,以備下次中斷的產生。
所述周期性掃描控制表由多個字節組成,一個字節的一位代表一個需進行處理的任務。
所述中斷任務包括每次中斷掃描,只調度周期性掃描控制表的那個字節中需調度的任務,下一個中斷到來時則掃描調度表中下一個字節中需調度的任務,對周期性掃描控制表進行循環調度。
所述對定時數據區進行掃描處理包括定時器加1操作,當定時器值滿則根據數據區中保留的進程號產生超時消息,並將校驗值帶入產生的消息中以備處理。
所述時鐘級任務和基本級進程間的通訊為單向的通訊方式,包括系統申請一個空閒的內存區,在數據區中填入需接受該消息的進程、發送的消息類型、消息的長度和消息內容,並將該消息掛入消息調度隊列,等待調度系統將該消息發送到相應的進程。
所述基本級進程間的相互通訊為雙向通訊方式,包括系統申請一個空閒的內存區,在數據區中填入需接受進程、發送進程、消息類型、消息的長度和消息內容拷貝到消息區中,並重新申請另一個新的內存區,將上個消息的地址存入消息內容區,將當前消息的地址作為消息內容保存下來,作為發送消息發送到負責打包、拆包的進程處。
所述子系統和主控系統進程間的通訊通過串口通訊或者採用與外部共享內存區的方式。
所述與外部共享內存區的方式包括兩部分基本級的進程處理,用於將發送主控系統的消息內容進行打包以便在一個數據包中存放更多的消息;接受主控系統來的消息,對消息包進行拆包,並將消息發送到接受進程;對共享內存區的讀、寫操作,用於完成和主控系統間消息數據包可靠性傳輸。
所述應用進程可通過調用作業系統提供的原語完成定時器的設定與取消、消息的發送與接收。
本發明降低了所述子系統的複雜程度,從功能和結構上把作業系統和應用程式完全分離開來,大大提高了普遍應用8031/8051等單片機彙編系統作為子系統控制的多級系統的效率。
圖1為本發明的各個系統模塊示意圖;圖2為本發明的調度系統模塊的實現流程;圖3為本發明的中斷系統模塊的實現流程;圖4為本發明的定時系統模塊的實現流程;圖5為本發明的定時系統模塊中定時器設置流程;圖6為本發明的定時系統模塊中定時器取消流程;圖7為本發明的通訊系統模塊中時鐘級任務和基本級進程間的通訊流程;圖8為本發明的通訊系統模塊中基本級進程間的通訊和子系統內與主控系統內進程的通訊流程;圖9為圖8中本發明對消息進行打包和拆包的流程。
具體實施例方式
首先介紹8031/8051彙編系統中作業系統的實現原理,然後介紹提供給應用程式應用的接口和應用程式的結構。
圖中涉及的步驟如下步驟21環境初始化化步驟22對定時器數據區進行處理步驟23判斷調度隊列是否為空步驟24判斷是否為超時消息步驟25判斷校驗值是否正確步驟26取出隊列中的消息,根據進程調度表進行調度步驟27將消息歸還空閒內存管理隊列步驟31保存中斷環境步驟32找到中斷任務調度表的需處理的字節,準備處理第0位任務步驟33判斷當前任務是否需調度步驟34取出中斷任務調度表進行調度步驟35判斷是否所有任務全部調度步驟36找任務控制字節中的下一位步驟37通過彈棧恢復寄存器組、中斷向量、中斷寄存器、切換回原先的寄存器組步驟38退出中斷步驟41判斷定時標誌是否置上步驟42對該標誌清查步驟43判斷當前數據區是否設置了定時步驟44定時器定時值加1步驟45判斷定時時間是否滿步驟46產生超時消息,並將消息掛入消息調度隊列步驟47判斷是否所有定時均處理步驟48找到下一個定時器數據區步驟51根據定時器找到該定時器的數據區步驟52將定時器值取反後填入定時器值區域,並將設定定時器的進程號填入步驟61根據定時器找到該定時器的數據區步驟62將該定時器的定時器值區域清0,並將該定時器的校驗碼加1步驟71申請一個空閒的內存區步驟72在緩存區中填入需接受該消息的進程、發送的消息類型、消息的長度和消息內容步驟73該消息掛入消息調度隊列步驟81判斷是否是子系統內的消息步驟82申請一個空閒的內存區,將接受進程、發送進程、消息類型、消息長度,消息內容拷入步驟83該消息掛入消息調度隊列步驟84申請一塊空閒內存區,將接受進程、發送進程、消息類型、消息長度和消息內容填入步驟85重新申請另一個新的內存區,將當前消息的地址作為消息內容保存下來,作為發送消息發送到負責打包、拆包的進程處步驟91判斷當前消息類型步驟92將消息掛入準備打包隊列步驟93判斷當前是否允許打包步驟94置不允許打包,並申請一空閒內存區步驟95從準備打包隊列中取出消息,並進行打包,歸還內存緩衝區步驟96判斷包是否已滿步驟97判斷準備打包隊列是否為空步驟98判斷包是否可裝下當前消息步驟99將數據包掛入消息包發送隊列步驟101將消息包拆包,並掛入消息調度隊列步驟102判斷當前是否允許打包步驟103置不允許打包,並申請一空閒內存區步驟104從準備打包隊列中取出消息,並進行打包,歸還內存緩衝區步驟105判斷包是否已滿步驟106判斷準備打包隊列是否為空步驟107判斷包是否可裝下當前消息步驟108將數據包掛入消息包發送隊列一、作業系統的構成作業系統分為以下幾個方面,見圖1調度系統14、中斷系統11、定時系統13、通訊系統12,下面會詳細介紹每個系統的實現原理。
8031/8051彙編系統不同的指令執行時間不同,一般按照雙字節指令執行時間來計算,每個指令執行需兩納秒,如中斷處理按十毫秒計算,即所有的中斷任務處理必須在十毫秒內完成,也就是說最多可執行五千條指令,所以應用處理必須儘可能快,作業系統的處理也這樣。因此,下面系統各功能的實現均需考慮執行的效率,特別是中斷處理不能佔用太多時長。
1、調度系統系統中對所有程序的處理分成兩個優先級別一個是處理消息的進程,它的優先級別低,稱之為應用進程基本進程15,它可以被高優先級的時鐘任務中斷;另外一個是在時鐘中斷中處理的程序,它的優先級別高,稱之為應用進程中斷任務16,見圖1。
在8031/8051彙編系統中,系統所做的工作包括兩方面一方面對硬體進行周期性的掃描,將掃描得到內容進行處理並上報主控系統,另一方面接受主控系統傳遞下來的消息,將消息傳送到相應的應用進程去執行。對所有的數據通訊採用消息傳遞的處理方式,而不採用共享數據區的方式。對在基本級應用進程間的通訊或同主控系統進程間的通訊均採用消息通訊的方式;而在中斷處理中,掃描硬體所得到的信息也通過消息的方式發送到相應的基本級進程進行處理。
系統調度首先對環境進行初始化工作,這其中包括設置堆棧起始地址、中斷定時系統的初試設置、寄存器組的設定、系統控制字的設定,建立消息調度隊列、空閒內存管理隊列、準備打包隊列、消息包發送隊列,初始化定時器數據區,步驟21。初始化工作完成後,對定時器數據區進行檢查,步驟22,用以發現是否有定時器定時到,如果有,則給設置定時器的進程產生定時消息。隨後檢查消息調度隊列中是否有消息存在,如有則進行調度,需根據進程調度表調度相應的進程,並把該消息通過寄存器傳送給應用進程進行處理,步驟23。還包括判斷該消息是否為超時消息,步驟24。在應用進程執行完畢後,將該消息掛入空閒內存管理隊列,並重新開始掃描定時器數據區,步驟27。對定時消息進行調度前,步驟26需進行特別的檢查,檢查定時器數據區中定時器的校驗值和當前定時器中的校驗值是否相同,步驟25,以防止定時消息掛入消息調度隊列後用戶又取消了該定時器。
在不同的子系統中,系統調度的應用進程不同,因此將進程調度表放在和作業系統不在同一處的程序存儲空間,從而使得作業系統具有獨立性。
2、中斷系統在中斷處理中,首先要保存中斷環境,步驟31,使得在中斷處理結束退出中斷時,能夠繼續進行中斷前的處理。環境的保存採用壓棧的方式,要保存的中斷環境包括中斷寄存器、中斷向量、基本級操作選用的寄存器組,另外還需切換寄存器組(即在中斷處理中和調度進程處理中採用不同的寄存器組),並重新設置中斷時間,以備下次中斷的產生。
在上述環境準備好以後,按照周期性掃描控制表進行調度。周期性掃描控制表是這樣的一種表,它由多個字節組成,一個字節的一位代表一個需進行處理的任務,這樣共有八個任務可進行處理。相應的存在一個中斷任務調度表,對這8個任務可進行調度。每次中斷掃描,只調度周期性掃描控制表的那個字節中需調度的任務,下一個中斷到來時則掃描調度表中下一個字節中需調度的任務,對周期性掃描控制表進行循環調度。對每個任務的處理並不是每次都需要進行調度,而是根據實際的需要,對表中的每個任務的調度識別,用「0」和「1」來進行區分,某一比特為「0」,則該比特所對應的任務在本次中斷中無需調度,而為「1」的比特所對應的任務則需調度。這樣可以根據需要控制不同任務的調度周期,如每次中斷調度一次、每隔一個中斷調度一次、每隔四個中斷調度一次、每隔十個中斷調度一次等。
中斷任務處理的周期性掃描控制表可以是如下結構第7 6 5 4 3 2 1 0位
上面是20個字節,每個字節有8位,代表可處理8個時鐘級中斷處理任務。其中第0個任務每個中斷均需調度一次;第1個任務每4個中斷調度一次;第2個任務每20個中斷調度一次;第3個任務每10個中斷調度一次;第4個任務每20個中斷調度一次;不存在任務5到任務7。
在退出中斷前,根據壓棧的先後順序進行相反的彈棧處理,先後彈出寄存器組、中斷向量、中斷寄存器、切換回原先的寄存器組,步驟37。所有中斷任務處理完畢後,需退出中斷,步驟38。具體過程見圖3。
周期性掃描控制表和中斷任務調度表同樣由於不同的子系統而不同,也和作業系統放在不同的程序存儲空間,從而使得操作具有獨立性。
3、定時系統採用定時數據區管理的方式來進行控制,每個定時器對應於固定的定時數據區,進程需進行哪個定時器的設定由進程控制。每個定時器數據區安排了以下內容兩個字節的定時設定值保留區,一個字節用以記錄設定定時器的進程號,還有一個字節用來進行校驗。
在進行定時設定時,根據定時器號找到相應的定時器數據區,步驟51,記錄下用戶設定的時長,同時記錄下當前的進程號。由於8031系統的單字節運行方式,系統執行減一操作比較困難,因此將定時值取反後放入定時設定值保留區,步驟52,以便在掃描定時器數據區時,執行加1的操作即可,見圖5。
在進行定時取消操作時,根據定時器號找到相應的定時器數據區,步驟61,將定時設定值保留區清零,同時將該定時器數據區的校驗值加1,步驟62,見圖6。
定時器數據區的檢測原理上應該在中斷裡完成,因為中斷的周期性是有保障的,它是周期性地掃描定時器數據區,並對設置定時的定時器執行加1的操作,當定時器滿時則產生超時消息。而這裡定時器數據區的調度由調度系統進行調度,同樣是每個中斷周期調度一次,中斷處理只是在每次中斷中置一個需對定時器數據區進行調度的標誌。這樣做的目的是為了減少中斷任務執行所需的時間。需掃描所有的定時器數據區,對定時設定值保留區中為「0」的定時器不進行處理;對不為0的定時器進行加1的操作,如定時器值滿則根據數據區中保留的進程號產生超時消息,並將校驗值帶入產生的消息中以備處理。見圖4。
4、通訊系統由於本系統的設計採用消息驅動的方式,因此進程間的通訊就是一個很重要的內容。進程間的通訊分為以下幾種時鐘級任務和基本級進程間的通訊、基本級進程間的相互通訊、子系統和主控系統進程間的通訊。時鐘級任務和基本級進程間的通訊是一種單向的通訊,時鐘級任務可以向基本級進程發送消息,反之則不行。其它兩種通訊則是雙向的。子系統和主控系統間的通訊一般有兩種方式,一種是通過串口通訊的方式,另一種是採用與外部共享內存區的方式,即子系統向共享內存區中寫入數據,主控系統可以讀取該數據。而主控系統同樣可以向該共享內存區中寫入數據,而子系統進行讀取。下面對子系統和主控系統間進程通訊的設計就採用共享內存區的方式進行說明。
消息區的管理分成系統區和用戶數據區,系統區用來控制消息的流程,它包括接受消息的進程號、發送消息的進程號、發送的消息類型、發送消息的長度。用戶數據區則包含用戶需發送的信息。
時鐘級任務和基本級進程間的通訊採用了一種單獨的通訊方式,它通過寄存器將需發送的信息帶入。見圖7,系統首先申請一個空閒的內存區,步驟71,在數據緩存區中填入需接受該消息的進程、發送的消息類型、消息的長度和消息內容,步驟72,並將該消息掛入消息調度隊列,步驟73,等待調度系統將該消息發送到相應的進程。
基本級進程間的相互通訊和子系統與主控系統內進程的通訊採用了另外一種控制方式。見圖8,系統處理時首先需要確定是子系統內進程間的通訊還是子系統和主控系統進程間的通訊,步驟81。如果是子系統內的通訊,它的處理比較簡單,和時鐘級任務和基本級進程間的通訊相同,系統首先申請一個空閒的內存區,在數據區中填入需接受消息的進程號、發送消息的進程號、發送的消息類型、消息的長度,並將消息內容拷貝到消息區中,步驟82,並將該消息掛入消息調度隊列,步驟83,等待調度系統將該消息發送到相應的進程。
如果是子系統和主控系統間的通訊,它的處理比較複雜。以共享內存區方式的通訊方式進行說明。它的處理分成兩部分,一部分是基本級的進程處理,它負責對需發送到主控系統的消息內容進行打包,以便在一個數據包中能夠存放更多的消息;接受主控系統來的消息,對消息包進行拆包,並將消息發送到接受進程;另外一方面是對共享內存區的讀、寫操作,它負責完成和主控系統間消息數據包可靠性傳輸,這部分的實現是在時鐘中斷裡完成的,是一個中斷級的任務。
如果消息是發往主控系統的,首先用戶申請一塊空閒內存區,將需要接受該消息的進程號、消息類型、消息長度和消息內容填入,步驟84。
由於基本級的進程優先級別相同,負責打包、拆包的進程佔用時間的長短不會影響到用戶進程的處理。在這裡,重新申請一個新的內存區,將當前消息的地址作為消息內容保存下來,作為發送消息發送到負責打包、拆包的進程處,步驟85。
在負責打包、拆包的進程處,首先檢查消息的內容,步驟91,如果是發送消息,則根據和主控系統的約定,對消息進行打包處理,步驟92--98,可同時將多個消息打入一個數據包中,並掛入消息包發送隊列,步驟99,見圖9左半部分。如果是接受消息,則對數據包進行分拆,分拆成一個一個的消息掛入調度隊列等待調度,步驟101--108,見圖9右半部分。
在時鐘級的發送接受任務處,採用1比特的滑動窗口進行數據包的發送、接受控制,將消息包發送隊列中的數據包寫入共享內存區中,同時讀取共享內存區中的數據,在完成讀取校驗後把該數據包作為接受消息發送到負責打包、拆包的進程處,等待對消息進行拆包處理。
二、應用系統的構成由於應用進程是採用消息驅動的方式進行工作的,也就是說接受了什麼樣的消息進行什麼樣的處理。在對消息處理時,可以按照進程的狀態進行劃分,即在特定的狀態下只處理特定的消息,消息處理完後遷移到下一個狀態,再等待消息進行處理,對在該狀態下的其它消息不進行處理。
應用進程可通過調用作業系統提供的原語完成這些有關的功能,這些功能包括定時器的設定與取消、消息的發送與接受等。對系統提供的這些功能的調用通過直接調用相關原語的地址來實現的。
8031/8051彙編系統提供了64K的程序存貯空間,通過編譯應用程式,可以知道應用程式的大小。將應用程式安排在不同的存儲空間,作業系統直接調用存儲空間的地址,從而將各個應用程式完全分開,進行單獨編譯與調試。
時鐘級的發送接受任務處,採用1比特的滑動窗口通訊協議進行數據包的發送、接受控制。對於1比特的滑動窗口通訊協議就不詳細介紹了。只有一點需說明,在數據包發送成功後,需將當前允許打包標誌置上。
對應用進程調用系統提供原語的方式,是通過直接調用相關原語的地址來實現的。
如下定義所示SENDEQU 0050HOUTPUT EQU 0053HSET EQU 0056HRESET EQU 0059HGETBUF EQU 005CH而在作業系統的相應地址處則作如下處理ORG 0050HLJMP SENDLJMP OUTPUTLJMP SETLJMP RESETLJMP GETBUF這樣一來,可以使得各個應用程式完全分開,進行單獨編譯與調試。
權利要求
1.一種單片機作業系統的模塊化實現方法,用於對主控系統與子系統組成的控制系統中的子系統進行控制,其特徵在於,包括設置系統調度的步驟,用於完成任務的調度功能,通過消息的觸發對應用進程進行調度,同時完成存放消息的內存緩衝區的管理工作;設置中斷處理的步驟,用於完成中斷處理功能,通過內部時鐘周期性地產生中斷,在中斷裡對中斷任務進行周期性調度;設置定時掃描的步驟,用於完成時鐘管理功能,為用戶提供定時和定時取消的服務;設置消息通訊的步驟,用於完成進程間的消息通訊,提供子系統內進程間的通訊及子系統與主控系統進程間的通訊。
2.如權利要求1所述的單片機作業系統的模塊化實現方法,其特徵在於,所述系統調度的步驟包括對系統環境進行初始化工作,對時鐘數據區進行處理,根據消息及進程調度表對應用進程進行調度;所述中斷處理的步驟包括保存中斷環境,根據中斷任務周期性掃描控制表對任務進行調度,退出中斷時恢復中斷前的環境;所述定時掃描的步驟包括根據進程控制進行定時器的設定,在每次中斷處理中,置一個調度標誌;每次掃描定時數據區前,先檢查該標誌,並對定時數據區進行掃描處理;所述消息通訊的步驟包括時鐘級任務和基本級進程間進行通訊,基本級進程間相互通訊,子系統和主控系統進程間進行通訊。
3.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述初始化工作包括設置堆棧起始地址、中斷定時系統的初試設置、寄存器組的設定、系統控制字的設定,建立消息調度隊列、空閒內存管理隊列、準備打包隊列、消息包發送隊列,初始化定時器數據區。
4.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述對時鐘數據區進行處理包括檢查定時器定時是否到,如果是,則給設置定時器的進程產生定時消息。
5.如權利要求4所述的單片機作業系統的模塊化實現方法,其特徵在於,所述定時消息被調度前,檢查定時器數據區的校驗值和當時定時器中的校驗值是否相同。
6.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述調度進程表、周期性掃描控制表、中斷任務調度表存儲於與作業系統存儲地址不同的存儲空間。
7.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述的系統調度還包括應用進程執行完畢,將所述消息掛入空閒隊列,並重新開始時鐘數據區處理。
8.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述保存中斷環境是採用壓棧的方式,保存中斷寄存器、中斷向量、基本級操作選用的寄存器組,另外還需切換寄存器組,並重新設置中斷時間,以備下次中斷的產生。
9.如權利要求2或6所述的單片機作業系統的模塊化實現方法,其特徵在於,所述周期性掃描控制表由多個字節組成,一個字節的一位代表一個需進行處理的任務。
10.如權利要求2或6所述的單片機作業系統的模塊化實現方法,其特徵在於,所述中斷任務是指每次中斷掃描,只調度周期性掃描控制表的那個字節中需調度的任務,下一個中斷到來時則掃描調度表中下一個字節中需調度的任務,對周期性掃描控制表進行循環調度。
11.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述對定時數據區進行掃描處理包括定時器加1操作,當定時器值滿則根據數據區中保留的進程號產生超時消息,並將校驗值帶入產生的消息中以備處理。
12.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述時鐘級任務和基本級進程間的通訊為單向的通訊方式,包括通過寄存器將需發送的信息帶入,系統申請一個空閒的內存區,在數據區中填入需接受該消息的進程號、發送的消息類型、消息的長度和消息內容,並將該消息掛入消息調度隊列,等待調度系統將該消息發送到相應的進程。
13.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述基本級進程間的相互通訊為雙向通訊方式,包括系統處理時首先需要確定是子系統內進程間的通訊還是子系統和主控系統進程間的通訊,如果是子系統內的通訊,系統首先申請一個空閒的內存區,在數據區中填入需接受消息的進程號、發送消息的進程號、發送的消息類型、消息的長度,並將消息內容拷貝到消息區中,並將該消息掛入消息調度隊列,等待調度系統將該消息發送到相應的進程;如果是子系統和主控系統間的通訊,則系統申請一個空閒的內存區,在數據區中填入需接受進程、發送進程、消息類型、消息的長度和消息內容拷貝到消息區中,並重新申請另一個新的內存區,將上個消息的地址存入消息內容區,將當前消息的地址作為消息內容保存下來,作為發送消息發送到負責打包、拆包的進程處。
14.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述子系統和主控系統進程間的通訊通過串口通訊方式或者採用與外部共享內存區的方式。
15.如權利要求14所述的單片機作業系統的模塊化實現方法,其特徵在於,所述與外部共享內存區的方式包括基本級進程處理,用於將發送主控系統的消息內容進行打包以便在一個數據包中存放更多的消息;接受主控系統來的消息,對消息包進行拆包,並將消息發送到接受進程;對共享內存區的讀、寫操作,用於完成和主控系統間消息數據包可靠性傳輸。
16.如權利要求2所述的單片機作業系統的模塊化實現方法,其特徵在於,所述應用進程可通過調用作業系統提供的原語完成定時器的設定與取消、消息的發送與接收。
全文摘要
本發明涉及一種單片機作業系統及實現方法,用於對主控系統與子系統組成的控制系統中的子系統進行控制,包括設置系統調度,用於完成任務的調度功能,通過消息的觸發對應用進程進行調度,同時完成存放消息的內存緩衝區的管理工作;設置中斷處理,用於完成中斷處理功能,通過內部時鐘周期性地產生中斷,在中斷裡對中斷任務進行周期性調度;設置定時掃描,用於完成時鐘管理功能,為用戶提供定時和定時取消的服務;設置消息通訊,用於完成進程間的消息通訊,提供子系統內進程間的通訊及子系統與主控系統進程間的通訊。本發明降低了子系統的複雜程度,把作業系統和應用程式完全分離開來,大大提高了單片機彙編系統作為子系統控制的多級系統的效率。
文檔編號G06F9/54GK1558329SQ200410046460
公開日2004年12月29日 申請日期2004年6月9日 優先權日2004年2月9日
發明者王永新, 朱西延 申請人:中興通訊股份有限公司