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