基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法及系統(tǒng),該基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序。本發(fā)明的有益效果是:本發(fā)明設(shè)計(jì)的驅(qū)動(dòng)程序架構(gòu)為基帶業(yè)務(wù)處理提供了四類抽象的、統(tǒng)一的緩沖區(qū)接口,在跨平臺(tái)移植性、健壯性和可配置性等方面都比傳統(tǒng)的驅(qū)動(dòng)程序接口有較大的提高。
【專利說(shuō)明】基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)通信領(lǐng)域,尤其涉及基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]在移動(dòng)通信基帶業(yè)務(wù)的數(shù)字信號(hào)處理(嵌入式)領(lǐng)域,各種基帶業(yè)務(wù)(WIMAX、LTE、UMTS、TD-SCDMA、GSM等)運(yùn)行在一套驅(qū)動(dòng)程序平臺(tái)軟件上,或者一種基帶業(yè)務(wù)在一套驅(qū)動(dòng)程序平臺(tái)軟件的支持下運(yùn)行在多種硬件平臺(tái)上。在現(xiàn)有的處理技術(shù)中,為了達(dá)到對(duì)底層支持多種硬件平臺(tái)、對(duì)高層支持多種基帶業(yè)務(wù)的需求,軟件平臺(tái)需要為每種硬件平臺(tái)和每種業(yè)務(wù)處理提供完全定制的驅(qū)動(dòng)程序。當(dāng)業(yè)務(wù)需要更換硬件平臺(tái)時(shí),軟件平臺(tái)(驅(qū)動(dòng)程序軟件)中與硬件平臺(tái)相關(guān)的代碼就需要進(jìn)行大幅度的修改。目前在嵌入式領(lǐng)域,還不存在既支持TI硬件平臺(tái),又支持Freescale硬件平臺(tái)及其它硬件平臺(tái)的的軟件平臺(tái)。
[0003]在移動(dòng)通信基帶業(yè)務(wù)的數(shù)字信號(hào)處理(嵌入式)領(lǐng)域,為了達(dá)到對(duì)底層支持多種硬件平臺(tái)、對(duì)高層支持多種基帶業(yè)務(wù)的需求,軟件平臺(tái)需要為每種硬件平臺(tái)和每種業(yè)務(wù)處理提供完全定制的驅(qū)動(dòng)程序。當(dāng)業(yè)務(wù)需要更換硬件平臺(tái)時(shí),軟件平臺(tái)(驅(qū)動(dòng)程序軟件)中與硬件平臺(tái)相關(guān)的代碼就需要進(jìn)行大幅度的修改。這種修改對(duì)軟件設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、維護(hù)帶來(lái)較大的工作量和風(fēng)險(xiǎn)。由此可見(jiàn),傳統(tǒng)的架構(gòu)方式使得驅(qū)動(dòng)程序軟件(軟件平臺(tái))在可重用性、可移植性、可配置性、可維護(hù)性等方面存在一定的缺陷。
[0004]在移動(dòng)通信基帶業(yè)務(wù)的數(shù)字信號(hào)處理(嵌入式)領(lǐng)域,各種基帶業(yè)務(wù)(WIMAX、LTE、UMTS、TD-SCDMA、GSM等)運(yùn)行在一套驅(qū)動(dòng)程序平臺(tái)軟件上,或者一種基帶業(yè)務(wù)在一套驅(qū)動(dòng)程序平臺(tái)軟件的支持下運(yùn)行在多種硬件平臺(tái)上。例如,通用DSP芯片(如TI DSP、FreescaleDSP,LSI DSP等)或帶有DSP處理器核或CPU核的S0C芯片等硬件平臺(tái)。在傳統(tǒng)的處理中,為了達(dá)到對(duì)底層支持多種硬件平臺(tái)、對(duì)高層支持多種基帶業(yè)務(wù)的需求,軟件平臺(tái)需要為每種硬件平臺(tái)和每種業(yè)務(wù)處理提供完全定制的軟件。例如,基帶業(yè)務(wù)的版本A運(yùn)行在TI DSP上,相同基帶業(yè)務(wù)的版本B運(yùn)行在Freescale DSP上,為了支持這兩套硬件平臺(tái),軟件平臺(tái)常采用的架構(gòu)方案是分別提供兩套驅(qū)動(dòng)程序,而且兩套驅(qū)動(dòng)程序接口函數(shù)也不一致(接口一般設(shè)計(jì)為依賴硬件,硬件不同,接口函數(shù)也不同)。這樣導(dǎo)致的后果是,業(yè)務(wù)版本A如果需要運(yùn)行在Freescale DSP硬件平臺(tái)上或業(yè)務(wù)版本B需要運(yùn)行在TI DSP硬件平臺(tái)上,業(yè)務(wù)版本A或業(yè)務(wù)版本B的軟件平臺(tái)中與硬件平臺(tái)相關(guān)的代碼就需要進(jìn)行大幅度的修改,這種修改對(duì)軟件設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、維護(hù)帶來(lái)較大的工作量和風(fēng)險(xiǎn)。由此可見(jiàn),傳統(tǒng)的軟件平臺(tái)架構(gòu)方式使驅(qū)動(dòng)程序軟件(軟件平臺(tái))在可重用性、可移植性、可配置性、可維護(hù)性等方面存在一定的缺陷。
[0005]在通用計(jì)算機(jī)領(lǐng)域,目前有Windows、Linux、Unix等商用或開(kāi)源操作系統(tǒng)提供統(tǒng)一界面的(比如Linux的VFS接口)、跨平臺(tái)(支持ARM/X86/MIPS/SPARC/SH等)的軟件平臺(tái)。但在嵌入式領(lǐng)域,例如TI提供的DSP/B10S平臺(tái)只支持TI系列的DSP,F(xiàn)reesacle的SmartDSP OS只支持Freescale系列DSP等,目前還不存在既支持TI硬件平臺(tái),又支持Freescale硬件平臺(tái)及其它硬件平臺(tái)的的軟件平臺(tái)。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)中的問(wèn)題,本發(fā)明提供了一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法。
[0007]本發(fā)明提供了一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法,包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序,基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序提供的函數(shù)接口 ;緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序是繼承關(guān)系,邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序是組合關(guān)系或聚合關(guān)系,在一個(gè)物理通道上能夠支持多個(gè)邏輯通道,邏輯通道層驅(qū)動(dòng)程序使用物理通道層驅(qū)動(dòng)程序的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;物理通道驅(qū)動(dòng)程序操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
[0008]作為本發(fā)明的進(jìn)一步改進(jìn),緩沖區(qū)包括循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū),該方法還包括循環(huán)緩沖區(qū)接口、塊緩沖區(qū)接口、幀緩沖區(qū)接口以及固定緩沖區(qū)接□。
[0009]作為本發(fā)明的進(jìn)一步改進(jìn),所述循環(huán)緩沖區(qū)包括讀指針、寫指針、預(yù)讀指針、預(yù)寫指針,所述固定緩沖區(qū)每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度。
[0010]作為本發(fā)明的進(jìn)一步改進(jìn),所述塊緩沖區(qū)具有如下特征:通過(guò)讀寫指針維護(hù)該緩沖區(qū);總的塊數(shù)目必須大于等于2 ;讀取每個(gè)塊的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該塊內(nèi)有效數(shù)據(jù)的長(zhǎng)度;同一個(gè)塊,同一時(shí)刻支持多次寫操作,不支持多次讀操作。
[0011]作為本發(fā)明的進(jìn)一步改進(jìn),所述幀緩沖區(qū)具有如下特征:
[0012]幀緩沖區(qū)使用隊(duì)列進(jìn)行管理,隊(duì)列至少含有消息隊(duì)列和空閑隊(duì)列;
[0013]每個(gè)隊(duì)列元素指向的幀緩沖區(qū)大小是相同的;
[0014]每個(gè)隊(duì)列元素和每個(gè)幀緩沖區(qū)是綁定的。
[0015]本發(fā)明還提供了一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的系統(tǒng),包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序,基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序提供的函數(shù)接口 ;緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序是繼承關(guān)系,邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序是組合關(guān)系或聚合關(guān)系,在一個(gè)物理通道上能夠支持多個(gè)邏輯通道,邏輯通道層驅(qū)動(dòng)程序使用物理通道層驅(qū)動(dòng)程序的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;物理通道驅(qū)動(dòng)程序操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
[0016]作為本發(fā)明的進(jìn)一步改進(jìn),緩沖區(qū)包括循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū),該方法還包括循環(huán)緩沖區(qū)接口、塊緩沖區(qū)接口、幀緩沖區(qū)接口以及固定緩沖區(qū)接□。
[0017]作為本發(fā)明的進(jìn)一步改進(jìn),所述循環(huán)緩沖區(qū)包括讀指針、寫指針、預(yù)讀指針、預(yù)寫指針,所述固定緩沖區(qū)每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度。
[0018]作為本發(fā)明的進(jìn)一步改進(jìn),所述塊緩沖區(qū)具有如下特征:通過(guò)讀寫指針維護(hù)該緩沖區(qū);
[0019]總的塊數(shù)目必須大于等于2 ;[0020]讀取每個(gè)塊的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該塊內(nèi)有效數(shù)據(jù)的長(zhǎng)度;
[0021]同一個(gè)塊,同一時(shí)刻支持多次寫操作,不支持多次讀操作。
[0022]作為本發(fā)明的進(jìn)一步改進(jìn),所述幀緩沖區(qū)具有如下特征:
[0023]幀緩沖區(qū)使用隊(duì)列進(jìn)行管理,隊(duì)列至少含有消息隊(duì)列和空閑隊(duì)列;
[0024]每個(gè)隊(duì)列元素指向的幀緩沖區(qū)大小是相同的;
[0025]每個(gè)隊(duì)列元素和每個(gè)幀緩沖區(qū)是綁定的。[0026]本發(fā)明的有益效果是:本發(fā)明在分析現(xiàn)有的移動(dòng)通信基帶業(yè)務(wù)(包括WIMAX、LTE、UMTS、TD-SCDMA、GSM等)數(shù)據(jù)處理特點(diǎn)的基礎(chǔ)上,得到四類基于緩沖區(qū)的基帶業(yè)務(wù)(包括基于循環(huán)緩沖區(qū)的業(yè)務(wù)、基于塊緩沖區(qū)的業(yè)務(wù)、基于幀緩沖區(qū)的業(yè)務(wù)、基于固定緩沖區(qū)的業(yè)務(wù)等)。根據(jù)這四類緩沖區(qū)業(yè)務(wù),抽象出四類緩沖區(qū),并基于這四類緩沖區(qū)設(shè)計(jì)出嵌入式軟件平臺(tái)的設(shè)備驅(qū)動(dòng)程序架構(gòu)。本發(fā)明設(shè)計(jì)的驅(qū)動(dòng)程序架構(gòu)為基帶業(yè)務(wù)處理提供了四類抽象的、統(tǒng)一的緩沖區(qū)接口,在跨平臺(tái)移植性、健壯性和可配置性等方面都比傳統(tǒng)的驅(qū)動(dòng)程序接口有較大的提高。
【專利附圖】
【附圖說(shuō)明】
[0027]圖1是本發(fā)明的基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)圖。
[0028]圖2是本發(fā)明的循環(huán)緩沖區(qū)結(jié)構(gòu)圖。
[0029]圖3是本發(fā)明的塊緩沖區(qū)結(jié)構(gòu)圖。
[0030]圖4是本發(fā)明的幀緩沖區(qū)結(jié)構(gòu)圖。
[0031]圖5是本發(fā)明的固定緩沖區(qū)結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0032]對(duì)移動(dòng)通信基帶業(yè)務(wù)(11獻(xiàn)1、1^^.13、10-300獻(xiàn)、631等)數(shù)據(jù)處理進(jìn)行分析后,可以發(fā)現(xiàn)基帶業(yè)務(wù)處理具有的如下特點(diǎn):
[0033]①因?yàn)樘幚砥骱屯庠O(shè)接口的數(shù)據(jù)處理速度不同、業(yè)務(wù)數(shù)據(jù)流量大等原因,業(yè)務(wù)數(shù)據(jù)包括控制流、媒體流、調(diào)測(cè)流等數(shù)據(jù)都使用緩沖區(qū)進(jìn)行數(shù)據(jù)緩存;
[0034]②從處理速度、內(nèi)存資源占用進(jìn)行考慮,對(duì)緩沖區(qū)的操作可以分為先拷貝再處理的讀寫(帶拷貝的讀寫)方式和不拷貝直接在緩沖區(qū)上處理的讀寫這兩種方式;
[0035]③基帶業(yè)務(wù)類型決定了緩沖區(qū)的屬性,這些屬性包括緩沖區(qū)類型(包括循環(huán)緩沖區(qū)、塊循環(huán)區(qū)、幀緩沖區(qū)以及固定緩沖區(qū))、大小、level (在DDR RAM、片內(nèi)Level 1RAM,片內(nèi)Level2RAM等)、讀寫方式(帶拷貝讀寫還是直接讀寫)、是否需要使用DMA進(jìn)行輔助傳輸?shù)龋?br>
[0036]④基帶業(yè)務(wù)可抽象為四種緩沖區(qū)業(yè)務(wù),即循環(huán)緩沖區(qū)業(yè)務(wù)、塊緩沖區(qū)業(yè)務(wù)、幀緩沖區(qū)業(yè)務(wù)和固定緩沖區(qū)業(yè)務(wù)。本發(fā)明設(shè)計(jì)了四類相似的緩沖區(qū)接口,它們是循環(huán)緩沖區(qū)接口、幀緩沖區(qū)接口、塊緩沖區(qū)接口和固定緩沖區(qū)接口。
[0037]本發(fā)明設(shè)計(jì)的基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)如圖1所示,架構(gòu)可分為以下三層:
[0038]①緩沖區(qū)層(框架層)驅(qū)動(dòng)程序:此層與設(shè)備無(wú)關(guān),支持跨平臺(tái)、可重用等需求;
[0039]②邏輯通道層驅(qū)動(dòng)程序:邏輯通道與硬件設(shè)備和基帶業(yè)務(wù)都相關(guān),所以不同的硬件設(shè)備或不同的基帶業(yè)務(wù),需實(shí)現(xiàn)繼承緩沖區(qū)特性的驅(qū)動(dòng)程序;
[0040]③物理通道層驅(qū)動(dòng)程序:物理通道與硬件設(shè)備相關(guān),所以不同的硬件設(shè)備,需實(shí)現(xiàn)不同的驅(qū)動(dòng)程序。
[0041]上述驅(qū)動(dòng)程序的三層架構(gòu)設(shè)計(jì)滿足依賴倒置原則,高層基帶業(yè)務(wù)程序和底層驅(qū)動(dòng)程序都依賴緩沖區(qū)框架層,底層驅(qū)動(dòng)驅(qū)動(dòng)程序?qū)崿F(xiàn)緩沖區(qū)框架要求的功能,而高層基帶業(yè)務(wù)使用緩沖區(qū)框架提供的功能,高層基帶業(yè)務(wù)和底層驅(qū)動(dòng)程序互不相關(guān),互相獨(dú)立(低耦合)。其中,本發(fā)明在架構(gòu)中引入了邏輯通道的概念,一種邏輯通道對(duì)應(yīng)一個(gè)緩沖區(qū)/應(yīng)用實(shí)例。邏輯通道與物理通道的區(qū)別在于,一個(gè)物理通道可以支持多個(gè)邏輯通道,這種機(jī)制使每種業(yè)務(wù)處理可以使用獨(dú)立的邏輯通道,減少共享通道所帶來(lái)的互斥操作,提高效率和穩(wěn)定性。此外,該驅(qū)動(dòng)程序架構(gòu)可以采用C語(yǔ)言的面向?qū)ο笤O(shè)計(jì),實(shí)現(xiàn)繼承模式,使緩沖區(qū)操作具有多態(tài)性,滿足各邏輯通道類的緩沖區(qū)讀寫、接收和發(fā)送等操作要求。
[0042]在圖1所示的驅(qū)動(dòng)程序架構(gòu)圖中,緩沖區(qū)分為循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū)。
[0043]其中,圖2所示的循環(huán)緩沖區(qū)具有如下特征:
[0044]①通過(guò)讀寫指針維護(hù)該緩沖區(qū)(實(shí)際上還有預(yù)讀和預(yù)寫指針),默認(rèn)各種指針的更新單位為Byte ;
[0045]②應(yīng)用每次填入的數(shù)據(jù)包長(zhǎng)度可以不相等,由于數(shù)據(jù)長(zhǎng)度不相等,一般在數(shù)據(jù)包中存在數(shù)據(jù)長(zhǎng)度字段;
[0046]③每次填寫的數(shù)據(jù)包默認(rèn)都是4字節(jié)對(duì)齊的(應(yīng)用數(shù)據(jù)包可以不對(duì)齊,驅(qū)動(dòng)程序完成對(duì)齊工作);
[0047]④當(dāng)緩沖區(qū)(Buffer)尾部空間不足時(shí),需要增加Pad包(默認(rèn)Pad包格式:0xFFFF0000+Pad 長(zhǎng)度)。假設(shè) Pad 長(zhǎng)度為 256,則 Pad 包為 0xFFFF0100。
[0048]圖3所示的塊(bank)緩沖區(qū)則具有以下特征:
[0049]①通過(guò)讀寫指針維護(hù)該緩沖區(qū);
[0050]②各種指針的更新單位為一個(gè)Bank Size ;
[0051]③應(yīng)用每次填入的數(shù)據(jù)包長(zhǎng)度可以不相等,但是每次填寫不能超過(guò)一個(gè)BankSize ;
[0052]④總的Bank數(shù)目必須大于等于2,即η≥2 ;
[0053]⑤讀取每個(gè)Bank的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該Bank內(nèi)有效數(shù)據(jù)的長(zhǎng)度;
[0054]⑥同一個(gè)Bank,同一時(shí)刻支持多次寫操作,不支持多次讀操作;
[0055]⑦目前不能將此類型Buffer管理用于芯片間(由于接收端沒(méi)有接收到Bank寫指針,除非定時(shí)將這些寫指針發(fā)送到接收端)。
[0056]圖4所示的幀緩沖區(qū)具有如下特征:
[0057]①幀緩沖區(qū)(Frame Buffer)使用隊(duì)列進(jìn)行管理,隊(duì)列一般來(lái)說(shuō)至少含有消息隊(duì)列(MsgQue)和空閑隊(duì)列(FreeQue);
[0058]②每個(gè)隊(duì)列元素指向的Frame Buffer大小是相同的;
[0059]③每個(gè)Frame Buffer之間可以是連續(xù)的,也可以是不連續(xù)的;
[0060]④應(yīng)用的數(shù)據(jù)包長(zhǎng)度可變,但不能超過(guò)Frame Size, 一般在隊(duì)列元素中有字段表示數(shù)據(jù)包長(zhǎng)度;
[0061]⑤每個(gè)隊(duì)列元素和每個(gè)Frame Buffer是綁定的。
[0062]圖5所示的固定緩沖區(qū)具有如下特征:[0063]①驅(qū)動(dòng)不作任何的緩存;
[0064]②每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度;
[0065]③類似Copy函數(shù),將某種長(zhǎng)度的數(shù)據(jù)從某地址Copy到另一地址開(kāi)始的空間。
[0066]如圖1所示,本發(fā)明采用C語(yǔ)言的面向?qū)ο笤O(shè)計(jì),其模塊之間的相互關(guān)系如下:
[0067]①基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序(緩沖區(qū)類)提供的函數(shù)接口 ;
[0068]②緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序(邏輯通道類)是繼承關(guān)系,邏輯通道類繼承緩沖區(qū)類。邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;
[0069]③邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序(物理通道類)是組合關(guān)系/聚合關(guān)系,在一個(gè)物理通道上可以支持多個(gè)邏輯通道,驅(qū)動(dòng)程序中邏輯通道類使用物理通道類的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;
[0070]④物理通道驅(qū)動(dòng)程序(物理通道類)操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
[0071]應(yīng)用本發(fā)明設(shè)計(jì)的驅(qū)動(dòng)程序架構(gòu),驅(qū)動(dòng)程序中移動(dòng)通信基帶業(yè)務(wù)操作的過(guò)程分析如下:
[0072]①緩沖區(qū)的讀寫,包括帶拷貝的讀寫或直接讀寫,只需要最多1次回調(diào)函數(shù)。例如循環(huán)緩沖區(qū),需調(diào)用邏輯通道類的緩沖區(qū)讀寫函數(shù),這次回調(diào)是為了支持多種循環(huán)緩沖區(qū)格式的讀與;
[0073]②緩沖區(qū)的接收和發(fā)送,只需要進(jìn)行2次函數(shù)調(diào)用即可進(jìn)行接收或發(fā)送。這2次函數(shù)調(diào)用分別是緩沖區(qū)類(作為基類或父類)調(diào)用邏輯通道類(作為派生類或子類)接口,邏輯通道類接口調(diào)用物理通道類(硬件)接口,就能完成硬件的操作接收和發(fā)送。與Linux采用虛擬文件系統(tǒng)進(jìn)行數(shù)據(jù)接收和發(fā)送(系統(tǒng)調(diào)用后還需要6次函數(shù)調(diào)用)相比,本發(fā)明中函數(shù)回調(diào)次數(shù)大大減少,程序運(yùn)行效率提升。
[0074]由圖1可以看出,按照分層/模塊的思想,基于四類緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)可采用面向?qū)ο蠓椒ㄟM(jìn)行設(shè)計(jì),包括以下三個(gè)內(nèi)容:
[0075]①緩沖區(qū)結(jié)構(gòu)及接口設(shè)計(jì)
[0076]首先進(jìn)行緩沖區(qū)層(框架層)結(jié)構(gòu)及接口設(shè)計(jì),它包括下面兩個(gè)步驟:
[0077]第1步:參考圖2至圖5,按照循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)、固定緩沖區(qū)的結(jié)構(gòu)圖,將緩沖區(qū)分別命名為 struct T_CyclicBuf, struct T_BankBuf, struct T_FrameBuf,struct T_FixBuf,并根據(jù)結(jié)構(gòu)圖確定各緩沖區(qū)結(jié)構(gòu)的結(jié)構(gòu)成員;
[0078]第2步:進(jìn)行緩沖區(qū)類的接口設(shè)計(jì)。針對(duì)緩沖區(qū)設(shè)計(jì)出各種框架函數(shù),例如xx_read (), xx_write (), xx_send()等,xx 代表緩沖區(qū)名。
[0079]②邏輯通道結(jié)構(gòu)及接口設(shè)計(jì)
[0080]其次是邏輯通道層結(jié)構(gòu)及接口設(shè)計(jì),它也包括了兩個(gè)步驟,具體如下:
[0081]第1步:邏輯通道類的結(jié)構(gòu)設(shè)計(jì),邏輯通道類繼承緩沖區(qū)類,在C語(yǔ)言中,繼承關(guān)系需將緩沖區(qū)類的結(jié)構(gòu)置于邏輯通道類的第1個(gè)結(jié)構(gòu)成員,緩沖區(qū)類可以被多個(gè)邏輯通道類繼承,從而支持多種緩沖區(qū)操作。例如,基于循環(huán)緩沖區(qū)的Srio Directio通道的結(jié)構(gòu)設(shè)計(jì)如下:
[0082]struct T—CyclicBuf—SrioDirectioCh ;
[0083]第2步:邏輯通道類的接口設(shè)計(jì)。邏輯通道類的大多數(shù)函數(shù)是實(shí)現(xiàn)緩沖區(qū)類相關(guān)函數(shù)指針,這些函數(shù)不對(duì)外開(kāi)放,只有創(chuàng)建和關(guān)閉函數(shù),以及少量的邏輯通道類特有函數(shù)對(duì)外開(kāi)放。例如,struct T_CyclicBuf_SrioDirectioCh 的創(chuàng)建和關(guān)閉函數(shù) yy_open ()和 yy_close (),yy是邏輯通道模塊名。
[0084]③物理通道結(jié)構(gòu)及接口設(shè)計(jì)。
[0085]最后是物理通道層結(jié)構(gòu)及接口設(shè)計(jì)。物理通道完全由硬件通道決定,包括結(jié)構(gòu)和接口。例如,物理通道結(jié)構(gòu)為:struct T_SrioDirectioCh ;物理通道接口為zz_open (), zz_close (), zz_transfer ()。
[0086]本發(fā)明還公開(kāi)了一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的系統(tǒng),包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序,基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序提供的函數(shù)接口 ;緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序是繼承關(guān)系,邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序是組合關(guān)系或聚合關(guān)系,在一個(gè)物理通道上能夠支持多個(gè)邏輯通道,邏輯通道層驅(qū)動(dòng)程序使用物理通道層驅(qū)動(dòng)程序的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;物理通道驅(qū)動(dòng)程序操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
[0087]緩沖區(qū)包括循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū),該方法還包括循環(huán)緩沖區(qū)接口、塊緩沖區(qū)接口、幀緩沖區(qū)接口以及固定緩沖區(qū)接口。
[0088]所述循環(huán)緩沖區(qū)包括讀指針、寫指針、預(yù)讀指針、預(yù)寫指針,所述固定緩沖區(qū)每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度。
[0089]所述塊緩沖區(qū)具有如下特征:通過(guò)讀寫指針維護(hù)該緩沖區(qū);總的塊數(shù)目必須大于等于2 ;讀取每個(gè)塊的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該塊內(nèi)有效數(shù)據(jù)的長(zhǎng)度;同一個(gè)塊,同一時(shí)刻支持多次寫操作,不支持多次讀操作。
[0090]所述幀緩沖區(qū)具有如下特征:幀緩沖區(qū)使用隊(duì)列進(jìn)行管理,隊(duì)列至少含有消息隊(duì)列和空閑隊(duì)列;每個(gè)隊(duì)列元素指向的幀緩沖區(qū)大小是相同的;每個(gè)隊(duì)列元素和每個(gè)幀緩沖區(qū)是綁定的。
[0091]采用本發(fā)明的架構(gòu)技術(shù),可使設(shè)備驅(qū)動(dòng)程序在可移植性、健壯性、效率、靈活性等方面取得較好的效果。首先是可移植性的提高,主要包括兩種可移植性。第一種可移植性是基帶業(yè)務(wù)的可移植性,在基于本發(fā)明的軟件平臺(tái)上,只需要修改相關(guān)配置,比如緩沖區(qū),任務(wù)及其它設(shè)備資源分配策略,軟件平臺(tái)就能輕松支持不同的基帶業(yè)務(wù)或同時(shí)支持多種基帶業(yè)務(wù)。第二種可移植性是硬件平臺(tái)的可移植性,通過(guò)實(shí)現(xiàn)新增的驅(qū)動(dòng)程序(硬件設(shè)備相關(guān)的部分)來(lái)對(duì)新的硬件平臺(tái)的支持,而緩沖區(qū)接口保持不變,由于基帶業(yè)務(wù)只使用緩沖區(qū)接口,所以基帶業(yè)務(wù)程序不做任何改動(dòng),從而輕松達(dá)到高層基帶業(yè)務(wù)的跨平臺(tái)特性。正是由于這兩種可移植性,基于本發(fā)明架構(gòu)設(shè)計(jì)的軟件平臺(tái)支持以下場(chǎng)景的操作:
[0092](1)基帶業(yè)務(wù)的切換。例如從UMTS基帶業(yè)務(wù)切換為基帶業(yè)務(wù)WIMAX或從基帶業(yè)務(wù)UMTS切換為基帶業(yè)務(wù)WIMAX和基帶業(yè)務(wù)LTE,除了修改資源配置、任務(wù)配置等配置文件外,底層驅(qū)動(dòng)程序無(wú)需修改。
[0093](2)底層驅(qū)動(dòng)程序的切換。例如從TI硬件平臺(tái)切換為Freescale硬件平臺(tái),只需切換到Freescale硬件平臺(tái)的設(shè)備驅(qū)動(dòng)程序,基帶業(yè)務(wù)及調(diào)用的軟件平臺(tái)接口即高層業(yè)務(wù)相關(guān)代碼不需修改。
[0094]本發(fā)明的架構(gòu)技術(shù)也能提高基帶業(yè)務(wù)軟件部署的靈活性。例如兩模塊業(yè)務(wù)有信息交互,屬于循環(huán)緩沖區(qū)業(yè)務(wù),使用循環(huán)緩沖區(qū)操作接口。現(xiàn)將這兩個(gè)模塊從同一芯片的兩個(gè)核的部署切換成兩個(gè)芯片間的兩個(gè)核的交互,不管芯片間使用何種接口,對(duì)于基帶業(yè)務(wù)來(lái)說(shuō),仍然使用循環(huán)緩沖區(qū)操作接口完成數(shù)據(jù)的讀寫操作,硬件的修改在基帶業(yè)務(wù)看來(lái)是透明的,具體的與硬件相關(guān)的操作由依賴于緩沖區(qū)接口的邏輯通道實(shí)現(xiàn)。當(dāng)然,初始化代碼和平臺(tái)相關(guān)的配置代碼還需要修改。
[0095]在健壯性的提高方面,本發(fā)明的架構(gòu)技術(shù)對(duì)四種緩沖區(qū)操作進(jìn)行標(biāo)準(zhǔn)化,提供四套相似的函數(shù)接口,包括讀、寫、接收、發(fā)送等操作。由于這些函數(shù)接口經(jīng)過(guò)充分測(cè)試,并具有較高的可重用性,以及對(duì)函數(shù)參數(shù)進(jìn)行判斷和保證,與傳統(tǒng)的直接使用數(shù)組或特殊的函數(shù)處理相比,這些標(biāo)準(zhǔn)化操作將會(huì)減少內(nèi)存越界等異常,使得程序更加健壯。同時(shí),采用模塊化的架構(gòu),減少模塊與模塊之間耦合性,在增加或修改硬件的時(shí)候,只需按照緩沖區(qū)接口進(jìn)行本模塊驅(qū)動(dòng)程序的設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試,降低了修改對(duì)整個(gè)驅(qū)動(dòng)程序所帶來(lái)的影響。
[0096]在效率提高方面,本發(fā)明的架構(gòu)技術(shù)使用繼承機(jī)制(C語(yǔ)言使用函數(shù)指針)實(shí)現(xiàn)緩沖區(qū)的各種操作。從基帶業(yè)務(wù)調(diào)用緩沖區(qū)操作的層次來(lái)看,最多只需兩層就可以達(dá)到操作硬件的目的,完成數(shù)據(jù)的發(fā)送或接收。
[0097]本發(fā)明的架構(gòu)技術(shù)為開(kāi)發(fā)統(tǒng)一的、可重用的驅(qū)動(dòng)程序測(cè)試平臺(tái)提供了基礎(chǔ)。緩沖區(qū)的抽象,使得不管硬件平臺(tái)如何變化,對(duì)外提供的緩沖區(qū)接口不會(huì)變化,這種變化與不變化,使基于緩沖區(qū)的驅(qū)動(dòng)程序測(cè)試平臺(tái)的統(tǒng)一設(shè)計(jì)和測(cè)試?yán)齼?yōu)化變得比較容易。使用本發(fā)明,各種硬件平臺(tái)可重用一套測(cè)試?yán)蜏y(cè)試平臺(tái)。
[0098]以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說(shuō)明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說(shuō)明。對(duì)于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的方法,其特征在于,包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序,基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序提供的函數(shù)接口 ;緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序是繼承關(guān)系,邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序是組合關(guān)系或聚合關(guān)系,在一個(gè)物理通道上能夠支持多個(gè)邏輯通道,邏輯通道層驅(qū)動(dòng)程序使用物理通道層驅(qū)動(dòng)程序的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;物理通道驅(qū)動(dòng)程序操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于:緩沖區(qū)包括循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū),該方法還包括循環(huán)緩沖區(qū)接口、塊緩沖區(qū)接口、幀緩沖區(qū)接口以及固定緩沖區(qū)接口。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于:所述循環(huán)緩沖區(qū)包括讀指針、寫指針、預(yù)讀指針、預(yù)寫指針,所述固定緩沖區(qū)每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述塊緩沖區(qū)具有如下特征:通過(guò)讀寫指針維護(hù)該緩沖區(qū);總的塊數(shù)目必須大于等于2;讀取每個(gè)塊的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該塊內(nèi)有效數(shù)據(jù)的長(zhǎng)度;同一個(gè)塊,同一時(shí)刻支持多次寫操作,不支持多次讀操作。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述幀緩沖區(qū)具有如下特征:幀緩沖區(qū)使用隊(duì)列進(jìn)行管理,隊(duì)列至少含有消息隊(duì)列和空閑隊(duì)列;每個(gè)隊(duì)列元素指向的幀緩沖區(qū)`大小是相同的;每個(gè)隊(duì)列元素和每個(gè)幀緩沖區(qū)是綁定的。
6.一種基于緩沖區(qū)的驅(qū)動(dòng)程序架構(gòu)設(shè)計(jì)的系統(tǒng),其特征在于,包括緩沖區(qū)層驅(qū)動(dòng)程序、邏輯通道層驅(qū)動(dòng)程序、物理通道層驅(qū)動(dòng)程序,基帶業(yè)務(wù)使用緩沖區(qū)驅(qū)動(dòng)程序提供的函數(shù)接口 ;緩沖區(qū)驅(qū)動(dòng)程序與邏輯通道驅(qū)動(dòng)程序是繼承關(guān)系,邏輯通道實(shí)現(xiàn)緩沖區(qū)的函數(shù)指針指向的函數(shù),并在邏輯通道創(chuàng)建實(shí)例時(shí)給緩沖區(qū)的函數(shù)指針賦值;邏輯通道驅(qū)動(dòng)程序與物理通道驅(qū)動(dòng)程序是組合關(guān)系或聚合關(guān)系,在一個(gè)物理通道上能夠支持多個(gè)邏輯通道,邏輯通道層驅(qū)動(dòng)程序使用物理通道層驅(qū)動(dòng)程序的操作函數(shù),通過(guò)配置函數(shù)進(jìn)行配置;物理通道驅(qū)動(dòng)程序操作的是硬件,完成數(shù)據(jù)的接收和發(fā)送。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于:緩沖區(qū)包括循環(huán)緩沖區(qū)、塊緩沖區(qū)、幀緩沖區(qū)以及固定緩沖區(qū),該方法還包括循環(huán)緩沖區(qū)接口、塊緩沖區(qū)接口、幀緩沖區(qū)接口以及固定緩沖區(qū)接口。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于:所述循環(huán)緩沖區(qū)包括讀指針、寫指針、預(yù)讀指針、預(yù)寫指針,所述固定緩沖區(qū)每次讀寫時(shí),指定源地址、目的地址和長(zhǎng)度。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于:所述塊緩沖區(qū)具有如下特征:通過(guò)讀寫指針維護(hù)該緩沖區(qū);總的塊數(shù)目必須大于等于2;讀取每個(gè)塊的數(shù)據(jù)時(shí),返回長(zhǎng)度都為該塊內(nèi)有效數(shù)據(jù)的長(zhǎng)度;同一個(gè)塊,同一時(shí)刻支持多次寫操作,不支持多次讀操作。
10.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述幀緩沖區(qū)具有如下特征:幀緩沖區(qū)使用隊(duì)列進(jìn)行管理,隊(duì)列至少含有消息隊(duì)列和空閑隊(duì)列;每個(gè)隊(duì)列元素指向的幀緩沖區(qū)大小是相同的;每個(gè) 隊(duì)列元素和每個(gè)幀緩沖區(qū)是綁定的。
【文檔編號(hào)】G06F9/44GK103729187SQ201310753185
【公開(kāi)日】2014年4月16日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】蔡鐵, 唐飛, 伍星 申請(qǐng)人:深圳信息職業(yè)技術(shù)學(xué)院