亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Nucleus 系統(tǒng)中驅(qū)動(dòng)接口的實(shí)現(xiàn)

        2012-07-20 09:40:10劉洲洲
        微處理機(jī) 2012年2期
        關(guān)鍵詞:服務(wù)程序源碼調(diào)用

        劉洲洲,李 賀

        (1.西安航空技術(shù)高等專(zhuān)科學(xué)校電氣工程系,西安 710077;2.中國(guó)電子科技集團(tuán)公司第四十七研究所,沈陽(yáng) 110032)

        1 引言

        隨著嵌入式系統(tǒng)的飛速發(fā)展,嵌入式實(shí)時(shí)操作系統(tǒng)廣泛地應(yīng)用在制造工業(yè)、過(guò)程控制、通訊、儀器儀表、汽車(chē)、船舶、航空航天、軍事、裝備、消費(fèi)類(lèi)產(chǎn)品等方面。今天嵌入式系統(tǒng)帶來(lái)的工業(yè)年產(chǎn)值超過(guò)了1 萬(wàn)億美元。當(dāng)前嵌入式操作系統(tǒng)有數(shù)百種,比較流行的有Nucleus Plus,QNX,Lynx OS,Psos,VRTX,VXWorks,Windows CE 等。它們各有特色,用戶可以根據(jù)自身的軟硬件環(huán)境要求,選擇合適的操作系統(tǒng)。Nucleus 已經(jīng)成為嵌入式應(yīng)用的潮流和方向,剖析Nucleus 中多進(jìn)程控制的實(shí)現(xiàn)方法具有重要的意義[1]。

        2 關(guān)于Nucleus

        嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus是美國(guó)著名RTOS 廠商ATI(AcceleratedTechnologyInc)公司,為實(shí)時(shí)嵌入式應(yīng)用而設(shè)計(jì)的一個(gè)搶先式多任務(wù)操作系統(tǒng)內(nèi)核。只需一次性購(gòu)買(mǎi)Licenses,就可以獲得操作系統(tǒng)的源碼。

        Nucleus 對(duì)于各層協(xié)議都提供源碼,其95%的代碼是用ANSIC 寫(xiě)成的,非常便于移植并支持當(dāng)前流行的大多數(shù)RISC、CISC、DSP 處理器,比如:80x86(實(shí)時(shí)、保護(hù)模式)、68xxx、PowerPC、i960、MIPS、SH、ARM、ColdFire 等。Nucleus 系統(tǒng)對(duì)于不同的處理器,操作系統(tǒng)的源碼大部分是相同的,只有5%的源碼是用匯編寫(xiě)的跟CPU 有關(guān)。如果使用另外的CPU,則只用修改5、6個(gè)匯編程序就可以進(jìn)行移植。但是對(duì)于不同系列的處理器,它們的Compiler、Linker、Debugger是不同的,而且編譯預(yù)處理的過(guò)程也是不一樣的,這就要投入一部分力量去進(jìn)行操作系統(tǒng)的移植[2]。

        Nucleus 不用寫(xiě)板支持軟件包(BSP),因?yàn)椴僮飨到y(tǒng)已經(jīng)開(kāi)放,不同的目標(biāo)板在操作系統(tǒng)BOOT時(shí)可以通過(guò)修改源碼進(jìn)行不同的配置,同時(shí)調(diào)試時(shí)也可以跟蹤到中斷、寄存器那一級(jí),簡(jiǎn)化了硬件調(diào)試。Nucleus PLUS是一組C 函數(shù)庫(kù),應(yīng)用程序代碼與核心函數(shù)連接在一起,生成一個(gè)目標(biāo)代碼,下載到目標(biāo)板的RAM 中或直接燒錄到目標(biāo)板的ROM 中執(zhí)行。在典型的目標(biāo)環(huán)境中,Nucleus PLUS 核心代碼區(qū)一般不超過(guò)20K 字節(jié)大小,內(nèi)核規(guī)模非常小。

        3 系統(tǒng)驅(qū)動(dòng)實(shí)現(xiàn)步驟

        3.1 系統(tǒng)結(jié)構(gòu)

        Nucleus 系統(tǒng)結(jié)構(gòu)如圖1 所示。

        圖1 Nucleus 系統(tǒng)結(jié)構(gòu)框圖

        系統(tǒng)復(fù)位時(shí),系統(tǒng)從驅(qū)動(dòng)引導(dǎo),開(kāi)始對(duì)硬件的Register、端口、中斷、clock 及必要的外設(shè)進(jìn)行初始化。

        驅(qū)動(dòng)初始化成功后,進(jìn)入Nucleus 系統(tǒng)層,將整個(gè)控制權(quán)交給操作系統(tǒng)。

        在操作系統(tǒng)層,開(kāi)始也是進(jìn)行一些操作系統(tǒng)的初始化工作,重載操作系統(tǒng)所需的中斷服務(wù)程序(ISR),啟動(dòng)操作系統(tǒng)所需的時(shí)鐘,調(diào)用Application_Initialize()函數(shù)。Application_Initialize()函數(shù)是操作系統(tǒng)為Application 提供的接口,圖形系統(tǒng)、驅(qū)動(dòng)、文件系統(tǒng)、GUI、啟動(dòng)Desktop 任務(wù)等初始化工作都在這個(gè)函數(shù)中進(jìn)行。最后進(jìn)入OS的控制中心,進(jìn)行任務(wù)調(diào)度管理。將控制權(quán)交給操作系統(tǒng)之前,驅(qū)動(dòng)層不能調(diào)用任何操作系統(tǒng)層的函數(shù)。由于Nucleus 操作系統(tǒng)調(diào)用的模塊增多,會(huì)導(dǎo)致__main()函數(shù)中啟動(dòng)SWI 中斷,從而導(dǎo)致系統(tǒng)異常。因此,在bios模塊中不能把retarget.c 文件連接到目標(biāo)碼中,但是這樣做又會(huì)導(dǎo)致程序的全局變量初始化失敗,解決的方法是在BIOS 啟動(dòng)后,不調(diào)用__main(),改調(diào)用

        Init_SysData()。

        3.2 通用接口API 實(shí)現(xiàn)方法

        (1)啟動(dòng)部分

        中斷向量表位于系統(tǒng)空間的邏輯地址0x0 處,具有如下結(jié)構(gòu):

        (2)BIOS 層應(yīng)該提供如上所述的中斷向量表、系統(tǒng)啟動(dòng)代碼、中斷服務(wù)程序,來(lái)保證系統(tǒng)的基本運(yùn)行。處理器復(fù)位后即進(jìn)入系統(tǒng)啟動(dòng)入口(0x0),執(zhí)行BIOS 所提供的啟動(dòng)程序。在這里BIOS 應(yīng)該初始化或重新設(shè)置MCU/DSP的狀態(tài)或參數(shù);另外,BIOS 應(yīng)該提供可供OS 重載的中斷服務(wù)程序功能。BIOS 啟動(dòng)完畢即進(jìn)入NUCLEUS 操作系統(tǒng)的啟動(dòng)部分(OsStartup()),將控制權(quán)交給OS,OS 會(huì)通過(guò)BIOS提供的中斷服務(wù)重載功能將中斷入口切換到自己的中斷服務(wù)程序中。同時(shí)BIOS 還需要告訴OS系統(tǒng)RAM 空間的offset 和size,OS 將據(jù)此進(jìn)行資源分配等,BIOS 應(yīng)該為OS 分配一個(gè)專(zhuān)用的定時(shí)器Timer,供Nucleus OS 使用;同時(shí)返回此定時(shí)器的中斷向量號(hào)。

        (3)中斷部分:如上所述,驅(qū)動(dòng)應(yīng)該提供可供操作系統(tǒng)重載的中斷服務(wù)功能。驅(qū)動(dòng)向操作系統(tǒng)提供接口:Extern void ReloadIntEntry(void*handler);功能:載入Nucleus OS的中斷服務(wù)跳轉(zhuǎn)表。操作成功后,硬件的所有中斷都進(jìn)入Nucleus OS 中斷管理中心,然后,由Nucleus OS 中斷管理中心調(diào)度該中斷的低級(jí)中斷服務(wù)子程序LISR。

        (4)LISR(低級(jí)中斷服務(wù)程序)和HISR(高級(jí)中斷服務(wù)程序)部分:Nucleus的中斷服務(wù)是一種管理式的服務(wù),分為L(zhǎng)ISR 和HISR。每一種中斷都需要向操作系統(tǒng)注冊(cè)該中斷向量,中斷產(chǎn)生后通過(guò)該中斷向量注冊(cè)的低級(jí)中斷服務(wù)程序(LISR)來(lái)激活高級(jí)的中斷服務(wù)程序(HISR)。LISR 主要完成硬件中斷的處理及激活HISR。HISR的調(diào)度類(lèi)似于任務(wù),具有優(yōu)先級(jí),可以使用大多數(shù)Nucleus的系統(tǒng)調(diào)用。OS 封裝了中斷過(guò)程中的現(xiàn)場(chǎng)保護(hù)、恢復(fù)和調(diào)度等,向BIOS 層提供如下接口:STATUS OS_Register_LISR(U8 vector,void (*new_lisr)(INT));功能:向Nucleus OS 注冊(cè)一個(gè)低級(jí)中斷服務(wù)程序(LISR)。用戶每打開(kāi)一個(gè)新的硬件中斷,都必須先調(diào)用此功能函數(shù)向Nucleus OS 注冊(cè),否則,將出錯(cuò)。

        (5)操作系統(tǒng)定時(shí)器:驅(qū)動(dòng)應(yīng)該為操作系統(tǒng)分配一個(gè)專(zhuān)用的定時(shí)器Timer,供Nucleus OS 使用;同時(shí)返回此定時(shí)器的中斷向量號(hào)。驅(qū)動(dòng)向操作系統(tǒng)提供的接口:Extern U32 OpenOsTimer(U16 ms);功能:打開(kāi)操作系統(tǒng)專(zhuān)用的定時(shí)器。Extern void ClearOsTimerPnd(void);功能:進(jìn)入Timer 中斷后,清除Timer 中斷的狀態(tài)位,使Timer 中斷復(fù)位。

        (6)UART 驅(qū)動(dòng):UART 應(yīng)該向OS 提供UART設(shè)備的初始化、參數(shù)的設(shè)置等功能。OS 內(nèi)置了I/O設(shè)備的統(tǒng)一管理模塊,包含兩個(gè)I/O 緩沖,通信事件處理等等。操作系統(tǒng)為每個(gè)UART 設(shè)備分配一個(gè)設(shè)備號(hào),對(duì)應(yīng)如下:

        通信設(shè)備驅(qū)動(dòng)管理為UART 提供下列接口:

        Extern BOOLEAN commdev_read(U8_T dev_id,U8_T code);功能:設(shè)備接收到一個(gè)字符后,交給OS的通信設(shè)備驅(qū)動(dòng)管理;

        Extern BOOLEAN commdev_write(U8_T dev_id,U8_T *pCode);功能:設(shè)備發(fā)送一個(gè)字符前,從OS的隊(duì)列管理模塊中取出下一個(gè)要發(fā)送的字節(jié);

        (7)驅(qū)動(dòng)的初始化Nucleus OS 啟動(dòng)后,會(huì)回調(diào)一個(gè) 驅(qū)動(dòng)提供的初始化所有Driver的函數(shù),該函數(shù)接口如下所示:void DriverInit(void);驅(qū)動(dòng)中的所有初始化工作都必須在此回調(diào)函數(shù)中完成,否則系統(tǒng)異常。

        4 結(jié)束語(yǔ)

        Nucleus是一種實(shí)時(shí)、多任務(wù)的嵌入式操作系統(tǒng)。它可以管理各種系統(tǒng)資源,調(diào)度任務(wù)的運(yùn)行。Nucleus 使嵌入式多任務(wù)開(kāi)發(fā)省時(shí)、省力,并且提高效率。它已成為嵌入式應(yīng)用的潮流和方向。深入剖析Nucleus 驅(qū)動(dòng)通信接口的實(shí)現(xiàn)機(jī)理,對(duì)于嵌入式實(shí)時(shí)操作系統(tǒng)的開(kāi)發(fā)具有重要意義。

        [1]Nucleus Plus Reference Manual[M].Unites States:AcceleratedTechnology,Inc.,2000.

        [2]魏振華.嵌入式實(shí)時(shí)操作系統(tǒng)Nucleus 中線程控制部件的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與研究,2003,16(4);97-99.

        猜你喜歡
        服務(wù)程序源碼調(diào)用
        基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
        基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
        企業(yè)如何保護(hù)源碼
        基于C#的進(jìn)程守護(hù)程序的設(shè)計(jì)
        視聽(tīng)(2020年3期)2020-06-11 14:28:18
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
        久久国产精品亚洲我射av大全| 欧美国产日产一区二区 | 最新国产精品久久精品| 国内精品久久久久久无码不卡| 亚洲国产日韩欧美高清片a| 丰满人妻被公侵犯的视频| 国产成人无码a区在线观看导航| 特级做a爰片毛片免费看108| 无码av在线a∨天堂毛片| 色婷婷av一区二区三区不卡| 国产精品一区二区三区卡| 亚洲av无码专区在线播放中文| 成人无码h真人在线网站| 青青草免费在线视频导航 | 人妻无码一区二区三区免费| 国产av一区二区三区日韩| 亚洲AV无码日韩一区二区乱| 国产高清精品一区二区| 亚欧美日韩香蕉在线播放视频| 国产欧美日韩专区| 免费观看在线视频一区| 国产午夜视频在线观看.| 精品国产一区二区三区av片| 人伦片无码中文字幕| 视频一区中文字幕日韩| 男人添女人囗交做爰视频| 精品久久亚洲中文无码| 91精品国产无码在线观看| 国产激情视频在线观看大全| 97无码免费人妻超级碰碰夜夜 | 日本老年人精品久久中文字幕| 日本不卡视频一区二区| 影音先锋中文字幕无码资源站 | 亚洲人成网站18禁止久久影院| 国产91对白在线观看| 亚洲一区二区岛国高清| 午夜天堂精品久久久久| 久久久久无码精品亚洲日韩| 国产黄色污一区二区三区| 国产网站一区二区三区| 欧美疯狂做受xxxx高潮小说|