基于USB總線的ADSP-TS101S鏈路口加載
3.3 LINK口發(fā)送模塊與USB接口模塊之間的接口
USB接口除用于加載TS101外,還可用于TS101正常工作時與PC機(jī)的數(shù)據(jù)傳輸,故對于不同意義的下行信息,需要根據(jù)其功能做不同處理。
上位機(jī)向FX2LP發(fā)送數(shù)據(jù)時,是通過將需要發(fā)送的數(shù)據(jù)打包(每包的大小由固件程序決定),每隔固定一段時間向下發(fā)送一包實(shí)現(xiàn)的。在這里,每包數(shù)據(jù)包含512個字節(jié),其中前8個字節(jié)用來當(dāng)幀頭,后504個為需要下傳的數(shù)據(jù)。可通過幀頭的不同來區(qū)分下行信息的不同意義。其具體含義如表1所示。本文引用地址:http://www.ex-cimer.com/article/202238.htm
FPGA輪詢每包數(shù)據(jù)的幀頭,如果是TS101與PC機(jī)交互數(shù)據(jù),則送到雙口RAM中;如果是TS101加載數(shù)據(jù),則送到LINK口發(fā)送模塊中;如果是/BMS拉高(低)指令,則通過相應(yīng)的管腳拉高(低)/BMS;如果是復(fù)位TS101指令,則通知復(fù)位邏輯對TS101進(jìn)行復(fù)位,同時復(fù)位數(shù)據(jù)緩沖FIF O。
在實(shí)現(xiàn)基于USB總線的TS101的LINK加載時,上位機(jī)將DSP加載文件(.ldr文件)打包后,通過USB線纜向FX2LP發(fā)送。.ldr文件的大小不一定為504字節(jié)的整倍數(shù),因此最后一包數(shù)最后可能有很多0。必須把這些0去掉,否則可能在加載TS101時導(dǎo)致其死機(jī)。為解決該問題,在幀頭定義中,用幀頭2來區(qū)分是否為最后一包數(shù),如果不是最后一包數(shù),上位機(jī)打包時,幀頭2賦為01F8(即504),如果是最后一包數(shù),則把將有效數(shù)據(jù)長度賦給幀頭2。FPGA不斷將TS101加載數(shù)據(jù)送到LINK口發(fā)送模塊中,當(dāng)發(fā)現(xiàn)是最后一包數(shù)據(jù)時,讀取有效數(shù)據(jù)的長度,并啟動一個計數(shù)器,當(dāng)計到該長度時,讓FIFO讀使能失效,則只有l(wèi)dr文件的有效數(shù)據(jù)被加載到TS101中。
4 TS101程序在線重加載和固化的實(shí)現(xiàn)
首先通過上位機(jī)發(fā)送/BMS拉高指令,讓FPGA將TS101的/BMS管腳拉高,然后發(fā)送復(fù)位TS101指令,復(fù)位TS101和FIFO;之后,發(fā)送/BMS拉低指令,讓FPGA將TS101的/BMS管腳拉低,最后,將ldr文件打包為TS101加載數(shù)據(jù)包并向下發(fā)送。發(fā)送完畢后,TS101即可運(yùn)行該程序。
若要實(shí)現(xiàn)TS101程序的固化,則可將要燒寫的程序生成為ASCII格式的ldr文件,轉(zhuǎn)化為.dat格式,通過include指令編譯到EPROM(FLASH)的燒寫程序中,生成為Link加載ldr文件,通過USB總線進(jìn)行加載。燒寫完成后,可通過閃燈或通過USB總線上傳狀態(tài)信息來指示燒寫結(jié)果。
5 結(jié)束語
文中提出的基于USB的TS101鏈路口加載方法成功應(yīng)用于某雷達(dá)信號處理平臺的程序加載,其功能驗證是通過使用本方法加載各種DSP應(yīng)用程序并進(jìn)行功能測試來完成的。使用該方案能穩(wěn)定可靠的實(shí)現(xiàn)TS101程序的重加載,并且能對與之相連的FLASH芯片AT29LV040A進(jìn)行成功燒寫。
評論