馬天乙
【摘要】針對嵌入式設(shè)備中數(shù)據(jù)存儲(chǔ)需求,本文給出了一個(gè)基于VxWorks操作系統(tǒng)和嵌入式SATA NANDrive存儲(chǔ)器的設(shè)計(jì)方案,介紹了硬件構(gòu)成,詳細(xì)描述了在VxWorks操作系統(tǒng)中SATA設(shè)備驅(qū)動(dòng)設(shè)計(jì)過程。
【關(guān)鍵詞】VxWorks;SATA NANDrive;MPC8548E;驅(qū)動(dòng)設(shè)計(jì)
1.引言
隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)應(yīng)用的領(lǐng)域越來越廣泛,包括工業(yè)控制、軍工、航空航天等等,同時(shí)數(shù)據(jù)存儲(chǔ)的需求也無處不在,傳統(tǒng)的機(jī)械硬盤HDD(Hard Disk Drive)由于可靠性等原因已不適合在上述特殊應(yīng)用環(huán)境中使用。固態(tài)電子盤SSD(Solid State Disk)而以其讀寫速度快、防震性能優(yōu)異、低功耗、工作溫度范圍大等優(yōu)點(diǎn),占據(jù)了在嵌入式系統(tǒng)中存儲(chǔ)應(yīng)用的主流地位。
本文針對某設(shè)備中的多路以太網(wǎng)數(shù)據(jù)存儲(chǔ)需求,介紹了一個(gè)以MPC8548E為處理器,SATA NANDrive為存儲(chǔ)芯片,在嵌入式實(shí)時(shí)系統(tǒng)Vxworks環(huán)境下實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)軟硬件設(shè)計(jì)方案,試驗(yàn)證明,連續(xù)寫入數(shù)據(jù)速率大于60MB/s,滿足百兆以太網(wǎng)數(shù)據(jù)存儲(chǔ)需求。
2.硬件設(shè)計(jì)
本設(shè)計(jì)是以MPC8548E為主處理器,通過MPC8548E PCIe接口外接Marvell 88SE9230芯片實(shí)現(xiàn)PCIe到SATA的接口協(xié)議轉(zhuǎn)換,連接4片GLS85LS1032P SATA NANDrive實(shí)現(xiàn)128GB容量SSD存儲(chǔ)。下面詳細(xì)描述硬件設(shè)計(jì)方案。
(1)MPC8548概述
處理器是整個(gè)設(shè)計(jì)的核心器件,本設(shè)計(jì)以Freescale MPC8548E為主處理器。MPC8548E是基于PowerPC架構(gòu)的PowerQuicc III處理器,它基于嵌入式e500內(nèi)核,頻率最高可達(dá)1.2GHz,集成4個(gè)三速以太網(wǎng)控制器(eTSECs),1路PCIe接口。設(shè)計(jì)中MPC8548E頻率設(shè)為800Mhz,PCIe采用x1協(xié)議。
(2)存儲(chǔ)器設(shè)計(jì)
MPC8548E不包含SATA接口,這就需要考慮如何通過現(xiàn)有接口擴(kuò)展出利于數(shù)據(jù)存儲(chǔ)使用的SATA控制器,SATA控制器用來完成SATA SSD的控制和數(shù)據(jù)的存取,設(shè)計(jì)中選用Marvell 88SE9230芯片,實(shí)現(xiàn)PCIe協(xié)議到SATA協(xié)議的轉(zhuǎn)換。88SE9230擁有4個(gè)6G/s的高速SATA3.0接口,設(shè)計(jì)采用SATA 1.0,PCIe 1.0a x1方案,總線速率可達(dá)到1.5Gb/s。
本設(shè)計(jì)選用Greenliant公司生產(chǎn)的GLS85 LS1032P SATA NANDrive作為主存儲(chǔ)芯片。GLS85LS1032P芯片是一個(gè)BGA封裝的工業(yè)級SSD芯片,內(nèi)部集成了SATA接口和32GB SLC NAND Flash,連續(xù)讀寫速率可達(dá)到120/80MB/s,內(nèi)置微控制單元(MCU)把SATA指令轉(zhuǎn)換為對Flash操作需要的數(shù)據(jù)和控制信號,支持?jǐn)?shù)據(jù)緩沖區(qū)與Flash之間DMA方式讀寫,內(nèi)置多任務(wù)接口提升多片F(xiàn)lash同時(shí)讀寫的性能。設(shè)計(jì)中選用4片SATA NANDrive接入88SE9230,實(shí)現(xiàn)128GB存儲(chǔ)量。
3.軟件設(shè)計(jì)
軟件設(shè)計(jì)主要介紹在VxWorks系統(tǒng)中如何實(shí)現(xiàn)SATA NANDrive驅(qū)動(dòng)。
(1)驅(qū)動(dòng)設(shè)計(jì)原理
由于88SE9230是一款透明PCIe橋芯片,對于設(shè)備和設(shè)備驅(qū)動(dòng)器透明,故驅(qū)動(dòng)程序可以簡化為實(shí)現(xiàn)SATA控制器的驅(qū)動(dòng)和管理。
SATA SSD是一種塊設(shè)備。在Vxworks系統(tǒng)下,塊設(shè)備的驅(qū)動(dòng)程序不直接與Vxworks的I/O系統(tǒng)連接,而是掛接在文件系統(tǒng)上,文件系統(tǒng)再與I/O系統(tǒng)連接,用戶通過訪問文件系統(tǒng)訪問塊設(shè)備。Vxworks中塊設(shè)備一般采用dosFs文件系統(tǒng)。它向下提供了標(biāo)準(zhǔn)的接口,可以掛接多種塊設(shè)備驅(qū)動(dòng)。文件系統(tǒng)把自己作為一個(gè)驅(qū)動(dòng)程序裝載到I/O系統(tǒng)中,并把請求轉(zhuǎn)發(fā)給實(shí)際的設(shè)備驅(qū)動(dòng)程序,塊設(shè)備通過調(diào)用文件系統(tǒng)的設(shè)備初始化函數(shù)來安裝驅(qū)動(dòng)。
(2)SATA驅(qū)動(dòng)設(shè)計(jì)
本設(shè)計(jì)采用的是SATA NANDrive,故驅(qū)動(dòng)程序設(shè)計(jì)參照VxWorks6.6下ATA的驅(qū)動(dòng)程序框架,在原有BSP中添加SATA驅(qū)動(dòng)程序。編寫驅(qū)動(dòng)函數(shù)如下:sataDrv:初始化SATA設(shè)備;sataDriveInit:初始化中斷向量、內(nèi)存映射、連接中斷;sataDevCreate:創(chuàng)建塊設(shè)備,初始化設(shè)備描述符;sataBlkDevFill:填寫塊設(shè)備數(shù)據(jù)結(jié)構(gòu);sataBlkWrt:SATA SSD數(shù)據(jù)塊寫入;sataBlkRd:SATA SSD數(shù)據(jù)塊讀取,sataReset:復(fù)位SATA SSD控制器。
系統(tǒng)boot時(shí)會(huì)首先在sysLib.c中sysHw-Init2中調(diào)用sataDriveInit函數(shù)來初始化中斷向量、內(nèi)存映射、連接中斷等,接著在usrConfig.c中調(diào)用sataDrv驅(qū)動(dòng)SATA控制器,完成SATA控制器的配置、SSD識別、SSD參數(shù)獲取、中斷函數(shù)掛接和塊設(shè)備讀寫接口實(shí)現(xiàn)等內(nèi)容。
驅(qū)動(dòng)SATA控制器后,在SATA SSD上建立dosFs文件系統(tǒng)需要以下操作:首先調(diào)用iosDrvInstall初始化dosFs文件系統(tǒng),調(diào)用sataDevCreate創(chuàng)建塊設(shè)備,調(diào)用dcacheDev-Create、usrFdiskPartCreate創(chuàng)建磁盤高速緩沖區(qū)和磁盤分區(qū),運(yùn)行dosFsDevCreate創(chuàng)建dosFs文件系統(tǒng),最后調(diào)用dosFsVolFoemat格式化分區(qū)。
格式化完成后系統(tǒng)就可以訪問SSD分區(qū)和進(jìn)行文件操作了,在Shell里運(yùn)行“devs”命令所顯示出的系統(tǒng)設(shè)備列表可以看到SATA設(shè)備。編寫應(yīng)用程序在SATA SSD上進(jìn)行文件讀寫操作,測試結(jié)果為最高連續(xù)寫速率大于60MB/s,連續(xù)讀速率大于80MB/s,滿足設(shè)計(jì)需求。 4.結(jié)論
本文給出了一個(gè)基于VxWorks操作系統(tǒng)的嵌入式SATA NANDrive存儲(chǔ)器的設(shè)計(jì)方案,詳細(xì)描述了硬件構(gòu)成和軟件驅(qū)動(dòng)設(shè)計(jì)過程。與傳統(tǒng)的機(jī)械硬盤和商用SSD相比較,SATA NANDrive不僅提供了通用的便于實(shí)現(xiàn)的SATA接口,還提供了更高的讀寫速度、更好的環(huán)境適用性,特別適合軍工航電等行業(yè)對數(shù)據(jù)存儲(chǔ)的技術(shù)需求,是嵌入式數(shù)據(jù)存儲(chǔ)未來的一個(gè)重要發(fā)展方向。
參考文獻(xiàn)
[1]Freescale Semiconductor.MPC8548E PowerQUICC IIIIntegrated Processor Hardware Specifications.http://www.Freescale.com.
[2]Marvell.Marvell-88SE92xx-Datasheet.http:/www.marvell.com.
[3]Greenliant.GLS85LS1016P/1032P Industrial Grade SATA NANDrive Datasheet.http:/www.greenliant.com.
[4]肖忠炳等.基于VxWorks的大容量SATA電子盤驅(qū)動(dòng)實(shí)現(xiàn)[J].航空電子技術(shù),2012.
[5]方盈,等.VxWorks下多協(xié)議轉(zhuǎn)換硬件電路及其驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2013,21:5.