国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VxWorks5.5下電子盤DMA驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)

2016-12-03 05:12尹加豹
電子技術(shù)應(yīng)用 2016年11期
關(guān)鍵詞:電子盤驅(qū)動(dòng)程序扇區(qū)

尹加豹

(江蘇自動(dòng)化研究所,江蘇 連云港 222061)

VxWorks5.5下電子盤DMA驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)

尹加豹

(江蘇自動(dòng)化研究所,江蘇 連云港 222061)

在嵌入式實(shí)時(shí)操作系統(tǒng)中,經(jīng)常需要實(shí)時(shí)讀寫硬盤數(shù)據(jù),為了提高 VxWorks5.5系統(tǒng)下 IDE電子盤讀寫速度,提出了一種基于ICH7-M南橋芯片的DMA模式驅(qū)動(dòng)軟件的設(shè)計(jì)方法。該方法采用風(fēng)河公司提供的磁盤驅(qū)動(dòng)程序框架,設(shè)計(jì)了新的讀寫接口函數(shù),新驅(qū)動(dòng)遵循ATA-6接口協(xié)議并采用UDMA2傳輸模式,可使電子盤讀寫速度提高十余倍。應(yīng)用結(jié)果表明,該方法運(yùn)行穩(wěn)定,系統(tǒng)的實(shí)時(shí)性提高,充分發(fā)揮了電子盤性能。

VxWorks5.5;DMA;電子盤;驅(qū)動(dòng)

0 引言

電子盤又稱電子硬盤,它采用符合硬盤接口技術(shù)(Advanced Technology Attachment,ATA)工業(yè)標(biāo)準(zhǔn)的控制技術(shù),克服了傳統(tǒng)機(jī)械硬盤的弊病,能夠提供高性能和高可靠的數(shù)據(jù)儲(chǔ)存,被廣泛應(yīng)用于工業(yè)控制、軍工、航空航天等領(lǐng)域[1]。VxWorks是風(fēng)河公司開發(fā)的嵌入式實(shí)時(shí)操作系統(tǒng),其中VxWorks5.5版本具有較高的可靠性和卓越的實(shí)時(shí)性,在很多領(lǐng)域都有廣泛的應(yīng)用[2]。但是 Vx-Works5.5系統(tǒng)原生電子盤驅(qū)動(dòng)僅支持過(guò)程輸入輸出(Process Input Output,PIO)方式,存取速度較慢,無(wú)法滿足某些應(yīng)用的實(shí)時(shí)性要求,需要設(shè)計(jì)基于直接存儲(chǔ)器存?。―irect Memory Access,DMA)方式的驅(qū)動(dòng),以提升電子盤讀寫速度,擴(kuò)展其應(yīng)用領(lǐng)域。

1 硬件環(huán)境

硬件平臺(tái)為中船重工第七一六研究所生產(chǎn)的CM6066單板加固計(jì)算機(jī)。該計(jì)算機(jī)主板采用 Intel Core Duo L2400/L2500低功耗處理器,配以Intel 945GM芯片組,南橋芯片為 ICH7-M(82801GBM),提供的接口包括SATA、ATA/IDE、USB2.0、千兆以太網(wǎng)及串口等,主要功能框圖見(jiàn)圖1。

圖1 CM6066單板加固計(jì)算機(jī)模塊功能框圖

該計(jì)算機(jī)模塊搭載的電子盤為源科公司生產(chǎn)的飛龍V系列閃存硬盤,它采用NandFlash閃存芯片,基于標(biāo)準(zhǔn)的ATA/IDE端口,支持ATA-6協(xié)議。

2 硬盤工作原理分析

硬盤的讀寫是一個(gè)復(fù)雜的過(guò)程,它涉及到硬盤的接口方式、尋址方式、控制寄存器模型等。硬盤的存儲(chǔ)介質(zhì)也從最初的磁性材料、光磁介質(zhì)發(fā)展到半導(dǎo)體存儲(chǔ)材料,但不同硬盤的讀寫方法和尋址方式都一樣,因?yàn)椴煌脖P都遵循ATA協(xié)議。ATA協(xié)議的最新版本為 ATA-8,ATA-6及之前的版本僅支持 IDE接口,從ATA-7開始,協(xié)議增加了對(duì)SATA接口的支持。在ATA-6協(xié)議中,硬盤參數(shù)信息共占用512 B,分為256個(gè)WORD,表1簡(jiǎn)單說(shuō)明了部分字節(jié)代表的意義。

表1 ATA-6硬盤參數(shù)簡(jiǎn)要描述表[3]

在ATA-6協(xié)議中,CPU與硬盤設(shè)備的通信是通過(guò)讀寫設(shè)備接口上的寄存器實(shí)現(xiàn)的。接口寄存器分為兩組,一組為命令塊寄存器,用于CPU向設(shè)備發(fā)送命令或從設(shè)備讀取狀態(tài);另一組為控制塊寄存器,用于CPU控制設(shè)備或獲取備用狀態(tài),如表2所示。

表2 硬盤設(shè)備接口寄存器分布表

各接口寄存器功能如下所述:

數(shù)據(jù)寄存器:用于CPU與硬盤設(shè)備之間的數(shù)據(jù)交換,該種方式即PIO模式,DMA傳輸不使用該寄存器;

錯(cuò)誤寄存器:用于記錄硬盤執(zhí)行命令后的出錯(cuò)信息;

特征寄存器:用于存儲(chǔ)命令代碼;

扇區(qū)計(jì)數(shù)寄存器:用于存儲(chǔ)要讀/寫的扇區(qū)總數(shù);

LBA高/中/低8位寄存器:用于LBA尋址;

設(shè)備寄存器:用于使能被選設(shè)備并提供配置信息;

狀態(tài)寄存器:用于記錄硬盤設(shè)備執(zhí)行命令后的狀態(tài);

命令寄存器:用于執(zhí)行命令;

備用寄存器:其內(nèi)部數(shù)據(jù)與狀態(tài)寄存器相同;

設(shè)備控制寄存器:用于控制硬盤設(shè)備。

3 驅(qū)動(dòng)程序設(shè)計(jì)

3.1 驅(qū)動(dòng)與文件系統(tǒng)關(guān)系

VxWorks下的設(shè)備包括字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備等,電子盤等存儲(chǔ)設(shè)備屬于塊設(shè)備,此類型設(shè)備以“塊”為單位進(jìn)行數(shù)據(jù)操作,可大大提高數(shù)據(jù)的訪問(wèn)速度,但也帶來(lái)了巨大的數(shù)據(jù)維護(hù)工作量,因此,塊設(shè)備驅(qū)動(dòng)程序與 I/O系統(tǒng)之間還存在一個(gè)中間層,即文件系統(tǒng)[4]。VxWorks使用的 dosFs文件系統(tǒng)是一種與 MS_DOS文件系統(tǒng)兼容的文件系統(tǒng),能夠滿足實(shí)時(shí)應(yīng)用的多種需求[5]。dosFs文件系統(tǒng)以簇為單位讀寫數(shù)據(jù),每簇包含64個(gè)扇區(qū),每一個(gè)扇區(qū)(512 B)為一個(gè)存儲(chǔ)塊,所以一次讀寫4 KB數(shù)據(jù)[6]。應(yīng)用程序訪問(wèn)電子盤數(shù)據(jù)時(shí),I/O系統(tǒng)會(huì)調(diào)用文件系統(tǒng)計(jì)算出相應(yīng)扇區(qū)的地址及數(shù)量,而后文件系統(tǒng)再調(diào)用電子盤驅(qū)動(dòng)程序訪問(wèn)電子盤,完成讀寫操作。以讀操作為例,具體過(guò)程如圖2所示[7]。

圖2 讀取文件過(guò)程示意圖

3.2 初始化

電子盤在PIO模式下,僅使用命令塊寄存器中的數(shù)據(jù)寄存器進(jìn)行數(shù)據(jù)交換,傳輸過(guò)程十分簡(jiǎn)單,但在DMA模式下需要專用的IDE控制器,傳輸過(guò)程比較復(fù)雜。IDE控制器集成在ICH7-M芯片組中,是標(biāo)準(zhǔn)PCI設(shè)備,在256 B的配置空間中,偏移 0x20的寄存器配置為 IDE主控寄存器組基地址。主控寄存器組包含3個(gè)寄存器,分別為主控命令寄存器、主控狀態(tài)寄存器、物理設(shè)備描述符表指針寄存器,各寄存器地址映射如表3所示。

在初始化過(guò)程中,首先搜尋 PCI-IDE控制器并獲取寄存器基地址、中斷信號(hào)量等信息,之后分配必要的資源,如同步信號(hào)量、看門狗、PRDT表等,然后掛接中斷服務(wù)程序,建立CPU與控制器的連接。連接成功后首先獲取電子盤參數(shù)信息,然后根據(jù)參數(shù)設(shè)置讀寫傳輸模式和其他一些支持的屬性,如電源管理、SMART指令等。在電子盤設(shè)備初始化過(guò)程中,CPU會(huì)向設(shè)備發(fā)送指令來(lái)進(jìn)行操作。發(fā)送指令時(shí),CPU先填寫各種指令參數(shù)到相關(guān)寄存器中,然后向命令寄存器發(fā)送命令字啟動(dòng)指令,之后設(shè)備開始執(zhí)行指令[9]。

表3 主控寄存器分布表[8]

指令執(zhí)行一般要經(jīng)過(guò)以下幾種狀態(tài):

(1)發(fā)送指令,進(jìn)入等待狀態(tài);

(2)設(shè)備執(zhí)行完指令后發(fā)出中斷,檢驗(yàn)設(shè)備狀態(tài);

(3)如狀態(tài)正確,則進(jìn)行后續(xù)操作;否則返回。

設(shè)置數(shù)據(jù)傳輸模式時(shí),為保證電子盤能夠更高效工作,優(yōu)先選擇UDMA傳輸模式;若電子盤不支持UDMA,則選擇MDMA模式;若不支持MDMA,則選擇SDMA模式;若不支持SDMA,則選擇PIO模式。

3.3 DMA讀寫設(shè)計(jì)

每一次DMA傳輸都需要設(shè)置一系列寄存器,使得開銷很大,然而文件系統(tǒng)對(duì)硬盤的I/O請(qǐng)求是不連續(xù)的,物理內(nèi)存中的數(shù)據(jù)也是不連續(xù)的。為了提高傳輸效率,需要將不連續(xù)的數(shù)據(jù)組合在一起,再啟用DMA操作,這些數(shù)據(jù)就能夠一次傳輸完成。為此,DMA傳輸使用了物理設(shè)備描述符表(Physical Region Descriptor Table,PRDT),表中的描述符指向內(nèi)存緩沖區(qū)的起始地址和長(zhǎng)度,這樣一次DMA傳輸,即可將表中記錄的數(shù)據(jù)都傳輸完成,PRDT表結(jié)構(gòu)示意圖如圖3所示。

圖3 PRDT表結(jié)構(gòu)示意圖

在PRDT表中,每個(gè)描述符占8 B,前4 B指向緩沖區(qū)地址,后 4 B低 16 bit表示緩沖區(qū)長(zhǎng)度,地址和長(zhǎng)度的第0位必須為0,當(dāng)緩沖區(qū)長(zhǎng)度為0時(shí),數(shù)據(jù)長(zhǎng)度為64 KB,EOT位為緩沖區(qū)結(jié)束標(biāo)志位(為 1表示當(dāng)前緩沖區(qū)為最后一個(gè))。當(dāng)執(zhí)行DMA讀時(shí),控制器將電子盤中扇區(qū)數(shù)據(jù)讀到各個(gè)內(nèi)存緩沖區(qū)中;當(dāng)執(zhí)行DMA寫時(shí),控制器將各個(gè)緩沖區(qū)中數(shù)據(jù)寫入對(duì)應(yīng)的扇區(qū)中。

通常情況下,硬盤的DMA讀寫過(guò)程一般需要如下幾個(gè)步驟:

(1)首先判斷硬盤狀態(tài),當(dāng)其處于就緒狀態(tài)才可以進(jìn)行操作;

(2)填寫控制器相關(guān)寄存器指定起始邏輯塊(LBA尋址方式)和扇區(qū)總數(shù);

(3)啟動(dòng)控制器,開始讀寫操作;

(4)讀寫完畢后,提起中斷通知。

在VxWorks5.5中,電子盤驅(qū)動(dòng)讀寫硬盤的接口讀函數(shù)定義為ataBlkRd,寫函數(shù)定義為ataBlkWrt,讀寫函數(shù)最終調(diào)用ataBlkRW實(shí)現(xiàn)讀寫功能。該函數(shù)定義為STATUS ataBlkRW(ATA_DEV*pDev,sector_t startBlk,UINT32 nBlks,char*pBuf,int direction)[10]。該接口函數(shù)僅使用PIO模式進(jìn)行讀寫操作,需要使用DMA讀寫模式將其重新實(shí)現(xiàn)。具體過(guò)程如下:

(1)將主控狀態(tài)寄存器的Interrupt及 Error位置 1,清除錯(cuò)誤、中斷等狀態(tài)值;

(2)設(shè)置主控命令寄存器的 R/W位,讀電子盤時(shí),設(shè)為 1,寫電子盤時(shí),設(shè)為 0;

(3)將PRDT表地址寫入描述符表指針寄存器,并根據(jù)緩沖區(qū)地址及長(zhǎng)度配置PRDT表;

(4)將要傳輸?shù)纳葏^(qū)地址、數(shù)量等信息寫入 ATA設(shè)備寄存器,方法如下:在LBA 48b尋址模式下,首先將要讀?。▽懭耄┑纳葏^(qū)數(shù)高 8位、低 8位寫入 Sector Count寄存器,然后將 LBA(31:24)、LBA(7:0)寫入 LBA Low寄存器;將 LBA(39:32)、LBA(15:8)寫入 LBA Mid寄存器;將LBA(47:40)、LBA(23:16)寫入LBA High寄存器;接著配置Device寄存器,其bit 4表示設(shè)備號(hào),主盤置0,從盤置 1,bit 6表示 LBA尋址,需置1;最后將操作指令寫入Command寄存器,讀操作指令為0x25,寫操作指令為0x35;

(5)主控命令寄存器的 Start/Stop位置 1,開啟 DMA傳輸;

(6)待傳輸結(jié)束后,硬盤發(fā)出一個(gè)中斷請(qǐng)求,PCI-IDE控制器隨之向CPU提起中斷;

(7)響應(yīng)中斷后,將主控狀態(tài)寄存器的 Interrupt位置1,清除中斷信息;

(8)最后將主控命令寄存器的Start/Stop位置0,關(guān)閉DMA傳輸。

4 試驗(yàn)結(jié)果與分析

在CM6066單板加固計(jì)算機(jī)(南橋芯片為ICH7-M,即82801GBM)上測(cè)試新設(shè)計(jì)的DMA模式驅(qū)動(dòng),測(cè)試結(jié)果顯示可成功讀寫電子盤文件,接著對(duì)讀寫速度進(jìn)行測(cè)試,并與原生PIO方式驅(qū)動(dòng)的讀寫速度進(jìn)行對(duì)比。測(cè)試方法如下:采用系統(tǒng)自帶函數(shù) tickGet()進(jìn)行計(jì)時(shí),測(cè)試寫速度時(shí)將一段內(nèi)存數(shù)據(jù)(200 MB)寫入電子盤中;測(cè)試讀速度時(shí)將電子盤中文件(200 MB)讀入內(nèi)存中,由此可計(jì)算出讀寫速度[11]。分別使用兩種驅(qū)動(dòng)進(jìn)行測(cè)試,結(jié)果表明,采用DMA方式的驅(qū)動(dòng)可顯著提升電子盤讀寫速度,具體數(shù)值見(jiàn)表4。

表4 驅(qū)動(dòng)讀寫速度對(duì)比表(單位:MB/s)

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

本文開展的基于VxWorks5.5系統(tǒng)的電子盤DMA驅(qū)動(dòng)軟件的研究具有很大的實(shí)用價(jià)值,以Intel ICH7-M芯片為硬件平臺(tái),完成了新驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn),并通過(guò)應(yīng)用測(cè)試證明該設(shè)計(jì)行之有效,能夠顯著提升電子盤性能。該驅(qū)動(dòng)程序工作穩(wěn)定、性能可靠、實(shí)時(shí)性較好,目前已應(yīng)用在某電子海圖項(xiàng)目中,可大幅縮短海圖文件的加載時(shí)間,實(shí)現(xiàn)了海圖的快速拖拽及縮放功能。該驅(qū)動(dòng)亦可應(yīng)用于其他要求高實(shí)時(shí)性的工業(yè)控制領(lǐng)域。

[1]潘惠芹.電子盤的設(shè)計(jì)及實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30 (16):194-197.

[2]陳學(xué)兵,沈毅男,張振華.VxWorks5.5在龍芯 2號(hào)處理器的移植和性能分析[J].計(jì)算機(jī)測(cè)量與控制,2012,20(9):2542-2545.

[3]MCLEAN P T.AT attachment with packet interface-6(ATA/ ATAPI-6)[R].USA:American National Standards Institute,2002:115-126.

[4]WindRiver.VxWorks programmer′s guide 5.5[M].USA:WindRiver,2002.

[5]王晉東,黃海,王坤,等.基于VxWorks的 dosFs文件系統(tǒng)分析與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(32):85-87.

[6]張輝,陳昕,沈晶晶,等.大容量機(jī)載存儲(chǔ)系統(tǒng)設(shè)計(jì)與仿真評(píng)價(jià)[J].電光與控制,2014,21(5):104-108.

[7]張楊,于銀濤.VxWorks內(nèi)核、設(shè)備驅(qū)動(dòng)與 BSP開發(fā)詳解[M].北京:人民郵電出版社,2009.

[8]Intel Corporation.Intel ICH7 family datasheet[M].USA:Intel,2006.

[9]李志鵬,王立強(qiáng),康建斌,等.連續(xù)數(shù)據(jù)記錄系統(tǒng)中 IDE數(shù)據(jù)接口的實(shí)現(xiàn)[J].無(wú)線電工程,2010,40(2):48-50.

[10]曹桂平.VxWorks設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.

[11]毛曉梅.基于 VxWorks6.6系統(tǒng)的 SATA控制器驅(qū)動(dòng)技術(shù)研究[J].工業(yè)控制計(jì)算機(jī),2013,26(11):129-133.

Development of flash disk DMA driver on VxWorks5.5 operating system

Yin Jiabao
(Jiangsu Automation Research Institute,Lianyungang 222061,China)

In the embedded real-time operating system,reading and writing hard disk data are common.To improve the reading and writing speeds of Integrated Drive Electronics(IDE)Flash disk,a new Direct Memory Access(DMA)driver of south bridge chipset ICH7-M is introduced.This driver uses the hard disk driver framework provided by the WindRiver company and designs new reading and writing functions.This new driver follows the Advanced Technology Attachment with Packet Interface-6(ATA/ATAPI-6) protocol and Ultra DMA Mode-2(UDMA2)is used to read and write.The test result shows that the speed is scaled up more than 10 times,and real-time of the system is improved.This driver is stable and takes full advantage of IDE Flash disk.

VxWorks5.5;DMA;Flash disk;driver

TP336

A

10.16157/j.issn.0258-7998.2016.11.009

尹加豹.VxWorks5.5下電子盤 DMA驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(11):40-43.

英文引用格式:Yin Jiabao.Development of flash disk DMA driver on VxWorks5.5 operating system[J].Application of Electronic Technique,2016,42(11):40-43.

2016-06-05)

尹加豹(1986-),男,碩士,工程師,主要研究方向:嵌入式驅(qū)動(dòng)開發(fā)。

猜你喜歡
電子盤驅(qū)動(dòng)程序扇區(qū)
分階段調(diào)整增加扇區(qū)通行能力策略
阻止Windows Update更新驅(qū)動(dòng)程序
計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
郵幣卡電子盤發(fā)展研究
管制扇區(qū)復(fù)雜網(wǎng)絡(luò)特性與抗毀性分析
U盤故障排除經(jīng)驗(yàn)談
基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
雙刃郵幣電子盤
OMRON RS6500電腦體育彩票終端機(jī)電子盤驅(qū)動(dòng)卡故障點(diǎn)析
妙用鼠標(biāo)驅(qū)動(dòng)