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

        ?

        Ramdisk 技術(shù)應(yīng)用于RTEMS 文件系統(tǒng)的研究

        2014-07-13 12:07:16李順
        電腦知識與技術(shù) 2014年5期

        摘要:目前大多數(shù)嵌入式系統(tǒng)使用基于Flash設(shè)備的文件系統(tǒng),但由于Flash設(shè)備成本較高、速度較慢,并不適合對數(shù)據(jù)進行頻繁的訪問和查詢,因此在這種情況下,考慮選用在嵌入式設(shè)備中成本低、容量大、速度快的內(nèi)存上來建立文件系統(tǒng)。利用Ramdisk技術(shù)在內(nèi)存中模擬磁盤設(shè)備,配置并初始化Ramdisk,在經(jīng)過分析FAT分區(qū)組織形式的基礎(chǔ)上編寫格式化函數(shù)將Ramdisk格式化為FAT文件系統(tǒng),從而實現(xiàn)了RTEMS上文件系統(tǒng)的創(chuàng)建。

        關(guān)鍵詞:嵌入式文件系統(tǒng);RTEMS;Ramdisk;FAT

        中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)05-0935-03

        Research and Implementation of the Filesystems on RTEMS Based on Ramdisk Technology

        LI Shun

        (College of Information Engineering, Shenyang Radio and Television University, Shenyang 110003, China)

        Abstract: Now most of the embedded systems use the filesystems based on flash media for storing, accessing and managing data, Since flash chips are not suitable for frequent data access and query operations due to high cost and low speed, DRAM is used as a major medium for embedded filesystems. it expatiates on simulating a disk device on DRAM with Ramdisk technology and initializing and configuring this Ramdisk, then programming a function for formatting Ramdisk to implement the filesystem on RTEMS on the basis of understanding FAT partition format.

        Key words: embedded filesystem; RTEMS; Ramdisk; FAT

        1 概述

        RTEMS的全稱是實時多處理器系統(tǒng)(Real-Time Executive for Multiprocessor Systems),是前美國軍方研制的嵌入式系統(tǒng),最早用于美國國防系統(tǒng),它的特點是非常的穩(wěn)定,而且速度快,源代碼開放。它是面向?qū)ο蟮膶崟r嵌入式系統(tǒng),在RTEMS中,任務(wù)、中斷、內(nèi)存等等都是對象,RTEMS提供了大量的對象控制API,能動態(tài)管理這些對象,這些API能大大縮短程序代碼量和開發(fā)周期。

        在RTEMS上開發(fā)Ramdisk,是將Ramdisk設(shè)計為一個內(nèi)存中存儲數(shù)據(jù)的塊設(shè)備驅(qū)動程序,類似于硬盤,軟盤等其他IDE設(shè)備。它作為一個塊設(shè)備向系統(tǒng)注冊,有自己的設(shè)備名,這樣應(yīng)用程序就可以通過設(shè)備名來訪問Ramdisk。RTEMS系統(tǒng)提供了一些統(tǒng)一的標準I/O管理函數(shù),來屏蔽底層驅(qū)動的差異性。使用系統(tǒng)提供的這些管理函數(shù)可以簡化Ramdisk的設(shè)計,并為應(yīng)用程序提供統(tǒng)一的API接口。

        2 Ramdisk技術(shù)

        Ramdisk就是從內(nèi)存空間中劃分一部分區(qū)域來模擬磁盤分區(qū)來保存數(shù)據(jù),就是把內(nèi)存假設(shè)為一個磁盤驅(qū)動器,并且在它的上面存儲文件。這樣當(dāng)嵌入式系統(tǒng)啟動時,將Flash中的數(shù)據(jù)拷貝到Ramdisk中,然后在系統(tǒng)的運行過程中,數(shù)據(jù)操作全部在內(nèi)存中進行,大大提高了運行的速度。

        2.1 Ramdisk技術(shù)的特點

        在嵌入式系統(tǒng)中,通常沒有磁盤設(shè)備,數(shù)據(jù)都存儲在各種不可擦寫或可擦寫的半導(dǎo)體芯片中。當(dāng)需要存儲一些數(shù)據(jù)到Flash上時,可能同時會使其它操作變得緩慢,例如當(dāng)調(diào)用一個寫操作時,就需要等待數(shù)據(jù)完全被寫入,這會使線程間的通信停頓若干毫秒。在這些情況下,Ramdisk技術(shù)的優(yōu)勢就顯現(xiàn)出來。

        Ramdisk提高了應(yīng)用程序的速度,像數(shù)據(jù)庫查詢這些頻繁對存儲器進行讀寫的應(yīng)用將最大程度地發(fā)揮Ramdisk的優(yōu)點。

        Ramdisk最大的優(yōu)點是速度快。Ramdisk還具有安全性信息保護的功能。Ramdisk的另一優(yōu)點是具有高度的耐用性。

        Ramdisk是一個內(nèi)核級別的驅(qū)動,它為操作系統(tǒng)提供標準的磁盤驅(qū)動。對Ramdisk進行適當(dāng)?shù)呐渲?,使其在系統(tǒng)啟動的時候自動加載存儲器內(nèi)容,在系統(tǒng)關(guān)閉的時候?qū)?shù)據(jù)保存到存儲器中,也可以選擇性地保存數(shù)據(jù)。

        2.2 Ramdisk在系統(tǒng)中的層次結(jié)構(gòu)

        Ramdisk驅(qū)動層在RTEMS系統(tǒng)中的層次結(jié)構(gòu)如圖1所示,最底層是Ramdisk驅(qū)動層,它包含最基本的Ramdisk設(shè)備初始化和對設(shè)備的打開、關(guān)閉、讀、寫、控制驅(qū)動函數(shù);驅(qū)動層之上是文件系統(tǒng)層,通過調(diào)用本實驗編寫的格式化函數(shù)對文件系統(tǒng)進行格式化;最上層是應(yīng)用程序?qū)樱俏挥谖募到y(tǒng)之上的具體的應(yīng)程序。

        圖1 Ramdisk在RTEMS中的層次結(jié)構(gòu)

        3 Ramdisk驅(qū)動

        塊設(shè)備驅(qū)動要為該塊設(shè)備提供通用的系統(tǒng)調(diào)用,一般是打開設(shè)備、關(guān)閉設(shè)備、讀設(shè)備、寫設(shè)備和對設(shè)備的控制。

        3.1 Ramdisk驅(qū)動基本操作

        Ramdisk作為一種塊操作設(shè)備包含了四個基本函數(shù):ramdisk_read(),ramdisk_write(),ramdisk_ioctl()和ramdisk_initialize()。

        ramdisk_read()函數(shù)為Ramdisk設(shè)備的讀請求處理函數(shù),這個函數(shù)從Ramdisk中拷貝數(shù)據(jù)到指定的緩沖區(qū),然后調(diào)用callout函數(shù)通知上層服務(wù)數(shù)據(jù)讀取完成。

        ramdisk_write()函數(shù)為Ramdisk設(shè)備的寫請求處理函數(shù),該函數(shù)從指定的緩沖區(qū)拷貝數(shù)據(jù)到Ramdisk,然后調(diào)用callout函數(shù)通知上層服務(wù)寫數(shù)據(jù)完成。

        ramdisk_ioctl()函數(shù)為特殊的I/O處理函數(shù),用戶可以定義一些系統(tǒng)標準定義接口之外的一些對設(shè)備的I/O操作,Ramdisk驅(qū)動中的ioctl函數(shù)定義了ramdisk_read()和ramdisk_write()兩個操作,它通過參數(shù)提供的請求信息來決定是對Ramdisk進行讀還是寫。

        ramdisk_initialize()函數(shù)為Ramdisk設(shè)備初始化函數(shù),它根據(jù)事先配置好的Ramdisk屬性(包括Ramdisk的塊大小,塊數(shù)目,塊在內(nèi)存中的地址等)來配置適當(dāng)?shù)腞amdisk。只有Ramdisk初始化之后,用戶才能來操作它。

        3.2 Ramdisk驅(qū)動數(shù)據(jù)結(jié)構(gòu)

        1)內(nèi)部Ramdisk描述符

        它定義了Ramdisk的基本屬性,包括塊的大小、個數(shù)和地址。Ramdisk驅(qū)動拷貝數(shù)據(jù)的基本單位是塊,結(jié)構(gòu)體中的每個變量的具體值在執(zhí)行ramdisk_initialize()的時候被設(shè)定。

        struct ramdisk

        {int block_size; /* Ramdisk設(shè)備塊的大小 */

        int block_num; /* Ramdisk設(shè)備塊的數(shù)目 */

        void *area; /* Ramdisk 塊在內(nèi)存中的地址 */

        rtems_boolean initialized; /* Ramdisk初始化標志,如果Ramdisk被初始化,該值賦1,否則該值為0 */

        rtems_boolean malloced; /* 如果Ramdisk是系統(tǒng)動態(tài)分配的內(nèi)存,該值為1,否則該值為0 */

        };

        2) 塊設(shè)備請求結(jié)構(gòu)

        blkdev_request是用來從塊設(shè)備中讀取或者向塊設(shè)備中寫入一定數(shù)量塊的數(shù)據(jù),該結(jié)構(gòu)體是RTEMS為塊設(shè)備定義的統(tǒng)一標準變量。

        typedef struct blkdev_request

        {blkdev_request_op req; /* 塊設(shè)備操作請求,讀操作或?qū)懖僮?*/

        blkdev_request_cb req_done; /* 返回函數(shù) */

        void *done_arg; /* 傳給返回函數(shù)的變量表的地址 */

        rtems_status_code status; /* 最后一次I/O操作完成狀態(tài) */

        int error; /* 如果status!= RTEMS_SUCCESSFUL,這個值包含錯誤碼,即錯誤的類型 */

        blkdev_bnum start; /* 開始塊號,即I/O操作從第幾塊開始 */

        rtems_unsigned32 count; /* 進行數(shù)據(jù)交換的塊的個數(shù) */

        rtems_unsigned32 bufnum; /* 緩沖池的個數(shù) */

        blkdev_sg_buffer bufs[0]; /* 分散型/聚集型緩沖列表 */

        } blkdev_request;

        3) Ramdisk主/從設(shè)備號

        主/從設(shè)備號用來表示一個具體的設(shè)備:major是設(shè)備在設(shè)備驅(qū)動表中的索引值,通過該值可以找到該設(shè)備驅(qū)動在設(shè)備驅(qū)動表中的位置;minor表示同種設(shè)備中的某一具體設(shè)備,例如ramdisk0。

        rtems_device_major_number major;

        rtems_device_minor_number minor;

        4 Ramdisk驅(qū)動函數(shù)流程

        4.1 ramdisk_read()函數(shù)

        函數(shù)原型:static int ramdisk_read(struct ramdisk *rd, blkdev_request *req);

        struct ramdisk *rd:指向Ramdisk類型結(jié)構(gòu)的指針

        blkdev_request *req:指向READ塊設(shè)備請求結(jié)構(gòu)的指針。返回值為:ioctl返回值

        該函數(shù)將數(shù)據(jù)從內(nèi)存拷貝到提供的緩沖區(qū)并調(diào)用函數(shù)通知上層讀操作已完成。如圖2所示。

        圖2 ramdisk_read()流程圖

        4.2 ramdisk_write()函數(shù)

        函數(shù)原型:

        static int ramdisk_write(struct ramdisk *rd, blkdev_request *req);

        struct ramdisk *rd:指向Ramdisk類型的指針

        (下轉(zhuǎn)第954頁)

        (上接第937頁)

        blkdev_request *req:指向WRITE塊設(shè)備請求結(jié)構(gòu)的指針。返回值為:ioctl。

        該函數(shù)從提供的緩沖區(qū)中將數(shù)據(jù)拷貝出來并調(diào)用函數(shù)通知上層寫操作已完成。如圖3所示。

        5 分析與結(jié)論

        隨著嵌入式系統(tǒng)硬件設(shè)備的普及和價格的不斷降低,以及嵌入式系統(tǒng)應(yīng)用領(lǐng)域的不斷擴大,應(yīng)用中出現(xiàn)越來越復(fù)雜的數(shù)據(jù)資源需要管理,因此使用文件系統(tǒng)成為嵌入式系統(tǒng)應(yīng)用的一個必然趨勢。

        采用Ramdisk技術(shù)在RTEMS系統(tǒng)中建立一個FAT格式的文件系統(tǒng),解決嵌入式設(shè)備中成本低、容量大、速度快的內(nèi)存上來建立文件系統(tǒng)的需求。

        參考文獻:

        [1] 宋廷強,高樹靜.控制嵌入式微控制器與處理器設(shè)計[M]. 北京:社機械工業(yè)出版社出版,2011.

        [2] 王威.嵌入式微控制器So8AW原理與實踐[M].北京:北京航空航天大學(xué)出版社出版,2009.

        [3] Todd D.Morton. 嵌入式微控制器(英文影印版)[M].北京:科學(xué)出版社出版,2002.

        [4] 陳忠平.51單片機C語言程序設(shè)計經(jīng)典實例[M].北京:電子工業(yè)出版社出版,2012.

        [5] 劉建輝.單片機智能控制技術(shù)[M].北京:國防工業(yè)出版社出版,2007.

        俺去啦最新地址| 黄页国产精品一区二区免费| 99麻豆久久精品一区二区| 亚洲精品国产一二三区| 无码免费一区二区三区| 亚洲国产婷婷香蕉久久久久久| 日本久久高清一区二区三区毛片| 久久精品国产四虎| av永久天堂一区二区三区蜜桃| 国产的自拍av免费的在线观看| 久久精品亚洲一区二区三区浴池| 日韩精品一区二区三区视频| 青青草视频在线视频播放| 放荡成熟人妻中文字幕| 轻点好疼好大好爽视频| 久久国产成人精品国产成人亚洲| 熟女人妻中文字幕一区 | 亚洲 自拍 另类小说综合图区| 高清国产日韩欧美| 精品国精品自拍自在线| 变态调教一区二区三区女同| 成熟丰满熟妇高潮xxxxx视频| ZZIJZZIJ亚洲日本少妇| 国产丝袜美腿嫩模视频诱惑| 国产精品区一区二区三在线播放| 日日噜噜夜夜狠狠久久无码区| 亚洲日日噜噜噜夜夜爽爽| 国产一区二区三区最新地址 | 国产精品扒开腿做爽爽爽视频| 亚洲av无码专区亚洲av| 日韩女优中文字幕在线| 自拍偷自拍亚洲精品第按摩| 免费看黄色电影| 日本女优中文字幕看片| 日日高潮夜夜爽高清视频| 免费网站看av片| 成人欧美在线视频| 日韩一级精品亚洲一区二区精品| 久久中文骚妇内射| 亚洲一区二区三区日本久久九| 初尝人妻少妇中文字幕在线|