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

  摘  要: 簡要介紹了地鐵列車乘客信息系統(tǒng)的結(jié)構(gòu)和功能,針對上海地鐵部分線路的存儲模塊中存在的容量小和轉(zhuǎn)存方式復雜等問題,提出了以USB作為通信方式的存儲模塊,用FAT32文件系統(tǒng)作為存儲方式。同時對存儲的過程進行了分析,介紹了存儲模塊的硬件和軟件設(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)品的閃存存儲容量較小,編輯對應的音頻文件的過程較為繁瑣;在從電腦傳輸文件到存儲器的過程中,存取速度較慢,讀取過程中性能不穩(wěn)定,易出現(xiàn)中斷和誤讀等現(xiàn)象[2]。本文旨在對上述問題進行改進,設(shè)計方便穩(wěn)定的解決方案。

1 地鐵列車PIS

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

001.jpg

2 地鐵列車PIS存儲模塊

  2.1 設(shè)計方案

  地鐵列車PIS存儲模塊主要對列車播報的語音信息、視頻信息和文本文件等進行存儲,一般需要較大的存儲容量。MCU對接收到的上位機命令進行分析處理,根據(jù)分析的結(jié)果讀取存儲模塊對應的文件并進行播報。由于地鐵線路的延伸和站點的維護等原因,存儲模塊的文件需要做及時更新。以上因素對存儲模塊的穩(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è)計以電腦為主機,存儲模塊為從機,實現(xiàn)USB接入主機后,主機與設(shè)備之間互相通信。AT90USB1287的USB端口既可作為主機又可作為從機,本設(shè)計將其作為從機使用。AT90USB1287包括一個64 B的控制端口、一個256 B的數(shù)據(jù)端口和5個64 B的數(shù)據(jù)端口。K9F4G08U0B的地址與數(shù)據(jù)共用同一端口,進行分時復用。在設(shè)計中,將AT90USB1287的PF端口與K9F4G08U0B的I/O端口連接,將AT90USB1287的PB端口控制K9F4G08U0B的讀寫等命令引腳。供電模塊電壓設(shè)計為3.3 V,硬件連接如圖2所示。

002.jpg

3 軟件設(shè)計

  3.1 USB描述

  USB2.0的存儲速度可達到480 Mb/s[5],支持熱插拔。USB設(shè)備包括三種類型的端口:控制端口、輸入端口和輸出端口??刂贫丝谪撠熃邮罩鳈C的請求信息,并對主機的請求信息做出相應的回答,包括對主機的setup包進行接收和反饋,控制數(shù)據(jù)的讀寫過程。USB設(shè)備的數(shù)據(jù)端口包括數(shù)據(jù)輸入端口和數(shù)據(jù)輸出端口,輸入端口將從主機接收到的數(shù)據(jù)發(fā)送到緩沖器中,輸出端口將緩沖器中的數(shù)據(jù)發(fā)送給主機。

  主機與USB控制端口之間的命令傳輸采用SCSI(Small Computer System Interface)命令集。每個USB設(shè)備包括一個或多個接口,主機通過接口確定與哪個USB硬件之間進行通信。每個接口又包括一個或多個端口,端口負責數(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)初始化對應程序如下:

  void SystemInit()

  {Clear_prescaler();

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

  MCUCR|=0x80;

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

  usb_device_task_init();

  //AT90USB1287初始化為從機模式

  NAND_flash_select();

  nfc_detect();

  nf_test_unit_ready();//測試NAND Flash

  }

  3.3 USB通信過程

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

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

  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 主機和設(shè)備的數(shù)據(jù)傳輸

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

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

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

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

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

4 結(jié)論

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

參考文獻

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

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

  [3] 倉青懷.地鐵廣播系統(tǒ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].上海:復旦大學,2009.

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

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

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

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


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