引言
隨著科學技術的不斷發展.數據的存儲和傳輸在嵌入式系統有了越來越重要的地位。海量數據存儲是當前科技發展中的—個熱點領域.它的應用也變的日益廣泛。
設計嵌入式海量數據采集存儲系統首先需要考慮的問題是軟硬件接口的設計。只有軟硬件接口定義清晰.協同工作順利。才能保證軟件與硬件組合為一個系統。軟硬件接口設計又分為2個具體的問題:一是硬件接口連線的定義是否合理;二是軟件上如何正確地收、發信息以及交換數據。必須選擇合理的CPU來解決這兩個問題。ARM核CPU以其高性能、小體積、低功耗和多供應源的出色結合而著名.它的另—個顯著優點是易移植各種嵌人式實時操作系統.對于海量存儲系統,這是非常必要的。此外,SD卡存儲技術.目前設計成熟、應用廣泛目使用極為簡捷。
因此,本設計選擇基于ARM的嵌入式結構作為海量存儲的控制系統.使用高效便捷的CAN-BUS作為數據采集通道.采用SD卡作為存儲介質.同時也為以后進一步完善系統功能提供了良好的解決方案。下面將圍繞基于ARM的汽車實驗數據海量存儲系統的硬件設計和軟件設計展開論述。
1 系統硬件設計
1.1 系統總體設計
通過分析系統的功能,根據模塊的實際需要,設計中選用了具有CAN-BUS以及SD/MMC卡管理功能的高性能ARM處理器:LPC2378。LPC2378是一款基于ARM7的微控制器,十分適用于需要串行通信的場合.且其內部包含CAN通道。所以需要考慮針對CAN總線的接口設計及其隔離電路的設計(詳述見下文)。在它的基礎上.再配上電源以及存儲器等芯片,就構成了一個完整的嵌入式系統。系統總體框圖如圖1所示:
圖1 系統總體框圖
1.2 SD存儲卡接口設計
本次方案選定的LPC2378微控制器內部帶有SD卡控制器,支持SD卡的SD總線模式.因此.我們可以直接使用該控制器來訪問卡。接口電路(如圖2所示)包括4個部分:
圖2 SD存儲卡接口電路
1.SD總線:如圖所示。微控制器的P0.22、P2.11、P2.12、P2.13、P0.20根據引腳功能.直接連接到卡座的相應接口。
2.SD卡ESD保護電路:如圖所示.在卡座的數據總線DAT0-DAT3、時鐘線CLK和命令線CMD上.使用了—個ESD保護器件PESD5VOL6U。這是—個專用于SD/MMC卡的ESD保護器件。它的作用是:當卡插人或拔出時,保護卡不受高壓靜電的損害。
3.卡供電控制:用可控方式給卡供電,這是為了防止SD卡進入不確定狀態時,可以通過重新上電給卡復位。可控電路采用P型MOS管2SJ355.由ARM的GPIO口 P0.25進行控制。當P0.25輸出高電平時。2SJ355斷開卡的電源;當P0.25輸出低電平時,2SJ355導通VCC3.3電源給卡供電。采用2sJ355的目的是當它開通時。管子上的壓降比較小.在保證SD/MMC卡工作允許電壓的情況下。也可以使用其它P型的MOS管。
4.卡檢測電路:卡檢測電路包括兩部分.卡是否完全插入到卡座中和卡是否寫保護。檢測信號以兩個引腳的電平方式輸出。當卡插入到位時.卡座的CARD—INSERT腳由于卡座內部觸點連接到GND,輸出低電平:當卡拔出時.該引腳由于上掩電阻的存在而輸出高電平。該輸出由ARM的輸入引腳P2.5來檢測。卡是否寫保護的檢測原理與此相同。
2 系統驅動程序設計
鑒于本系統的高實時性要求.在模塊軟件設計前首先在LPC2378上移植了μC/OS-II。μc/OS-II是一個高性能的嵌入式實時操作系統。能高效地實現任務切換、任務調度、任務問通信、同步、互斥、實時時鐘管理、中斷管理等功能。μC/OS-II也是—個移植性很強的操作系統.系統移植時只需要修改和硬件有關的源代碼即可。
2.1 系統軟件流程
使用定時中斷方式采集CAN總線中的數據。在μC/OS-Ⅱ主函數中建立一個空閑任務TASK0.配置和初始化定時器0和實時時鐘,啟動多任務操作系統.并記錄其啟動時間。接著在TASK0任務中初始化ADC、定時器等系統硬件,創建控制、存儲采樣信息的信號量和消息郵箱.并創建SD卡文件寫入任務、采樣任務和FS文件管理系統任務。其中,文件管理任務的優先級最高.SD卡寫入任務最低。而采樣任務是由中斷服務程序(ISR)控制的.定時器時間到后,觸發中斷,ISR即發送信號量給采樣任務,隨即開始一次硬件采樣。SD卡文件寫入任務和采樣任務的流程圖分別如圖3、圖4所示。
圖3 SD卡文件寫入任務流程圖
圖4 采樣任務流程圖
在采樣中有兩個問題需要注意.首先是所有的采樣值都必須加上采樣時問的數據,方便后期的實驗結果分析.所以在硬件設計中使用到了LPC2378的實時時鐘功能(RTC)。第二個問題是FS文件系統管理任務在控制SD卡寫入任務時.是以ASCII碼的形式往SD卡中寫入數據,因此在數據存儲前比較將A/D采樣結果轉換成ASCⅡ碼。
2.2 CAN總線初始化設計
CAN控制器的寄存器比較多.但其通信流程與常規通信接口UART大體是一致的.所以初始化CAN的過程,包括對CAN的時鐘頻率.CAN的引腳一級波特率的設置等。需要注意的是。所有設置必須要在CAN控制器處于復位模式下時進行。
初始化CAN控制器使用函數CAN_Init().它包括了兩路的CAN控制器的同時配置。
CAN總線的初始化程序關鍵代碼:
void CAN_Init(unsigned char Ch,unsigned long Baud)
{
unsigned long addr
/*配置CAN控制器引腳*/
PCONP |=0x01L《《13; /*打開CAN控制器電源*/
PINSEL0&=~(Ox03L《《0); /*通道IRD*/
PINSEL0 |=(0xO1L《 PINSEL0&=~(Ox03L《《2); /*通道ITD*/
PINSEL0 |=(0x01L《《2);
。。.
addr=(unsigned long)(&CAN1BTR)+Ch*CANOFFSET;
RGE(addr)=Baud; /*獲取CH路的CANIBTR寄存器地址.并設定波特率*/
。。.
}
2.3 SD/MMC接口的初始化設計
SD接口的初始化在TASK0任務中進行.其功能通過調用SDCammand函數實現。SDCammand函數包括底層SD驅動程序和操作系統上層接口程序。SDCammand函數的關鍵代碼如下:
uint16 SDCammand(uint8 Cammand,void * Parameter)
{
/*定義相關變量*/
switch(cammand)
{
case DISK_INIT: /*設備初始化*/
SD_Initialize(&sds); /*完成SD卡的硬件初始化*/
case DISK_CLOSE: /*關閉驅動器.移除驅動程序*/
case DISK_READ_SECTOR:?/*讀扇區*/
case DISK_WRITE_SECTOR:?/*寫扇區*/
。。.
}
retum rt; /*rt負責返回各種底層驅動返回值*/
}
3 結語
詳細論述了基于ARM的汽車實驗數據海量存儲系統的軟件和硬件設計.該系統在以LPC2378微處理器和μC/OS一Ⅱ操作系統組成的平臺上完成了對汽車同步器實驗臺各項參數的采集、處理、存儲等功能。該系統性能穩定可靠、實時性強、設計簡單.在實際應用中已達到了預期的效果。文中所述海量存儲系統也可應用于其它需要大量數據處理的工控實驗場合.具有參考意義。
本文作者創新點:1、采用LPC2378為系統控制單元核心;2、采用便攜,成本低廉的SD卡作為海量存儲單元;3、經實踐測試.本系統完全可應用于各類汽車工控實驗數據的存儲,經濟效益可觀。
責任編輯:gt
-
操作系統
+關注
關注
37文章
6850瀏覽量
123431 -
存儲系統
+關注
關注
2文章
413瀏覽量
40880 -
嵌人式
+關注
關注
0文章
10瀏覽量
7522
發布評論請先 登錄
相關推薦
評論