基于SDL的通信協議開發平臺
l 引 言
SDL是一種用來說明和描述系統的國際通用的標準化語言。它將直觀的圖形和固定的格式結合起來,使開發人員可以簡潔高效地將規范和協議描述出來,SDL的應用,可以縮短開發周期,降低系統的差錯率,提高軟件質量?,F在越來越多的電信設備開發商開始使用SDL進行協議軟件開發。
但SDL并非編程語言,用SDL描述系統以后最終需要將SDL系統映射成實際程序才有意義,而目前一般是借助于國外的一些開發工具如SDT提供的SDL和C語言的轉換工具來完成,開發人員通過編寫SDL系統和環境的接口函數來實現所生成的代碼和RTOS的集成。這種方法提高了協議開發的效率,但也有一些缺點:設計依賴于工具,脫離工具則代碼難以維護、SDL生成的代碼非常復雜,不便于修改和閱讀,所以在實際應用中這些工具往往用于協議驗證。
為了提高協議開發效率,我們在無線通信系統開發中建立一套自主的基于SDL的通信協議開發平臺,通過這個平臺可以實現SDL基本元素進程以及進程之間的通信和RTOS任務之間的通信,并集成了協議中常用的定時器管理功能、內存管理功能。
2 SDL介紹
SDL(Specification and Description Language)是1976年至1992年由ITU―T發展和標準化的一種描述系統行為的語言,SDL的數學模型是擴展有限狀態機(EFSM),是一種高層泛用型的用于事件驅動、實時和通信系統的描述語言,電信系統和協議是它主要應用領域之一。SDL有圖形和文本兩種表示形式,SDL/GR和SDL/PR。它既可以用來對系統的功能進行說明,也可以描述系統的內部結構和行為,因而應用范圍很廣,可以用于協議工程的各個階段。SDL采用一種層次結構來對系統進行描述和說明,結構和功能被清楚地劃分。系統可以分為多個功能塊,功能塊表示系統內部功能相對獨立的幾個模塊,它們之間通過信道相連。根據系統規模的大小,每個功能塊還可以分為子功能塊或進程。與傳統FSM類似,SDL進程具有有限數量的被有限數量躍遷連接著的宏控制狀態。通過一個輸入信號(也可稱使能條件)的接收、事先設置的定時器的定時或當前狀態變量(連續信號)值所指定條件的確認,躍遷能夠被觸發。在SDL中,定義了一些基本的數據類型和操作,以及構造新類型的機制,使得SDL擁有和C/C++語言一樣的數據操作能力,因此它可以用于系統的設計和實現。
3 SDL通信協議開發平臺構成和實現
SDL通信協議開發平臺建立在嵌入式實時操作系統上,主要包括4個模塊:進程管理、消息管理、定時器管理、緩存管理,如圖1所示。其中進程管理模塊提供了SDL進程的創建、刪除等庫函數,并提供了SDL功能塊和進程的描述表,通過這張表格可以確定任務塊和進程的從屬關系。在消息管理模塊提供了進程間、進程和功能塊間、進程和外部任務間的消息通信函數;定時器管理和緩沖管理模塊則提供了定時器的創建、刪除函數以及緩沖的創建和釋放函數。
3.1 功能塊和進程的實現
3.1.1 功能塊實現
采用SDL描述的系統包含若干個功能塊(block),每個功能塊內至少有一個進程(process),功能塊是用RTOS的任務直接實現的不需要開發者單獨創建,只需在功能塊中預先定義包含哪些進程,SDL系統在初始化時直接可以創建功能塊。每個功能塊內進程的并發調度是由功能塊的一個調度函數實現,而功能塊之間的調度則由操作系統完成。功能塊任務內除了完成個進程狀態機的輪詢調度外,還負責接收外部環境的消息并分發消息到各個進程狀態機中;除此外功能塊任務還負責本功能塊內所有進程的定時器管理工作。功能塊內部工作流程圖如圖2所示。
3.1.2 進程狀態機的實現
c++相關文章:c++教程
數字通信相關文章:數字通信原理
通信相關文章:通信原理
評論