• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      談如何通過網(wǎng)絡接口實現(xiàn)DSP片外Flash在線系統(tǒng)編程

      2009-06-17 06:48陳洪鋼黃華偉
      中國高新技術企業(yè) 2009年7期
      關鍵詞:網(wǎng)絡接口

      陳洪鋼 黃華偉

      摘要:文章針對傳統(tǒng)設計采用RS232作為數(shù)據(jù)傳輸手段而造成的速度過慢的問題,設計了一種通過網(wǎng)絡接口,使用一種特殊的UDP包對BF531片外Flash在線系統(tǒng)編程的方案,并給出了在系統(tǒng)編程的具體步驟和實現(xiàn)結果。實踐證明該方法無須實現(xiàn)TCP/IP協(xié)議棧,速度快,體積很小,很好地解決了以DSP為核心的應用系統(tǒng)軟件的維護和升級問題。

      關鍵詞:BF531;Flash;網(wǎng)絡接口;ISP;UDP

      中圖分類號:TP368文獻標識碼:A文章編號:1009-2374(2009)07-0129-02

      在以DSP為核心的現(xiàn)代電子設備中,通常將可執(zhí)行代碼存放在Flash中,設備啟動的時候,DSP通過引導加載機制將Flash中的代碼轉移到高速存儲器中運行。Flash在系統(tǒng)編程(ISP)是指以在不改變硬件環(huán)境的條件下,在線將程序代碼(固件)下載到Flash中,從而方便地實現(xiàn)系統(tǒng)軟件的調試和升級。BF531是ADI公司生產(chǎn)的一款高性能DSP。ADI公司在其軟件VDSP下提供了通用的在系統(tǒng)編程工具“Flash Programmer”,但是該工具需要使用JTAG接口,并且需要專用仿真器。另外一種方法是采用RS232作為通信接口,通過一段引導程序來進行Flash的在系統(tǒng)編程,缺點是速度很慢。由于目前大多數(shù)電子儀器都已經(jīng)具有網(wǎng)絡接口,本文設計了一種通過網(wǎng)絡接口進行Flash在系統(tǒng)編程的方案。采用的網(wǎng)絡接口芯片為常見的DM9000a,由于網(wǎng)絡通信中常見的TCP/IP協(xié)議棧過于龐大,本文中未使用協(xié)議棧,而是設計了一種簡單的實現(xiàn)方法:直接構建含特殊標記頭的UDP廣播包來代替。

      一、BF531的Flash啟動加載過程

      LDR文件是最終燒寫到FLASH上面的程序文件,可以有多種格式。這里,我們生成的LDR文件是二進制格式,LDR文件分為多個塊,每個塊都分為一個“BLOCK”和一個10字節(jié)的“HEAD”。在“HEAD”中,頭四個字節(jié)表示塊應加載在BF531地址空間的地址,后四個字節(jié)表示“BLOCK”的大小,最后兩個字節(jié)表示塊的屬性。

      BF531芯片本身已經(jīng)提供了4種啟動代碼加載方式,通過啟動模式引腳BMODE來選擇,本設計中將該引腳設置為最常見的“01”模式,即“從8/16位的FLASH/PROM啟動”模式。

      BF531內部有一個BOOTROM區(qū),用以存放“引導核”, BF531啟動的時候會先運行該引導核,自動將從Flash起始地址0x2000000開始的LDR文件分塊按照用戶的要求分別加載到片內RAM和SDRAM中。加載完畢后,引導核會修改

      程序指針PC,使之為片內RAM的啟動地址0xFFA08000,啟動用戶自己的應用程序。

      二、總體設計

      需要設計一個Bootloader程序和一個與之配合的上位機程序,并將Bootloader燒在地址0x20000000處。DSP啟動后,“引導核”會自動啟動該程序,Bootloader程序延時判斷上位機是否發(fā)出了連接命令。如果有,進入更新固件模式,可以進行Flash的燒寫;否則,則進入正常啟動模式,用以加載并執(zhí)行用戶程序。

      (一)Bootloader與用戶程序

      根據(jù)上面所述,啟動的順序是:“引導核”自動啟動Bootloader,運行完成后再加載運行用戶程序。所以Bootloader程序應該獨立于用戶程序,因為Bootloader一般不需要更新,而且,在系統(tǒng)編程出現(xiàn)意外的時候,不會導致Bootloader被破壞。由于Bootloader需要在啟動的時候就運行,所以應該事先通過JTAG使用仿真器將其燒寫到地址0x20000000處。而對于常用的Nor Flash,編程的時候會先把相應的整個扇區(qū)擦除,所以為了方便編程,應該使用戶程序的LDR文件的起始燒寫地址固定,并且為一個扇區(qū)的起始地址,本設計中固定為0x20004000。

      (二)網(wǎng)絡通信協(xié)議設計

      嵌入式儀器一般資源都比較少,所以Bootloader體積應該設計的盡量的小。最常用的網(wǎng)絡通信協(xié)議為TCP/IP協(xié)議棧,雖然功能強大,但是體積過于龐大。考慮Bootloader只需要網(wǎng)絡接口完成最簡單的通訊功能,而且通信量很小,本文設計了一種簡單的方法:直接構建含特殊標記頭的UDP廣播包。

      詳細的實現(xiàn)方法:上位機端發(fā)送數(shù)據(jù)的時候,在普通的UDP包的“payload”區(qū)加上一個自定義字符串的“標記頭”,并定義為廣播包,發(fā)送。Bootloader端接受時采用“雜散模式”接受,直接分析網(wǎng)絡芯片DM9000A接受到的數(shù)據(jù),如果發(fā)現(xiàn)是UDP包并且具有自定義字符串的“標記頭”,則接受,否則,拋棄。相反,Bootloader端發(fā)送數(shù)據(jù)的時候,按照UDP包標準格式直接手動填充一個完整的UDP廣播包,并加上“標記頭”,上位機接受的時候,按正常接收方式,即可根據(jù)“標記頭”判斷是否是Bootloader傳出來的包。

      三、Bootloader設計

      如圖1所示,Bootloader功能上可以分為4個模塊,主控制模塊,數(shù)據(jù)通信訊模塊,F(xiàn)lash操作模塊,用戶程序加載啟動模塊。Bootloader運行的時候,先向上位機發(fā)出握手請求,等待1秒,如果有握手回應信號則證明有上位機相連,Bootloader進入命令等待狀態(tài),如果沒有,則直接進入用戶程序加載啟動模塊。當一個完整的上位機命令被接收到后,Bootloader解析命令,并執(zhí)行相應的功能。執(zhí)行完相應的功能后會再發(fā)出握手請求(除非命令為退出命令),等待上位機握手,周而復始。

      (一)主控制模塊

      實現(xiàn)功能:實現(xiàn)Bootloader與上位機的握手,解析并執(zhí)行上位機發(fā)出的命令,并總體控制各個模塊。

      (二)數(shù)據(jù)通信模塊

      實現(xiàn)功能:控制網(wǎng)絡控制芯片DM9000A進行數(shù)據(jù)輸入和輸出。主要需要實現(xiàn)數(shù)據(jù)接收功能,數(shù)據(jù)發(fā)送功能,DM9000A芯片的初始化和復位功能。

      本設計中采用了上文中已經(jīng)敘述的特殊的網(wǎng)絡通信方式。設計數(shù)據(jù)發(fā)送函數(shù)時,先定義一個UDP的標準廣播包的模版,在UDP包的“payload”區(qū)開始的地方添加好自定義的“標記頭”,發(fā)送的時候直接在該模版的“payload”區(qū)后上加入準備傳送的數(shù)據(jù),通知DM9000A發(fā)送即可,為了避免計算校驗位造成速度減慢,本設計中將UDP頭的校驗位設置為0,即不校驗。設計數(shù)據(jù)接收函數(shù)時,只需要先讀取“payload”的頭幾個字節(jié),判斷是否為定義的“標記頭”,如果是,則去掉該“標記頭”和UDP包的頭,獲得真正需要的數(shù)據(jù),如果不是,則拋棄。

      (三)Flash操作模塊

      實現(xiàn)功能:實現(xiàn)一些常用的操作Flash功能接口函數(shù),供主控制模塊使用。主要需要實現(xiàn)的功能函數(shù)有:Flash寫函數(shù),F(xiàn)lash讀函數(shù),F(xiàn)lash塊擦除函數(shù),F(xiàn)lash解鎖函數(shù),F(xiàn)lash校驗函數(shù)。

      普通的nor Flash編程前需要將相應的扇區(qū)解鎖并擦除,所以如果該扇區(qū)有別的數(shù)據(jù),會被一并擦除。為了能自由地編程任意地址的數(shù)據(jù),本設計中特別定義了一個1個塊大小的緩沖區(qū),暫存原Flash塊里面的數(shù)據(jù),編程的時候將更新數(shù)據(jù)和原數(shù)據(jù)進行合并再后在一起編程進入Flash,解決了該問題。

      (四)用戶程序加載啟動模塊

      實現(xiàn)功能:完成類似BOOTROM區(qū)“引導核”的工作,即加載起始地址為0x20004000的用戶程序LDR文件到片內RAM或SDRAM,然后清空所有相關堆棧和寄存器,最后修改PC指針為0xFFA08000,開始執(zhí)行用戶程序,所以該程序應該使用匯編編寫。ADI在VDSP下提供“引導核”的示例程序,可以參考該程序設計本模塊。需要注意的是本模塊絕對不能被加載的用戶程序覆蓋掉,所以不能把這段程序放到片內RAM,而應該把這段程序放在SDRAM的最后,保護起來。

      四、上位機設計

      本設計中上位機在Windows XP操作系統(tǒng)下采用NI公司的Labwindows/CVI 8.0開發(fā)設計,如圖2所示。需要實現(xiàn)通過UDP包與Bootloader的通信和程控面板的顯示。由于CVI8.0自身沒有帶UDP相關驅動,需要加入Windows的API庫wsock32.lib進行開發(fā)。調用該庫進行SOCKET編程,設計好UDP的讀、寫、打開、關閉函數(shù)。在設計發(fā)送/接收函數(shù)的時候應該加上或去掉定義的“標記頭”。

      五、實現(xiàn)結果

      本設計已經(jīng)在使用DSP芯片BF531和網(wǎng)絡控制芯片DM9000A的目標板上成功實現(xiàn)。完整的實現(xiàn)步驟如下:先將Bootloader生成LDR文件,再將其通過仿真器燒寫到0x20000000,使用交叉雙絞線將目標板與電腦相連接,在電腦上打開上位機,給目標板上電,此時上位機與目標板進行握手,如果成功,面板會顯示“已經(jīng)成功連接目標板”,選擇需要燒寫的用戶程序的LDR文件和燒寫地址,點擊開始燒寫即可。

      六、結語

      本文提出了一種通過特殊的UDP廣播包進行Flash的在系統(tǒng)編程的方法,并成功實現(xiàn)。該方法拋棄了TCP/IP協(xié)議棧,因而大大的減小了自身的體積,而且采用網(wǎng)絡接口,使系統(tǒng)編程的速度得到了極大的提升。很好地解決了目標系統(tǒng)的系統(tǒng)程序升級和調試的問題。

      參考文獻

      [1]Analog Devices,Inc.ADSP-BF533 Blackfin Processor Hardware Reference,2007.

      [2]Analog Devices,Inc.VisualDSP++4.5 Loader and Utilities Manual,2006.

      [3]Analog Devices,Inc.ADSP-BF533 Blackfin Booting Process,2006.

      [4]Lvzhiyong.Auto-load and auto-update the DSOs software,2007.

      作者簡介:陳洪鋼(1981-),男,四川南充人,電子科技大學自動化工程學院碩士研究生,研究方向:測控技術與儀器;黃華偉(1978-),男,四川成都人,電子科技大學自動化工程學院碩士研究生,研究方向:通用測試技術與儀器設計。

      猜你喜歡
      網(wǎng)絡接口
      基于FPGA的數(shù)據(jù)采集設計
      雙冗余網(wǎng)絡接口自動切換測試模塊的設計與實現(xiàn)
      淺析CTC與GSM-R系統(tǒng)網(wǎng)絡接口及路由配置改進措施
      網(wǎng)絡設置管理
      京滬高鐵GSM-R網(wǎng)絡接口監(jiān)測網(wǎng)關子系統(tǒng)的設計與實現(xiàn)
      都兰县| 上栗县| 襄城县| 通州区| 玛纳斯县| 安达市| 四会市| 商都县| 漳浦县| 柳江县| 台北县| 陵水| 兴仁县| 昌都县| 安多县| 徐州市| 云浮市| 且末县| 嘉黎县| 广州市| 铜川市| 安顺市| 禹州市| 庆云县| 红原县| 庆阳市| 清徐县| 宁安市| 崇仁县| 垦利县| 天门市| 当阳市| 伊川县| 永顺县| 安丘市| 泌阳县| 襄樊市| 达拉特旗| 望都县| 班戈县| 武威市|