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