《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 地鐵列車PIS存儲模塊的設(shè)計
地鐵列車PIS存儲模塊的設(shè)計
2014年微型機(jī)與應(yīng)用第22期
徐 強(qiáng),郭秀清
同濟(jì)大學(xué) 控制科學(xué)與工程系,,上海 201804)
摘要: 簡要介紹了地鐵列車乘客信息系統(tǒng)的結(jié)構(gòu)和功能,,針對上海地鐵部分線路的存儲模塊中存在的容量小和轉(zhuǎn)存方式復(fù)雜等問題,,提出了以USB作為通信方式的存儲模塊,,用FAT32文件系統(tǒng)作為存儲方式,。同時對存儲的過程進(jìn)行了分析,,介紹了存儲模塊的硬件和軟件設(shè)計,。
Abstract:
Key words :

  摘  要: 簡要介紹了地鐵列車乘客信息系統(tǒng)的結(jié)構(gòu)和功能,,針對上海地鐵部分線路的存儲模塊中存在的容量小和轉(zhuǎn)存方式復(fù)雜等問題,提出了以USB作為通信方式的存儲模塊,,用FAT32文件系統(tǒng)作為存儲方式,。同時對存儲的過程進(jìn)行了分析,介紹了存儲模塊的硬件和軟件設(shè)計,。

  關(guān)鍵詞PIS,;存儲模塊;USB,;FAT32文件系統(tǒng)

0 引言

  地鐵是現(xiàn)代城市公共交通中的一種重要的運輸工具,,具有方便快捷、節(jié)約能源和環(huán)境污染小等優(yōu)點,,是重要的城市交通工具,。地鐵列車乘客信息系統(tǒng)(Passenger Information System,PIS)為乘客提供站點信息,、提示信息和突發(fā)信息等,,是乘客獲取信息的重要途徑[1]。隨著電子技術(shù)的發(fā)展,,地鐵列車通信設(shè)備不斷更新?lián)Q代,,一些早期的列車通信設(shè)備已經(jīng)不能滿足地鐵列車運行的需求。在現(xiàn)有的一些地鐵線路中,,PIS的音頻文件存儲在閃存里,,現(xiàn)有產(chǎn)品的閃存存儲容量較小,編輯對應(yīng)的音頻文件的過程較為繁瑣,;在從電腦傳輸文件到存儲器的過程中,,存取速度較慢,讀取過程中性能不穩(wěn)定,,易出現(xiàn)中斷和誤讀等現(xiàn)象[2],。本文旨在對上述問題進(jìn)行改進(jìn),設(shè)計方便穩(wěn)定的解決方案,。

1 地鐵列車PIS

  地鐵列車PIS由音頻系統(tǒng),、LED顯示系統(tǒng)和人工播報系統(tǒng)等組成。地鐵列車PIS接收上位機(jī)發(fā)出的信號并對該信號進(jìn)行分析處理,,讀取存儲器中對應(yīng)的數(shù)據(jù),,將讀出的數(shù)據(jù)進(jìn)行音頻播報,、LED顯示等。系統(tǒng)控制模塊負(fù)責(zé)對接收的上位機(jī)信號進(jìn)行處理并控制音視頻信息的播放,,系統(tǒng)控制模塊控制MCU各個子模塊,。通信模塊負(fù)責(zé)與上位機(jī)進(jìn)行通信,接收上位機(jī)發(fā)出的信號,,并將系統(tǒng)控制模塊的處理結(jié)果反饋給上位機(jī),。USB接口模塊進(jìn)行電腦端與地鐵列車PIS的數(shù)據(jù)傳輸,電腦端通過該模塊直接對地鐵列車PIS傳輸音視頻文件和文本文件等,,將文件存放在存儲模塊中并可對存儲模塊進(jìn)行讀取以及刪除等操作,。音頻播放模塊和屏幕顯示模塊接收并處理MCU模塊發(fā)送的音視頻文件,對音視頻文件解碼后進(jìn)行播放[3],。系統(tǒng)組成如圖1所示,。

001.jpg

2 地鐵列車PIS存儲模塊

  2.1 設(shè)計方案

  地鐵列車PIS存儲模塊主要對列車播報的語音信息、視頻信息和文本文件等進(jìn)行存儲,,一般需要較大的存儲容量,。MCU對接收到的上位機(jī)命令進(jìn)行分析處理,根據(jù)分析的結(jié)果讀取存儲模塊對應(yīng)的文件并進(jìn)行播報,。由于地鐵線路的延伸和站點的維護(hù)等原因,,存儲模塊的文件需要做及時更新。以上因素對存儲模塊的穩(wěn)定性,、精確性和容量等方面都提出了較高的要求,。

  USB存儲系統(tǒng)具有存儲速度快、容量大和系統(tǒng)穩(wěn)定等特點,,能夠滿足地鐵列車PIS對存儲模塊的要求,。本設(shè)計采用USB存儲系統(tǒng)作為地鐵列車存儲模塊的設(shè)計方案,以AT90USB1287[4]作為處理芯片,,該芯片是8位微處理器,,具有USB接口、128 KB的可編程Flash和4 KB的EEPROM,;采用K9F4G08U0B作為NAND Flash存儲芯片,,該芯片具有512 MB的容量,,能夠滿足系統(tǒng)存儲的需要,。

  2.2 硬件設(shè)計

  硬件設(shè)計以電腦為主機(jī),,存儲模塊為從機(jī),實現(xiàn)USB接入主機(jī)后,,主機(jī)與設(shè)備之間互相通信,。AT90USB1287的USB端口既可作為主機(jī)又可作為從機(jī),本設(shè)計將其作為從機(jī)使用。AT90USB1287包括一個64 B的控制端口,、一個256 B的數(shù)據(jù)端口和5個64 B的數(shù)據(jù)端口,。K9F4G08U0B的地址與數(shù)據(jù)共用同一端口,進(jìn)行分時復(fù)用,。在設(shè)計中,,將AT90USB1287的PF端口與K9F4G08U0B的I/O端口連接,將AT90USB1287的PB端口控制K9F4G08U0B的讀寫等命令引腳,。供電模塊電壓設(shè)計為3.3 V,硬件連接如圖2所示,。

002.jpg

3 軟件設(shè)計

  3.1 USB描述

  USB2.0的存儲速度可達(dá)到480 Mb/s[5],,支持熱插拔。USB設(shè)備包括三種類型的端口:控制端口,、輸入端口和輸出端口,。控制端口負(fù)責(zé)接收主機(jī)的請求信息,,并對主機(jī)的請求信息做出相應(yīng)的回答,,包括對主機(jī)的setup包進(jìn)行接收和反饋,控制數(shù)據(jù)的讀寫過程,。USB設(shè)備的數(shù)據(jù)端口包括數(shù)據(jù)輸入端口和數(shù)據(jù)輸出端口,,輸入端口將從主機(jī)接收到的數(shù)據(jù)發(fā)送到緩沖器中,輸出端口將緩沖器中的數(shù)據(jù)發(fā)送給主機(jī),。

  主機(jī)與USB控制端口之間的命令傳輸采用SCSI(Small Computer System Interface)命令集,。每個USB設(shè)備包括一個或多個接口,主機(jī)通過接口確定與哪個USB硬件之間進(jìn)行通信,。每個接口又包括一個或多個端口,,端口負(fù)責(zé)數(shù)據(jù)的控制、輸入和輸出,。

  3.2 系統(tǒng)初始化

  系統(tǒng)初始化主要包括AT90USB1287和K9F4G08U0B的寄存器和相關(guān)接口的設(shè)置,。通過設(shè)置寄存器的值來設(shè)定芯片的工作狀態(tài)。系統(tǒng)初始化后,,可通過讀取NAND Flash的地址來驗證AT90USB1287與K9F4G08U0B的連接及通信是否正常,。系統(tǒng)初始化對應(yīng)程序如下:

  void SystemInit()

  {Clear_prescaler();

  MCUCR|=0x80,;//不使用JTAG接口功能,,使能普通接口

  MCUCR|=0x80;

  uart_init(),;//串口用于調(diào)試

  usb_device_task_init(),;

  //AT90USB1287初始化為從機(jī)模式

  NAND_flash_select();

  nfc_detect();

  nf_test_unit_ready(),;//測試NAND Flash

  }

  3.3 USB通信過程

  3.3.1 電腦端對USB存儲模塊的識別

  USB存儲設(shè)備上電后,,首先將AT90USB1287進(jìn)行初始化,電腦端發(fā)送設(shè)備描述符命令,、配置描述符命令,、地址描述符命令和接口描述符命令等對存儲模塊進(jìn)行識別[6]。USB設(shè)備分別對這些命令進(jìn)行應(yīng)答,,電腦端根據(jù)設(shè)備的應(yīng)答信號來判斷設(shè)備的型號,、容量及是否工作正常等。若設(shè)備應(yīng)答正確,,則識別過程完成,;若設(shè)備應(yīng)答不正確或無應(yīng)答,主機(jī)將在一段時間之后再次發(fā)送識別命令,,若進(jìn)行3次嘗試均無應(yīng)答,,則識別失敗。該識別過程是通過控制端口進(jìn)行的,,對應(yīng)的程序如下,。

  void usb_identification_process(void)

  {U8 bmType;

  U8 bmRequest,;//請求描述符

  bmType=Usb_read_byte(),;//讀取緩沖區(qū),大小為1 KB

  bmRequest=Usb_read_byte(),;

  switch(bmRequest)

  {case DESCRIPTOR:

  descriptor(),;

  break;

  case CONFIG://獲取配置描述符

  config(),;

  break,;

  case ADDRESS://設(shè)置通信地址

  address();

  break,;

  case GET_INTERFACE://獲取接口描述符

  get_interface(),;

  break;

  case SET_INTERFACE://設(shè)置接口描述符

  set_interface(),;

  break,;

  }

  }

  3.3.2 主機(jī)和設(shè)備的數(shù)據(jù)傳輸

  主機(jī)對USB存儲設(shè)備識別之后,便開始對設(shè)備的讀寫過程,,設(shè)備通過數(shù)據(jù)輸入與輸出端口與主機(jī)進(jìn)行通信,,主機(jī)通過發(fā)送命令塊包(Command Block Wrapper,CBW)與存儲設(shè)備通信,,設(shè)備對接收到的CBW包進(jìn)行分析,,根據(jù)分析的結(jié)果進(jìn)行應(yīng)答,應(yīng)答的結(jié)果通過狀態(tài)塊包(Command Status Wrapper,CSW)發(fā)送給主機(jī),,對主機(jī)發(fā)送的命令進(jìn)行回應(yīng),。該過程使用SCSI命令集,設(shè)計程序從CBW命令包中解析出SCSI命令,,根據(jù)解析的命令做出對應(yīng)的響應(yīng),。主機(jī)會先后發(fā)出INQUIRY、Read Capacity和UFI Mode Sense等SCSI命令[7],,若以上命令得到正確的回應(yīng),,主機(jī)會繼續(xù)發(fā)送READ命令和WRITE命令,對NAND Flash進(jìn)行識別和內(nèi)容讀寫等操作,;若設(shè)備沒有正確的回應(yīng),,則存儲過程失敗。

  3.3.3 NAND Flash文件系統(tǒng)的設(shè)計

  主機(jī)對USB設(shè)備的操作主要包括讀,、寫和刪除等操作,這些操作需要主機(jī)能夠定位到NAND Flash的相應(yīng)地址上,。K9F4G08U0B存儲采用FAT32(File Allocation Table)文件系統(tǒng),,F(xiàn)AT32文件系統(tǒng)將存儲區(qū)分為MBR區(qū)、DBR區(qū),、FAT1區(qū),、FAT2區(qū)、目錄區(qū)和數(shù)據(jù)存儲區(qū)等[8],。其中MBR(Master Boot Record)和DBR(Dos Boot Record)區(qū)為主機(jī)對存儲器的操作提供信息,,提供了FAT32文件系統(tǒng)的分區(qū)信息。FAT1區(qū)是用來表示文件在存儲芯片中存儲位置的存儲區(qū),,F(xiàn)AT區(qū)是以簇為單位表示文件的大小,,簇號對應(yīng)相應(yīng)的存儲區(qū)域,設(shè)計者可以定義簇的大小,。在讀寫文件時,,主機(jī)首先根據(jù)FAT區(qū)文件占有的簇的情況進(jìn)行對應(yīng)數(shù)據(jù)區(qū)的讀寫。FAT2區(qū)為FAT1區(qū)的備份,。FAT區(qū)之后為目錄區(qū),,目錄區(qū)存放文件的目錄,目錄由文件名,、擴(kuò)展名,、文件屬性、修改時間和文件長度等組成,。FAT文件系統(tǒng)的最后一個分區(qū)即為文件的數(shù)據(jù)存儲區(qū),,用以根據(jù)FAT區(qū)索引的位置存取對應(yīng)的文件。

  K9F4G08U0B的存儲容量為512 MB,包含4 096個128 KB的塊,,每塊包含64個2 KB的頁,,F(xiàn)AT32用32位二進(jìn)制數(shù)表示一個簇[9]。主機(jī)向存儲設(shè)備發(fā)送邏輯地址號,,由設(shè)備將邏輯地址(Logical Block Address,,LBA)轉(zhuǎn)換為物理地址。

  K9F4G08U0B擦除文件時為塊擦除方式,,即擦除時必須刪除一整塊的數(shù)據(jù),,故在設(shè)計刪除某塊一個文件的算法時,應(yīng)將該塊的其他文件先保存到一個公共塊中,,在刪除該文件后,,再將其他文件復(fù)制回該塊。由于文件的大小不同,,存儲文件時可能會涉及跨塊操作,,在設(shè)計存儲和刪除文件時,應(yīng)將這些情況分別進(jìn)行處理,。

4 結(jié)論

  本文設(shè)計了以USB作為傳輸方式的存儲模塊,,解決了上海地鐵部分線路中存儲模塊存儲容量小和存儲速度慢等問題。USB存儲模塊作為地鐵列車PIS的一部分,,為系統(tǒng)性能的提高起到了重大的作用,,能夠滿足我國地鐵列車國產(chǎn)化的需要。

參考文獻(xiàn)

  [1] 陳冠群.地鐵PIS系統(tǒng)安全研究[J].信息通信,,2011(6):176-177.

  [2] 張少鋒,,肖向前.廣州地鐵車輛數(shù)字報站器的國產(chǎn)化改進(jìn)[J].機(jī)車電傳動,2005(2):48-49.

  [3] 倉青懷.地鐵廣播系統(tǒng)的集成應(yīng)用[J].都市快軌交通,,2010(1):99-103.

  [4] AT90USB64/128 datasheet [EB/OL].(2012-08-XX)[2014-07-20]. http://www.atmel.com/Images/doc7593.pdf.

  [5] 蔡磊.基于STM32F103芯片的USB接口的研究與實現(xiàn)[D].上海:復(fù)旦大學(xué),,2009.

  [6] 楊書濤.USB接口技術(shù)與應(yīng)用研究[D].濟(jì)南:山東大學(xué),2008.

  [7] 褚曉濱,,陸鐵軍,,宗宇.USB接口海量存儲指令分析[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2008,,21(3):103-105.

  [8] 石曉磊.基于FAT32的保護(hù)加密U盤的軟件設(shè)計[D].大連:大連理工大學(xué),,2013.

  [9] 夏昀.基于FAT32文件系統(tǒng)的安全存儲方案[D].上海:上海交通大學(xué),2013.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。