0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RTLinux實(shí)時(shí)應(yīng)用程序開發(fā)模式實(shí)現(xiàn)通信接口的設(shè)計(jì)和使用方式

牽手一起夢(mèng) ? 來源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:盧綺閩 , 舒嶸 ? 2020-10-04 18:00 ? 次閱讀

RTLinux作為L(zhǎng)inux最為通用的幾種硬實(shí)時(shí)擴(kuò)展之一,表現(xiàn)了良好的硬實(shí)時(shí)性。同時(shí),為了更有效地為各種實(shí)時(shí)應(yīng)用服務(wù),提供了多種與Linux中非實(shí)時(shí)進(jìn)行通信接口,主要有共享內(nèi)存、RT_FIFO和線程信號(hào)驅(qū)動(dòng)機(jī)制,三者的應(yīng)用重點(diǎn)各不相同。其中前兩種較為常用。由于不的實(shí)現(xiàn)機(jī)理,這兩種接口的應(yīng)用范疇各有側(cè)重。經(jīng)過實(shí)踐,認(rèn)為將以上兩種接口有機(jī)地結(jié)合,利用共享內(nèi)存?zhèn)魉痛笕萘?、?duì)讀/寫時(shí)序要求不高的數(shù)據(jù)信息;同時(shí),利用RT_FIFO輔助實(shí)現(xiàn)對(duì)該共享內(nèi)存的同步控制,能夠綜合兩者的優(yōu)勢(shì),是RTLinux下一種十分有效的實(shí)時(shí)應(yīng)用通信模式。

1 RTLinux的結(jié)構(gòu)和應(yīng)用程序開發(fā)模式

作為L(zhǎng)inux的硬實(shí)時(shí)擴(kuò)展,RTLinux一個(gè)重要的計(jì)準(zhǔn)則在于:盡可能多地利用Linux內(nèi)核所能提供的功能。

顯示、記錄、設(shè)備初始化、阻塞式動(dòng)態(tài)資源分配和模塊化內(nèi)核管理等無實(shí)時(shí)要求或者與硬實(shí)時(shí)性要求相悖的服務(wù)均由Linux提供。RTLinux內(nèi)核則主要為實(shí)時(shí)任務(wù)提供對(duì)硬件的直接訪問,使得它們具有最小的延遲和最優(yōu)先的處理器利用權(quán)。

基于RTLinux實(shí)時(shí)應(yīng)用程序開發(fā)模式實(shí)現(xiàn)通信接口的設(shè)計(jì)和使用方式

基于以上準(zhǔn)則,RTLinux中的實(shí)時(shí)應(yīng)用程序開發(fā)通常具有一個(gè)通用的模式,如圖1所示。按照運(yùn)行環(huán)境和對(duì)實(shí)時(shí)要求的嚴(yán)格程度分為實(shí)時(shí)和非實(shí)時(shí)兩個(gè)模塊。非實(shí)時(shí)模塊的功能包括結(jié)果數(shù)據(jù)顯示。用戶交互、數(shù)據(jù)存儲(chǔ)等;實(shí)時(shí)模塊主要負(fù)責(zé)響應(yīng)數(shù)據(jù)采集外設(shè)的中斷,結(jié)果數(shù)據(jù)的采集。兩者通過RT_FIFO或者共享內(nèi)存進(jìn)行通信,組成一個(gè)完整的實(shí)時(shí)數(shù)據(jù)采集程序。

2 RTLinux中的兩種通信接口

RTLinux提供了RT_FIFO和共享內(nèi)存兩種標(biāo)準(zhǔn)通信接口,用于實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)之間的交互。

2.1 RT_FIFO

RT_FIFO(First-In-First-Out,先進(jìn)先出)是一種提案隊(duì)列機(jī)制組織的字符設(shè)備。在Linux文件系統(tǒng)中,主設(shè)備號(hào)為150。一個(gè)系統(tǒng)平臺(tái)中能夠同加載FIFO的模塊數(shù)RTF_NO定義在rt_fifo_new.c中,一般為64,在文件系統(tǒng)中分別對(duì)慶設(shè)備文件/dev/rtf0..63。在系統(tǒng)資源允許的情況下,一個(gè)用戶進(jìn)程所能同時(shí)使用的FIFO數(shù)和每個(gè)FIFO的容量是沒限制的。

RT_FIFO具有如下特征:

*隊(duì)列中的數(shù)據(jù)傳送采用數(shù)據(jù)流形式,必須自行定義數(shù)據(jù)邊界監(jiān)測(cè)機(jī)制,尤其對(duì)于不定長(zhǎng)度數(shù)據(jù)的傳輸。

*具備完善的同步阻塞機(jī)制,利用同一FIFO進(jìn)行通信的兩進(jìn)程間無需自行增加同步控制。

*一種點(diǎn)對(duì)點(diǎn)的通信通道,不支持單生產(chǎn)者、多消費(fèi)者的使用模式。

作為一個(gè)完善的隊(duì)列模塊,RT_FIFO的使用簡(jiǎn)便易行,具體實(shí)現(xiàn)主要包括創(chuàng)建、讀/寫操作、釋放三個(gè)步驟。在Linux文件系統(tǒng)中,RT_FIFO是一個(gè)字符設(shè)備文件,所以在非實(shí)時(shí)線程中訪問RT_FIFO時(shí),使用標(biāo)準(zhǔn)的字符設(shè)備讀/寫函數(shù)即可(read、write、open、close,etc)。以上函數(shù)的調(diào)用方式均為阻塞式調(diào)用:當(dāng)FIFO中有數(shù)據(jù)可讀時(shí),立即返回;否則,會(huì)陷入無限等待之中。

從RT進(jìn)程中訪問RT_FIFO,所涉及到的RTLAPI如下:

#include

[創(chuàng)建]

int rtf_create(unsigned int fifo,int size);

內(nèi)核空間中,為編號(hào)fifo的RT_FIFO設(shè)備分配size字節(jié)的緩沖區(qū)。fifo對(duì)應(yīng)于所使用RT_FIFO的次設(shè)備號(hào)。

[釋放]

int rtf_destroy(unsigned int fifo);

釋放內(nèi)核空間中次設(shè)備號(hào)為fifo的RT_FIFO設(shè)備緩沖區(qū)。

注意:以上兩個(gè)函數(shù)涉及到內(nèi)核空間的緩沖區(qū)分配,必須分別在Linux的init_module()和cleanup_module()中調(diào)用,或者在用戶空間通過PSC(the user-level real-time signal library,用戶級(jí)實(shí)時(shí)庫(kù)函數(shù))進(jìn)行調(diào)用。

[讀/寫操作]

int rtl_get(unsigned int fifo,char *buf,int count);

從FIFO中讀出長(zhǎng)度為count字節(jié)的數(shù)據(jù),存放buf之中。

Int rtf_put(unsigned int fifo,char * buf,int count);

將長(zhǎng)度為count字節(jié)的數(shù)據(jù)寫入FIFO中。

Int rtf_create_handle(unsigned int fifo,int(%26;amp;handler)(unsigned int fifo));

創(chuàng)建一個(gè)回調(diào)函數(shù)句柄,當(dāng)FIFO被Linux進(jìn)程讀/寫時(shí),被調(diào)用。通常與rtl_get結(jié)合使用,用于異步的從Linux進(jìn)程中接收數(shù)據(jù),從而避免采用輪詢的方式。

2.2 共享內(nèi)存

共享內(nèi)存是指被閑置出來專用于內(nèi)核空間和用戶空間進(jìn)行通信的內(nèi)存區(qū)域。相對(duì)于FIFO具有如下特點(diǎn):

*應(yīng)用程序必須自己定義相應(yīng)的協(xié)議,對(duì)于寫入共享數(shù)據(jù)區(qū)域的有數(shù)據(jù)進(jìn)行保護(hù),如同步控制等。

*數(shù)據(jù)可以既定格式讀/寫,各個(gè)數(shù)據(jù)域的更新十分便易。

*不是點(diǎn)對(duì)點(diǎn)的通信通道,可以支持多生產(chǎn)者、多消費(fèi)者的使用模式,能夠同時(shí)被多個(gè)線程訪問。

在RTLinux下,共享內(nèi)存的使用可采用以下兩種方式:

(1)利用RTLinux中附帶的mbuff模塊

在使用mbuff之前,要求系統(tǒng)中已經(jīng)加載了mbuff.o模塊。該模塊中的兩個(gè)函數(shù)被分別用于分配和釋放所需的內(nèi)存空間。

#include

[分配]

void * mbuff_alloc(const char * name,int size);

從內(nèi)核空間中分配一塊與name相連,大小為size字節(jié)的內(nèi)存空間,返回地址指針,設(shè)備這塊空間的引用標(biāo)識(shí)為1。如與name相連的內(nèi)存空間已經(jīng)存在,就僅僅返回指向該空間的地址指針,同時(shí)將其引用標(biāo)識(shí)加1。

[釋放]

void mbuff_free(const char * name,int size);

將mbuff的引用標(biāo)識(shí)減1。當(dāng)引用標(biāo)識(shí)被減為0時(shí),釋放mbuff。

注意:①mbuff_alloc使用了vmalloc函數(shù),由于分配內(nèi)核空間的需要,會(huì)交換出一系列的內(nèi)核空間頁(yè)面,所以在實(shí)時(shí)線程、中斷處理線程、定時(shí)器中斷線程中調(diào)用這個(gè)函數(shù)是十分危險(xiǎn)的。

②在進(jìn)程結(jié)束前,一定要調(diào)用mbuff_free函數(shù)。Mbuff所占內(nèi)存空間不會(huì)因?yàn)槠湟眠M(jìn)程的結(jié)束而自行釋放。

(2)高地址空間物理內(nèi)存的直接隔離

在系統(tǒng)啟動(dòng)時(shí),隔離出一定大小的高地址空間物理內(nèi)存,使其脫離系統(tǒng)運(yùn)行環(huán)境,作為專用的共享內(nèi)存區(qū)域。

圖4 共享內(nèi)存互斥操作流程圖

在Linux啟動(dòng)配置文件中,插入一行以append關(guān)鍵字起始的命令行,即可實(shí)現(xiàn)高端內(nèi)存空間的隔離。修改后的/etc/lilo.conf文件如下所示:

image=/boot/zImage

label=rtlinuxX.X

root=/dev/hda2

read_only

append=“mem=Xm”

其中,mem的值對(duì)應(yīng)于被隔離空間的起始地址,可以由物理內(nèi)存總?cè)萘繙p去所需共享空間容量得到。但是必須注意,被隔離出的共享空間的容量必須小于/usr/include/asm/param.h文件中定義的頁(yè)面長(zhǎng)度。Intel Pentium系列芯片的頁(yè)面長(zhǎng)度為4MB。

對(duì)共享內(nèi)存空間的存取操作通過訪問其基址來實(shí)現(xiàn)。必須首先定義共享內(nèi)存空間的基址。

#define BASE_ADDRESS(127%26;#215;0x100000)

在實(shí)時(shí)和非實(shí)時(shí)模塊中有不同的基址訪問方法。寫時(shí)模塊運(yùn)行于內(nèi)核地址空間,可以直接將基址作為地址指針進(jìn)行存取,使用語(yǔ)句如下:

unsigned short * sharemem;

sharemem=(unsigned short *)__va(BASE_ADDRESS);

非實(shí)時(shí)模塊運(yùn)行于用戶地址空間,必須先將該物理地址映射入該進(jìn)程虛擬地址空間后,才能對(duì)其進(jìn)行存取。使用命令如下:

#include

#include

#include

int fd;

unsigned short * sharemem;

fd=open(“/dev/mem”,O_RDWR); ①

sharemem=(unsigned short *)mmap(0,buflen,

PROT_READ|PROT_WRITE,

MAP_FILE|MAP_SHARED,

Fd,BASE_ADDRESS); ②

注①:訪問物理內(nèi)存必須打開與其對(duì)應(yīng)的設(shè)備文件/dev/mem。

注②:mmap命令的作用是將設(shè)備文件fd中,從當(dāng)前進(jìn)程的虛擬地址空間,其返回值可被非實(shí)時(shí)進(jìn)程存取。

以上兩種方式在實(shí)現(xiàn)機(jī)理上的不同之處在于,mbuff利用vmalloc從內(nèi)核地址空間分配的共享內(nèi)存空間僅僅在邏輯上連續(xù),空間的大小不受實(shí)際物理內(nèi)存空間的限制;而直接隔離物理內(nèi)存所獲取的緩沖區(qū)物理上連續(xù),但是大小受到物理內(nèi)存空間和當(dāng)前系統(tǒng)狀況的限制。共同之處在于,所獲得的內(nèi)存均被隔離于系統(tǒng)內(nèi)核的運(yùn)行環(huán)境之外,不會(huì)在頁(yè)面交換中被換出,所以以上兩種方法均適用于實(shí)時(shí)應(yīng)用之中。

3 兩種通信接口的結(jié)合

以上兩種通信接口具有不同的適用范疇,為了實(shí)現(xiàn)一個(gè)完整的實(shí)時(shí)應(yīng)用,通常需要將兩者結(jié)合,以一個(gè)實(shí)時(shí)數(shù)據(jù)采集程序?yàn)槔?,?shí)時(shí)模塊和非實(shí)時(shí)模塊之間通常需要傳送兩種類型的數(shù)據(jù);結(jié)果數(shù)據(jù)和控制信息。

結(jié)果數(shù)據(jù):由實(shí)時(shí)模塊周期性產(chǎn)生。非實(shí)時(shí)模塊用于顯示和存儲(chǔ),對(duì)讀/寫的時(shí)序性要求不高,但是通常需要由多個(gè)用戶共享,因此,利用共享內(nèi)存模塊傳輸比較適合。

控制信息:主要用于實(shí)現(xiàn)非實(shí)時(shí)模塊和實(shí)時(shí)模塊之間的交互控制,數(shù)據(jù)量小,但是比較注重信號(hào)讀/寫的時(shí)序性和通信過程中實(shí)時(shí)性,采用RT_FIFO實(shí)現(xiàn)比較適合。

圖2為通用的抽象數(shù)據(jù)流圖。

3.1 共享內(nèi)存的內(nèi)步控制和RT_FIFO的使用

由于對(duì)共享內(nèi)存的存取通過直接訪問指針來實(shí)現(xiàn),操作系統(tǒng)不會(huì)為其提供任何同步控制,應(yīng)用程序必須自行提供握手機(jī)制,來保證讀/寫進(jìn)程之間同步。

實(shí)現(xiàn)同步的一種方式是接收方和發(fā)送方利用消息通信來實(shí)現(xiàn)握手。接收方對(duì)共享內(nèi)存以輪詢的方式監(jiān)測(cè)新數(shù)據(jù)的到來,然后發(fā)送接收信息。為了實(shí)現(xiàn)握手,發(fā)送方對(duì)于每條接收消息都必須回復(fù)一個(gè)確認(rèn)消息,新的接收消息只有在收到確認(rèn)消息以后才能發(fā)出。

這種方式在實(shí)時(shí)模塊和非實(shí)時(shí)模塊中均須要采用輪詢的方式監(jiān)測(cè)新數(shù)據(jù)和消息的到來,因此會(huì)占用較多的處理器資源。所以,可以考慮利用RT_FIFO實(shí)現(xiàn)實(shí)時(shí)模塊和非實(shí)時(shí)模塊之間對(duì)共享內(nèi)存的存取同步。利用RT_FIFO所提供的句柄功能能夠避免實(shí)時(shí)模塊對(duì)接收消息的輪詢監(jiān)測(cè),在一定程度上提高程序運(yùn)行效率。

具體實(shí)現(xiàn),可以通過利用RT_FIFO實(shí)時(shí)傳輸當(dāng)前所寫入或被讀出的共享內(nèi)存塊序號(hào),實(shí)現(xiàn)實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程之間的步。因?yàn)镽T_FIFO是一種單向傳輸隊(duì)列,為了實(shí)現(xiàn)交互,需要兩個(gè)傳輸方向相反的RT_FIFO,連接于兩個(gè)模塊之間,如圖3所示。

圖3中,BufNo為筆者自行定義的隊(duì)列。它的使用主要是為了避免由于RT_FIFO引起的實(shí)時(shí)部分和非實(shí)時(shí)部分之間的死鎖。

實(shí)時(shí)部分和非實(shí)時(shí)部分的各線程路之間對(duì)共享內(nèi)存的訪問為異步進(jìn)行;同時(shí),RTLinux中對(duì)RT_FIFO的進(jìn)行讀/寫的API函數(shù),為阻塞式操作。當(dāng)FIFO0中目前沒有可讀數(shù)據(jù)時(shí),對(duì)rtf_get函數(shù)的調(diào)用會(huì)使程序陷入無限等待之中,很容易造成實(shí)時(shí)模塊和非實(shí)時(shí)模塊之間的死鎖。

為了避免這種情況,可以將BufNo作為緩沖區(qū)與FIFO0的句柄結(jié)合使用,臨時(shí)存放FIFO0中被非實(shí)時(shí)線程寫入的塊序號(hào)。實(shí)時(shí)模塊不再對(duì)FIFO0進(jìn)行讀/寫,而是改由BufNo隊(duì)列中獲取當(dāng)前有效的共享內(nèi)存序號(hào)。如果當(dāng)前無可用數(shù)據(jù),則進(jìn)入周期等待狀態(tài)。

3.2 共享內(nèi)存訪問的互斥

對(duì)共享內(nèi)存訪問的互斥操作,包括兩個(gè)方面:實(shí)時(shí)模塊與非實(shí)時(shí)模塊之間的互斥、非實(shí)時(shí)模塊中各采集線程之間的互斥。

(1)實(shí)時(shí)模塊與非實(shí)時(shí)模塊之間的互斥

多線程之間對(duì)共享資源訪問的互斥,是操作系統(tǒng)中一個(gè)重要的研究分支。但是在實(shí)時(shí)模塊和非實(shí)時(shí)模塊之間,問題變得相對(duì)簡(jiǎn)單。因?yàn)椋趯?shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程之中,實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程運(yùn)行的環(huán)境區(qū)別很大。工作于RTLinux環(huán)境下的實(shí)時(shí)進(jìn)程具有最高的優(yōu)先級(jí),不可能被非實(shí)時(shí)進(jìn)程中斷。所以,在實(shí)現(xiàn)互斥時(shí),只須保護(hù)非實(shí)時(shí)進(jìn)程對(duì)共享資源的訪問即可。

抽象流程如圖4所示。利用共享內(nèi)存區(qū)域的第一個(gè)字節(jié)作為訪問標(biāo)識(shí),實(shí)現(xiàn)非實(shí)時(shí)模塊對(duì)實(shí)時(shí)模塊的互斥。

非實(shí)時(shí)進(jìn)程開始訪問共享區(qū)域時(shí),將此標(biāo)識(shí)置位;訪問結(jié)束時(shí),復(fù)位。實(shí)時(shí)進(jìn)程在訪問共享區(qū)域前先檢測(cè)該標(biāo)識(shí),如果標(biāo)識(shí)允許訪問,則執(zhí)行寫入操作;反之,掛起等待標(biāo)識(shí)位復(fù)位,按既定周期T輪詢。

實(shí)時(shí)進(jìn)程的既定周期T的設(shè)置十分重要,周期過長(zhǎng),會(huì)增加發(fā)生沖突后的等時(shí)間,導(dǎo)致共享內(nèi)存狀態(tài)改變時(shí),無法被及時(shí)寫入;周期過短,增加了系統(tǒng)的輪詢次數(shù),加重實(shí)時(shí)系統(tǒng)的負(fù)擔(dān)。筆者在已實(shí)現(xiàn)的數(shù)據(jù)采集程序中,對(duì)T的不同設(shè)置,所獲得的平均數(shù)據(jù)采集率進(jìn)行了統(tǒng)計(jì),結(jié)果如圖5所示。

注:以上實(shí)驗(yàn)的測(cè)試平臺(tái)為PentiumIII 667,5400轉(zhuǎn)普通硬盤,RTLinux3.1、Linux kernel 2.4.4,數(shù)據(jù)流向?yàn)閿?shù)據(jù)采集外設(shè)至共享內(nèi)存然后存放硬盤,數(shù)據(jù)的產(chǎn)生頻率為10ms。

(2)非實(shí)時(shí)模塊之間的互斥

非實(shí)時(shí)模塊中異步執(zhí)行的各采集線程之間,可以利用互斥變量的加鎖和解鎖實(shí)現(xiàn)對(duì)共享內(nèi)存訪問的互斥。由于互斥區(qū)的執(zhí)行體內(nèi),每次只允許一個(gè)線程進(jìn)入,為了保證程序的執(zhí)行效率,在互斥區(qū)中不宜使用耗時(shí)較長(zhǎng)或阻塞式調(diào)用的函數(shù)。

4 結(jié)論

在RTLinux提供的實(shí)時(shí)模塊和非實(shí)時(shí)模塊之間的通信接口中,RT_FIFO和共享內(nèi)存較為常用,分別適用于不同的數(shù)據(jù)類型通信。本文提出的這種方法,能充分利用兩者的優(yōu)點(diǎn),方便地實(shí)現(xiàn)實(shí)時(shí)與非實(shí)時(shí)之間海量數(shù)據(jù)通信。目前已在rtLinux3.1、Linux kernel 2.4.4系統(tǒng)平臺(tái)上成功實(shí)現(xiàn),并取得了令人滿意的效果。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19035

    瀏覽量

    228452
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11164

    瀏覽量

    208468
  • 通信接口
    +關(guān)注

    關(guān)注

    3

    文章

    234

    瀏覽量

    30946
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    實(shí)時(shí)RTlinux系統(tǒng)配置

    更多技術(shù)干貨,歡迎掃碼關(guān)注博主微信公眾號(hào):HowieXue,一起學(xué)習(xí)探討軟硬件技術(shù)知識(shí)經(jīng)驗(yàn),關(guān)注就有海量學(xué)習(xí)資料免費(fèi)領(lǐng)哦:硬實(shí)時(shí)RTlinux系統(tǒng)配置1. Linux內(nèi)核下載2. 下載與Linux
    發(fā)表于 09-14 06:43

    基于RTlinux的硬實(shí)時(shí)性研究

    L inux若作為一個(gè)操作系統(tǒng),它無法滿足實(shí)時(shí)系統(tǒng)嚴(yán)格的實(shí)時(shí)性要求。RTlinux是在L inux內(nèi)核的下層實(shí)現(xiàn)所得的一個(gè)簡(jiǎn)單的硬實(shí)時(shí)內(nèi)核,
    發(fā)表于 04-24 10:30 ?10次下載

    RTLinux 下的一種實(shí)時(shí)應(yīng)用通信機(jī)制

    介紹RTLinux實(shí)時(shí)應(yīng)用程序開發(fā)模式;詳細(xì)說明兩種在實(shí)時(shí)模塊與非
    發(fā)表于 05-15 13:20 ?10次下載

    嵌入式Linux NFS方式應(yīng)用程序實(shí)現(xiàn)

    嵌入式Linux NFS方式應(yīng)用程序實(shí)現(xiàn):本文在以ARM9 內(nèi)核芯片,處理器為S3C2410 構(gòu)造的開發(fā)板系統(tǒng)上,詳細(xì)討論了如何配置嵌入式Linux NFS
    發(fā)表于 08-02 14:48 ?39次下載

    RTLinux調(diào)度策略的研究

    RTLinux 是Linux 的嵌入式實(shí)時(shí)內(nèi)核,本文首先分析了RTLinux 的工作原理和兩種典型的實(shí)時(shí)調(diào)度算法(RMS 和EDF),然后深入分析了
    發(fā)表于 08-31 10:59 ?13次下載

    基于VC的網(wǎng)絡(luò)實(shí)時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    采用Client/Server 模式,設(shè)計(jì)了網(wǎng)絡(luò)實(shí)時(shí)通信系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)和運(yùn)行方式,并以VC++為開發(fā)工具,通過調(diào)用Winsock,
    發(fā)表于 10-27 15:31 ?26次下載

    基于API實(shí)現(xiàn)通信程序的設(shè)計(jì)

    Windows API(應(yīng)用程序接口實(shí)現(xiàn)通信程序的設(shè)計(jì)。 API(Application Programming Interface,應(yīng)用程序
    發(fā)表于 09-08 14:23 ?2次下載
    基于API<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>通信</b><b class='flag-5'>程序</b>的設(shè)計(jì)

    利用USBXpress開發(fā)包簡(jiǎn)化應(yīng)用程序實(shí)現(xiàn)USB通信設(shè)計(jì)

    傳統(tǒng)的USB設(shè)備驅(qū)動(dòng)程序編寫異常復(fù)雜,程序員往往很難入手。SILICON Laboratories公司提供的USBXpress開發(fā)包大大簡(jiǎn)化了USB通信的應(yīng)用和相關(guān)驅(qū)動(dòng)
    的頭像 發(fā)表于 01-14 08:02 ?2561次閱讀
    利用USBXpress<b class='flag-5'>開發(fā)</b>包簡(jiǎn)化<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>實(shí)現(xiàn)</b>USB<b class='flag-5'>通信</b>設(shè)計(jì)

    如何利用RTLinux進(jìn)行嵌入式應(yīng)用程序開發(fā)

    在進(jìn)一步探討實(shí)時(shí)FIFO的細(xì)節(jié)之前,還要回顧一下實(shí)時(shí)應(yīng)用程序結(jié)構(gòu)的某些部分(圖1)。有效的嵌入式應(yīng)用程序設(shè)計(jì)方法是將實(shí)時(shí)部分與固有的非
    的頭像 發(fā)表于 11-01 09:06 ?5177次閱讀
    如何利用<b class='flag-5'>RTLinux</b>進(jìn)行嵌入式<b class='flag-5'>應(yīng)用程序</b>的<b class='flag-5'>開發(fā)</b>

    利用RTLinux開發(fā)嵌入式應(yīng)用程序

    對(duì)于中國(guó)工程師來說,利用實(shí)時(shí)Linux開發(fā)嵌入式應(yīng)用程序是他們面臨的困難之一,本文以RTLinux為例,并結(jié)合最為業(yè)界關(guān)注的是RTAI進(jìn)行討論,盡管這兩種
    發(fā)表于 04-02 14:37 ?253次閱讀

    RTLinux下的一種實(shí)時(shí)應(yīng)用通信機(jī)制

    ? 摘要:RTLinux實(shí)時(shí)應(yīng)用程序開發(fā)模式;詳細(xì)說明兩種在實(shí)時(shí)模塊與非
    發(fā)表于 04-02 14:43 ?316次閱讀

    Linux下開發(fā)應(yīng)用程序的兩種接口實(shí)現(xiàn)

    在Linux下開發(fā)應(yīng)用程序可以調(diào)用兩種接口實(shí)現(xiàn),一種是直接調(diào)用系統(tǒng)調(diào)用接口,另一種是調(diào)用庫(kù)函數(shù)來實(shí)現(xiàn)
    的頭像 發(fā)表于 09-08 13:52 ?3492次閱讀
    Linux下<b class='flag-5'>開發(fā)</b><b class='flag-5'>應(yīng)用程序</b>的兩種<b class='flag-5'>接口</b>來<b class='flag-5'>實(shí)現(xiàn)</b>

    嵌入式Linux應(yīng)用程序開發(fā)-(9)UDP網(wǎng)絡(luò)通信應(yīng)用程序(UDP-Socket)

    基于UDP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序(UDP-Socket)前兩篇文章介紹了基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序。嵌入式Linux應(yīng)用程序
    發(fā)表于 11-02 12:21 ?35次下載
    嵌入式Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開發(fā)</b>-(9)UDP網(wǎng)絡(luò)<b class='flag-5'>通信</b><b class='flag-5'>應(yīng)用程序</b>(UDP-Socket)

    使用NVIDIA Maxine改善實(shí)時(shí)通信應(yīng)用程序

      實(shí)時(shí)通信應(yīng)用程序(如虛擬協(xié)作和內(nèi)容創(chuàng)建應(yīng)用程序)的音頻和視頻質(zhì)量是衡量用戶實(shí)時(shí)通信體驗(yàn)的真正
    的頭像 發(fā)表于 03-31 16:19 ?2623次閱讀
    使用NVIDIA Maxine改善<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>通信</b><b class='flag-5'>應(yīng)用程序</b>

    開發(fā)java應(yīng)用程序的基本步驟是

    Java應(yīng)用程序。確定您希望應(yīng)用程序能夠執(zhí)行的任務(wù)和提供的功能。這將有助于指導(dǎo)您在開發(fā)過程中進(jìn)行決策并確定實(shí)現(xiàn)代碼的方式。 2.設(shè)計(jì)
    的頭像 發(fā)表于 11-28 16:52 ?1436次閱讀