在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > uClinux操作系統(tǒng)的實(shí)時(shí)化分析與研究

            uClinux操作系統(tǒng)的實(shí)時(shí)化分析與研究

            作者: 時(shí)間:2012-05-21 來源:網(wǎng)絡(luò) 收藏

            3.3 的中斷處理機(jī)制

            的最核心部分就是其中斷處理機(jī)制。構(gòu)建了一個(gè)小接管硬件及中斷,支持EDF,RM兩種經(jīng)典實(shí)時(shí)調(diào)度算法,Linux作為此的最低優(yōu)先級任務(wù)被執(zhí)行。因而實(shí)時(shí)任務(wù)執(zhí)行時(shí),Linux及其應(yīng)用程序?qū)⒈粨屨?。RTAI引入了軟中斷模擬技術(shù),在發(fā)生硬件中斷時(shí),只是把它放到中斷記錄表中,在沒有實(shí)時(shí)應(yīng)用運(yùn)行時(shí)才向Linux派發(fā)這些被保留的中斷。同時(shí)實(shí)時(shí)內(nèi)核還監(jiān)控Linux的開/關(guān)中斷原語,以避免這些操作把實(shí)際的中斷關(guān)閉而影響實(shí)時(shí)內(nèi)核的響應(yīng)時(shí)間。主要包括以下幾個(gè)方面:

            ①函數(shù)替換

            首先是Linux的開/關(guān)中斷等函數(shù)被RTAI提供的函數(shù)所替代,這樣Linux不能真正的關(guān)閉中斷,而只是一個(gè)軟件的機(jī)制。當(dāng)外設(shè)中斷到來時(shí),RTAI的替換函數(shù)必須檢查硬件中斷標(biāo)志是否關(guān)閉和調(diào)用是否來自RTAI上下文。在此兩種情況之下,不能直接調(diào)用Linux的中斷處理函數(shù),中斷分發(fā)器只用于當(dāng)CPU處于Linux上下文并且Linux開中斷時(shí),才調(diào)用Linux的中斷處理例程(ISR)。

            ②全局變量

            RTAI為每個(gè)中斷源定義了一個(gè)全局的數(shù)據(jù)結(jié)構(gòu):

            struct linux_irq{struct list_head list;

            int irq;

            int masked;

            int pending;}

            其中l(wèi)ist_head用于從Linux的中斷掛起隊(duì)列中插入或刪除。irq被初始化為此結(jié)構(gòu)體所對應(yīng)的中斷號。masked是一個(gè)標(biāo)志位,可能具有以下3種值:1表示在中斷延遲函數(shù)中設(shè)置;2表示由Linux中斷mask函數(shù)設(shè)置;3表示由Linux中斷unmask函數(shù)設(shè)置。

            ③中斷傳遞

            中斷傳遞可能被RTAI中斷分發(fā)器或Linux的開中斷函數(shù)所調(diào)用。當(dāng)Linux打開中斷時(shí),檢查掛起中斷鏈表是否為空,若不為空,則循環(huán)進(jìn)行處理,直到所有中斷都被處理為止。其算法如下:

            while(irqlist 不空){

            從irqlist隊(duì)列中取出一個(gè)中斷;

            if(該中斷正在被屏蔽) continue;

            else{關(guān)閉Linux中斷;執(zhí)行中斷處理例程;開中斷;}}

            3.4 RTAI的任務(wù)調(diào)度

            ①細(xì)粒度定時(shí)器的實(shí)現(xiàn)

            標(biāo)準(zhǔn)Linux的定時(shí)器提供10ms的調(diào)度粒度,不足以達(dá)到實(shí)時(shí)響應(yīng)速度的要求。RTAI通過提高系統(tǒng)時(shí)鐘精度改寫了時(shí)鐘處理程序,使之支持更高分辨率時(shí)鐘的周期模式,引入了兩種定時(shí)器模式:periodic(周期性)和one shot(一次性)。對于周期性實(shí)時(shí)任務(wù)應(yīng)用periodic模式,只需要在初始化時(shí)對定時(shí)器進(jìn)行設(shè)置,保證了處理效率;對于非周期實(shí)時(shí)任務(wù)應(yīng)用one shot模式。在任何時(shí)刻,時(shí)鐘的下一次中斷間隔由所有定時(shí)器中到期最早的一個(gè)來決定。一旦定時(shí)器到期,內(nèi)核便能夠立刻響應(yīng),內(nèi)核的響應(yīng)開銷只由中斷服務(wù)的時(shí)間所決定,使得實(shí)時(shí)應(yīng)用的響應(yīng)時(shí)間可以達(dá)到納秒級的水平,完全可以滿足一般工業(yè)應(yīng)用實(shí)時(shí)控制的要求。

            ②調(diào)度機(jī)制

            在實(shí)時(shí)任務(wù)之間、實(shí)時(shí)任務(wù)與Linux應(yīng)用之間提供豐富的通訊機(jī)制(如FIFO管道、MBUFF共享內(nèi)存等)進(jìn)行通信;Linux應(yīng)用可以通過這些通訊機(jī)制與實(shí)時(shí)應(yīng)用交互,同時(shí)也可以通過實(shí)時(shí)內(nèi)核中的實(shí)時(shí)應(yīng)用代理(LXRT)運(yùn)行實(shí)時(shí)任務(wù)。

            任何實(shí)時(shí)任務(wù)的優(yōu)先級都要高于Linux,只有當(dāng)沒有實(shí)時(shí)任務(wù)運(yùn)行時(shí),Linux才被調(diào)度,從而保證了RTAI的。任務(wù)的調(diào)度周期在任務(wù)初始化時(shí)由程序員指定,也可在某個(gè)時(shí)刻調(diào)用API修改。rt_task_struct包含多個(gè)雙向指針,所有的任務(wù)(包括Linux)都包括在各個(gè)鏈表中。如 ready任務(wù)鏈表,其中Linux為鏈表頭,當(dāng)發(fā)生調(diào)度時(shí),RTAI在ready鏈表中搜尋優(yōu)先級最大的任務(wù)并切換執(zhí)行,當(dāng)沒有實(shí)時(shí)任務(wù)在ready態(tài)時(shí),則切換至Linux系統(tǒng)。

            4. RTAI在上的移植

            4.1 RTHAL的移植

            圖2基于RTAI的應(yīng)用程序結(jié)構(gòu)

            借鑒RTHAL的思想,對核心進(jìn)行改動(dòng),將其與中斷控制器隔離,核心中的所有中斷操作指令都被替換成相應(yīng)的宏。對于RTAI的移植而言,最重要的部分就是RTHAL的移植,RTAI絕大部分與處理器相關(guān)的代碼都在這里,這里以作者所使用的S3C4510B(ARM7的核)和μClinux環(huán)境為例進(jìn)行說明。由于RTAI已經(jīng)有ARM處理器上的版本,因此可以參照ARM7處理器的RTHAL來移植到S3C4510B上。由于μClinux為針對沒有MMU處理器的操作系統(tǒng),因此RTAI需要去除與MMU相關(guān)的代碼。對于S3C4510B和μClinux,其RTHAL主要包括如下數(shù)據(jù)結(jié)構(gòu):

            {指向IDT的指針;

            打開/關(guān)閉中斷函數(shù)(cli,stiflags);

            控制中斷mask/unmask函數(shù);

            中斷狀態(tài)的數(shù)據(jù)描述符(status,hander,nestedlevel,…);}



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉