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

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

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

0 引言

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

1 地鐵列車(chē)PIS

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

001.jpg

2 地鐵列車(chē)PIS存儲(chǔ)模塊

  2.1 設(shè)計(jì)方案

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

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

  2.2 硬件設(shè)計(jì)

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

002.jpg

3 軟件設(shè)計(jì)

  3.1 USB描述

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

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

  3.2 系統(tǒng)初始化

  系統(tǒng)初始化主要包括AT90USB1287和K9F4G08U0B的寄存器和相關(guān)接口的設(shè)置。通過(guò)設(shè)置寄存器的值來(lái)設(shè)定芯片的工作狀態(tài)。系統(tǒng)初始化后,可通過(guò)讀取NAND Flash的地址來(lái)驗(yàn)證AT90USB1287與K9F4G08U0B的連接及通信是否正常。系統(tǒng)初始化對(duì)應(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();//測(cè)試NAND Flash

  }

  3.3 USB通信過(guò)程

  3.3.1 電腦端對(duì)USB存儲(chǔ)模塊的識(shí)別

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

  void usb_identification_process(void)

  {U8 bmType;

  U8 bmRequest;//請(qǐng)求描述符

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

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

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

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

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

4 結(jié)論

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

參考文獻(xiàn)

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

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

  [3] 倉(cāng)青懷.地鐵廣播系統(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接口的研究與實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2009.

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

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

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

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


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