在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

網(wǎng)絡(luò)接口實(shí)現(xiàn)DSP片外Flash線系統(tǒng)編程

前言:本站為你精心整理了網(wǎng)絡(luò)接口實(shí)現(xiàn)DSP片外Flash線系統(tǒng)編程范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢(xún)。

網(wǎng)絡(luò)接口實(shí)現(xiàn)DSP片外Flash線系統(tǒng)編程

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

關(guān)鍵詞:BF531;flash;網(wǎng)絡(luò)接口;ISP;UDP

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

一、BF531的Flash啟動(dòng)加載過(guò)程

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

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

BF531內(nèi)部有一個(gè)BOOTROM區(qū),用以存放“引導(dǎo)核”,BF531啟動(dòng)的時(shí)候會(huì)先運(yùn)行該引導(dǎo)核,自動(dòng)將從Flash起始地址0x2000000開(kāi)始的LDR文件分塊按照用戶(hù)的要求分別加載到片內(nèi)RAM和SDRAM中。加載完畢后,引導(dǎo)核會(huì)修改程序指針PC,使之為片內(nèi)RAM的啟動(dòng)地址0xFFA08000,啟動(dòng)用戶(hù)自己的應(yīng)用程序。

二、總體設(shè)計(jì)

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

(一)Bootloader與用戶(hù)程序

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

(二)網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)

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

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

三、Bootloader設(shè)計(jì)

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

(一)主控制模塊

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

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

實(shí)現(xiàn)功能:控制網(wǎng)絡(luò)控制芯片DM9000A進(jìn)行數(shù)據(jù)輸入和輸出。主要需要實(shí)現(xiàn)數(shù)據(jù)接收功能,數(shù)據(jù)發(fā)送功能,DM9000A芯片的初始化和復(fù)位功能。本設(shè)計(jì)中采用了上文中已經(jīng)敘述的特殊的網(wǎng)絡(luò)通信方式。設(shè)計(jì)數(shù)據(jù)發(fā)送函數(shù)時(shí),先定義一個(gè)UDP的標(biāo)準(zhǔn)廣播包的模版,在UDP包的“payload”區(qū)開(kāi)始的地方添加好自定義的“標(biāo)記頭”,發(fā)送的時(shí)候直接在該模版的“payload”區(qū)后上加入準(zhǔn)備傳送的數(shù)據(jù),通知DM9000A發(fā)送即可,為了避免計(jì)算校驗(yàn)位造成速度減慢,本設(shè)計(jì)中將UDP頭的校驗(yàn)位設(shè)置為0,即不校驗(yàn)。設(shè)計(jì)數(shù)據(jù)接收函數(shù)時(shí),只需要先讀取“payload”的頭幾個(gè)字節(jié),判斷是否為定義的“標(biāo)記頭”,如果是,則去掉該“標(biāo)記頭”和UDP包的頭,獲得真正需要的數(shù)據(jù),如果不是,則拋棄。

(三)Flash操作模塊

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

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

(四)用戶(hù)程序加載啟動(dòng)模塊

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

四、上位機(jī)設(shè)計(jì)

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

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

六、結(jié)語(yǔ)

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

參考文獻(xiàn)

[1]AnalogDevices,Inc.ADSP-BF533BlackfinProcessorHardwareReference,2007.

[2]AnalogDevices,Inc.VisualDSP++4.5LoaderandUtilitiesManual,2006.

[3]AnalogDevices,Inc.ADSP-BF533BlackfinBootingProcess,2006.

[4]Lvzhiyong.Auto-loadandauto-updatetheDSO’ssoftware,2007。

文檔上傳者

相關(guān)期刊

網(wǎng)絡(luò)與信息

省級(jí)期刊 審核時(shí)間1個(gè)月內(nèi)

遼寧省發(fā)展和改革委員會(huì)

衛(wèi)星與網(wǎng)絡(luò)

部級(jí)期刊 審核時(shí)間1個(gè)月內(nèi)

工業(yè)和信息化部

信息網(wǎng)絡(luò)

部級(jí)期刊 審核時(shí)間1個(gè)月內(nèi)

中華人民共和國(guó)信息產(chǎn)業(yè)部

乡宁县| 南靖县| 遂宁市| 都匀市| 北辰区| 周宁县| 鄂伦春自治旗| 闽清县| 上杭县| 苗栗县| 凤山市| 静海县| 江永县| 河北省| 新津县| 贵港市| 英超| 镇沅| 安塞县| 和硕县| 临夏县| 蒙自县| 阜平县| 吉木乃县| 崇信县| 乐至县| 彰武县| 梁山县| 承德县| 体育| 河西区| 陆丰市| 旅游| 始兴县| 新化县| 宜章县| 天峻县| 泾阳县| 昭平县| 江都市| 措勤县|