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