<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于USB2.0總線的TMS320VC5402 HPI自舉的實(shí)現(xiàn)

          基于USB2.0總線的TMS320VC5402 HPI自舉的實(shí)現(xiàn)

          ——
          作者:曹長(zhǎng)江 馬雙寶 詹飚 武漢理工大學(xué)自動(dòng)化學(xué)院 時(shí)間:2007-01-26 來(lái)源:《電子元器件應(yīng)用》 收藏


          引言

          當(dāng)前,dsp(digital signal processor)芯片已經(jīng)廣泛應(yīng)用于通信、信號(hào)處理、雷達(dá)、圖像處理等多個(gè)領(lǐng)域,其強(qiáng)大、高效的運(yùn)算能力,是其他微處理器無(wú)法比擬的。為充分發(fā)揮dsp運(yùn)算高效的優(yōu)勢(shì),用戶程序通常在dsp內(nèi)部ram中運(yùn)行,這就需要利用dsp的自舉引導(dǎo)(boot loader)功能。在dsp多機(jī)系統(tǒng)中,hpi自舉是首選。目前,采用hpi自舉的實(shí)例主要有兩種,一種是用單片機(jī)作為主控制器,通過(guò)pc機(jī)串口或者外掛的存儲(chǔ)器得到要下載的dsp用戶程序數(shù)據(jù),這種方案無(wú)法實(shí)現(xiàn)系統(tǒng)與pc機(jī)之間數(shù)據(jù)的實(shí)時(shí)高速傳輸;另一種是用pc機(jī)并口里控制dsp hpi接口,從而把程序?qū)懭雂sp 的內(nèi)部ram,該方案無(wú)法滿足嵌入式系統(tǒng)的即插即用要求。

          本文引用地址:http://www.ex-cimer.com/article/21282.htm

          usb接口具有即插即用,速度快(最高可達(dá)480mbps)等特點(diǎn),可成為pc機(jī)的外圍設(shè)備擴(kuò)展中應(yīng)用日益廣泛的接口標(biāo)準(zhǔn),基于usb總線對(duì)dsp實(shí)現(xiàn)hpi自舉,可以降低成本,也便于dsp與pc機(jī)的高速數(shù)據(jù)通信,鑒于此種考慮,本文介紹一種利用usb2.0接口控制芯片(cy7c68013-56pvc)實(shí)現(xiàn)tms320vc5402自舉的實(shí)現(xiàn)方案。

          芯片介紹

          usb2.0芯片及其gpif簡(jiǎn)介

          本方案采用的usb2.0接口控制芯片是cvpress公司的cy7c6801356pvc,該系列芯片是世界上第一款支持usb2.0的集成微控制器芯片,它集成有usb2.0收發(fā)器、智能串行接口引擎(sie)、增強(qiáng)的8051微處理器,通用可編程接口(gpif)、片上ram和fifo存儲(chǔ)器[1]。該系列芯片的智能引擎也支持usb1.1協(xié)議,因此,它具有很好兼容性。

          cy7c68013與外設(shè)有主/從兩種接口方式:可編程接口gpif和slave fifo,可編程接口gpif是一個(gè)微狀態(tài)機(jī)[2],可由軟件編寫讀寫控制時(shí)序,也可以作為usb fifo的主控制器與dsp進(jìn)行無(wú)縫連接,gpif可工作在自動(dòng)模式,usb總線和gpif接口域直接進(jìn)行數(shù)據(jù)傳輸,無(wú)需8051內(nèi)核直接參入,以此解決usb2.0高速傳輸?shù)摹捌款i”問(wèn)題,gpif與8051內(nèi)核關(guān)系如圖1所示。

          dsp芯片及其hpi簡(jiǎn)介

          tms320vc5402是ti公司的一款性價(jià)比極高的低功耗定點(diǎn)數(shù)字信號(hào)處理器(dsp),該芯片的主機(jī)接口(hpi,host port interface)被稱為hpi-8。這種hpi-8接口的最大特點(diǎn)是它允許主機(jī)訪問(wèn)dsp的整個(gè)片內(nèi)空間。hpi接口通過(guò)hpi控制寄存器(hpic)、地址寄存器(hpia)數(shù)據(jù)寄存器(hpid)和hpi內(nèi)存塊來(lái)實(shí)現(xiàn)與主機(jī)的數(shù)據(jù)通信。主處理器對(duì)hpi的訪問(wèn)由內(nèi)外兩部分組成,其中外部主要為主處理與hpi寄存器交換數(shù)據(jù),而內(nèi)部則用于為hpi寄存器與dsp存儲(chǔ)單元交換數(shù)據(jù)(由dma自動(dòng)完成)。在進(jìn)行數(shù)據(jù)地實(shí)時(shí)通信時(shí),dsp與主機(jī)可以通過(guò)中斷信號(hào)進(jìn)行握手。其具體實(shí)現(xiàn)可通過(guò)設(shè)置hpic寄存器的hint、dspint位來(lái)對(duì)對(duì)方進(jìn)行中斷[3]。

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

          設(shè)計(jì)原理

          自舉從本質(zhì)上說(shuō)就是dsp上電后,在bootloader引導(dǎo)下,獲取應(yīng)用程序并開(kāi)始運(yùn)行的過(guò)程,tms320vc5402上電以后,當(dāng)mp/mc為低電平時(shí),系統(tǒng)將從片內(nèi)rom的off80h開(kāi)始執(zhí)行,此處的跳轉(zhuǎn)指令使程序跳轉(zhuǎn)至bootloader程序入口處(of800h處)。bootloader程序先清除ifr,并設(shè)置hpi入口點(diǎn)(0x7f)的值為0,置hint為低,再檢測(cè)int2是否置位(置位可以通過(guò)將hint和int2相連來(lái)實(shí)現(xiàn)),如置位則進(jìn)行hip自舉[4],具過(guò)程如圖2所示。

          dsp復(fù)位之后,如檢測(cè)到hpi自舉方式有效,就可以進(jìn)行hpi自舉引導(dǎo),基于usb總線的hpi自舉,就是在bootloader引導(dǎo)下,通過(guò)usb接口控制芯片把程序數(shù)據(jù)由主機(jī)(pc)寫入dsp內(nèi)部ram(daram)并使dsp開(kāi)始運(yùn)行的過(guò)程,該自舉過(guò)程分為三個(gè)步驟:一是寫hpic,以設(shè)置hpi控制參數(shù);二是寫hpia,設(shè)置訪問(wèn)dsp的首地址;三是通過(guò)hpid下載程序。

          首先,推動(dòng)ez-usb control panel下載cy7c68013的固件程序。當(dāng)重枚舉結(jié)束,驅(qū)動(dòng)程序(ezusb.sis)重新安裝成功后,在control panel中通過(guò)發(fā)送請(qǐng)求的方式由端點(diǎn)0向hpic(主要設(shè)置bob位,確定字節(jié)配合)發(fā)送兩個(gè)相同的8位控制字,而當(dāng)hpic初始化完成之后,再通過(guò)端點(diǎn)0設(shè)置欲下載程序段到dsp中的首地址hpia。hpic、hpia設(shè)置好之后,就可以通過(guò)端點(diǎn)2下載dsp程序代碼段,程序代碼段需要分段下載,實(shí)際上,cy7c68013通過(guò)端點(diǎn)2把數(shù)據(jù)寫入hpid,然后,dsp按照hpia指定的地址,由dma自動(dòng)將hpid中的數(shù)據(jù)寫到ram,接口控制時(shí)序可由gpif軟件編程控制,程序數(shù)據(jù)分段下載完畢之后,再將程序的入口地址通過(guò)端點(diǎn)0寫入0x7f處,在主機(jī)下載程序的過(guò)程中,dsp將一直檢測(cè)0x7f是否為0,如不為0,即判定dsp已由主機(jī)進(jìn)行了hpi自舉加載,并按照該值跳轉(zhuǎn)pc指針,以開(kāi)始運(yùn)行,進(jìn)而完成hpi自舉。

          硬件電路

          本設(shè)計(jì)用cy7c68013-56pvc與tms320vc5402的hpi口相連接,接口選擇gpif模式,硬件電路如圖3所示,該方案中,hcntl[1:0]與gpif的低位地址線pa3、pa2相連,以選擇需要訪問(wèn)的hpi的hpia、hpic,hpid寄存器,ctl0接至hr/w,可作為讀寫控制信號(hào),hds1與輸出信號(hào)線ctl1相連,以作為hpi訪問(wèn)的選通信號(hào),hbil與輸出信號(hào)線ctl2相連,已用于識(shí)別傳輸?shù)氖堑谝粋€(gè)字節(jié)還是第二個(gè)字節(jié),hrdy接輸入信號(hào)線rdy0。用于通過(guò)主機(jī)查詢hpi口的狀態(tài),hint、int2與int0連接,可確保hpi自舉有效,hcs接gnd,可使hpi片選信號(hào)有效,hpiena接高電平時(shí),hpi使能,has、hds2接高電平時(shí),信號(hào)線禁用。數(shù)據(jù)線pd[7:0]與hd[7:0]相連,可在控制時(shí)序作用下傳輸一切數(shù)據(jù)信號(hào)。hpi接口控制時(shí)序由ctl0、ctl1、ctl2引腳輸出,在自舉過(guò)程中,系統(tǒng)將關(guān)閉cy7c68013所有的中斷,若要通過(guò)中斷實(shí)現(xiàn)數(shù)據(jù)通信的握手,可以在自舉完畢打開(kāi)cy7c68013的中斷。

          cy7c68013的具體配置為:?jiǎn)⒂胓pif接口控制數(shù)據(jù)傳輸,gpif接口采用內(nèi)部時(shí)鐘(48mhz);端點(diǎn)2設(shè)置為批量傳輸輸出端點(diǎn),最大傳輸值是512字節(jié),雙緩沖;終端4、8禁用。端點(diǎn)6可作為批量傳輸輸入端點(diǎn)來(lái)向主機(jī)傳輸數(shù)據(jù),需要說(shuō)明的是端點(diǎn)6不是自舉所必需的。

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

          dsp應(yīng)用程序設(shè)計(jì)

          實(shí)現(xiàn)tms320vc5402 hpi自舉的前提是生成dsp應(yīng)用程序的分段hex代碼文件,在ccs中可用匯編語(yǔ)言,c語(yǔ)言等編寫應(yīng)用程序源代碼,經(jīng)匯編、鏈接、編譯后,生成可執(zhí)行的公共目標(biāo)文件格式(coff)的文件,coff文件不能用于hpi自舉引導(dǎo),而需要利用ti公司的文件格式轉(zhuǎn)換工具h(yuǎn)ex00.exe,將coff文件轉(zhuǎn)換為hex格式文件[5]。格式轉(zhuǎn)換的關(guān)鍵是正確編寫hex命令文件,下面討論如何編寫這種命令文件,例如將包含text段的源程序鏈接、編譯生成test.out文件,編寫命令文件時(shí),可利用hex500.exe將test.out轉(zhuǎn)換為對(duì)應(yīng)text段的hex文件,命令文件test為.cmd如下:

          -i      //生成intel格式

          test.out   //輸入文件

          roms

          {

          page 0:rom1:org=0x2000,length=0x2000,romwidth=16,memwidth=16,

          files={test1.hex}   //text段的起始地址為0x2000

          }   //如有多端就可增加多個(gè)rom sections

          {text:paddr=0x2000} //如有多端就可增加多個(gè)部分

          在dos環(huán)境下,利用hex500.exe轉(zhuǎn)換命令文件test.cmd,就可得到test1.hex文件,通過(guò)cy7c68013把test1.hex文件寫入dsp內(nèi)部ram,再把程序的入口地址寫入0x7f處,便可完成自舉。

          usb固件程序設(shè)計(jì)

          cypress公司提供有usb的輔助開(kāi)發(fā)工具:ez-usb control panel,gpif designer。通過(guò)gpif designer可以生成gpif波形圖及相應(yīng)的c源代碼gpif.c。cypress公司同時(shí)提供了固件程序框架,因而可把gpif.c加入固件程序框架進(jìn)行開(kāi)發(fā),從而提高開(kāi)發(fā)效率。本方案中,固件程序設(shè)計(jì)的重點(diǎn)是對(duì)gpif的編程,以便生成符合hpi接口的時(shí)序的波形描述代碼,以用于控制數(shù)據(jù)傳輸,hpi自舉需要的gpif控制波形描述符為:?jiǎn)巫止?jié)寫(兩種),fifo寫。hpia、hpic的初始化需要單字節(jié)寫控制時(shí)序,程序代碼寫入hpid需要fifo寫控制時(shí)序,若要實(shí)現(xiàn)二者的數(shù)據(jù)通信,還需要單字節(jié)讀、fifo讀等控制波形描述符。

          hpic、hpia的初始值是在ezusb control panel中通過(guò)制造商請(qǐng)求工具欄由ep0發(fā)送的,固件程序中還要有相應(yīng)的請(qǐng)求處理程序,以完成具體的設(shè)置,如假定hpic請(qǐng)求類型的id為0xb6.hpic=0x0101(bob位為1),則請(qǐng)求工具欄的具體參數(shù)應(yīng)為:req=0xb6,value=0x0000,index=0xbeef,length=2,dir=0,hex bytes=0101,固件中應(yīng)加入的請(qǐng)求處理程序?yàn)椋?

          case 0xb6:

          {epobcl=0;          //ep0使能

          while(ep01stat&bmep0bsy); //等待epo數(shù)據(jù)接收完畢

          while(!hpi_rdy);      //等待hpi處理完畢

          ioa=0x00;           //選擇hpic寄存器

          gpifwfselect=0x1e;      //選擇寫低字節(jié)的單字節(jié)寫控制波形

          while(?。╣piftrig&0x80))

          {;}

          xgpifsgldatlx=ep0buf[0];   //寫低字節(jié)數(shù)據(jù)

          gpifwfselect=0x4e;      //選擇寫高字節(jié)的單字節(jié)寫控制波形

          while(?。╣piftrig&0x80))

          {;}

          xgpifsgldatalx=ep0buf[1];  //寫高字節(jié)數(shù)據(jù)

          break;}

          設(shè)置程序下載的首地址(hpia值)的請(qǐng)求處理程序與設(shè)置hpic的程序基本相同,只需按照請(qǐng)求類型的id,來(lái)改變?cè)L問(wèn)寄存器的地址即可,訪問(wèn)hpia時(shí),hcntl[1:0]=10b,即ioa=0x08。

          訪問(wèn)hpid下載程序數(shù)據(jù)時(shí),可采用大端點(diǎn)ep2自動(dòng)打包方式(autoin=1),即將數(shù)據(jù)發(fā)送到端點(diǎn)后,自動(dòng)傳到fifo中,等待寫hpid條件具備,再啟動(dòng)gpif,以將程序數(shù)據(jù)寫入hpid,訪問(wèn)hpdi可采用地址自動(dòng)增加模式(hcntl[1:0]=01b),寫數(shù)據(jù)前,地址自動(dòng)加1,這樣,數(shù)據(jù)便可以經(jīng)過(guò)dsp內(nèi)部dma自動(dòng)寫入內(nèi)部ram,寫hpid的程序如下:

          if(gpiftrig&0x80)  //gpif接口是否處于空閑狀態(tài)

          {if(?。╡p24fifoelgs&0x02)) //自動(dòng)向量是否可以訪問(wèn)ep2fifo中數(shù)據(jù)

          {ioa=0x04; //選擇hpid寄存器,且訪問(wèn)時(shí)地址自動(dòng)增加

          while(!hpi_rdy);  //等待hpi處理完畢

          syncdelay;

          gpiftcb1=ep2fifobch; //寫入的字節(jié)數(shù)

          syncdelay;

          gpiftcb0=ep2fifobcl;

          syncdelay;

          gpiftrig=gpif_ep2;  //啟動(dòng)寫數(shù)據(jù)

          syncdelay;

          while(?。╣piftrig&0x80) //等待寫入完畢

          {;}

          syncdelay;}}

          這樣程序數(shù)據(jù)就可以分段通過(guò)端點(diǎn)2寫入dsp內(nèi)部ram,最后再把入口地址寫入0x7f,以完成hpi自舉,值得注意的是,采用此種方式訪問(wèn)hpid時(shí),寫入hpia的初值為程序入口的一個(gè)地址,例如,寫test1.hex時(shí),應(yīng)設(shè)定hpia=0x1fff。

          為縮短開(kāi)發(fā)周期,本設(shè)計(jì)采用開(kāi)發(fā)包中通用驅(qū)動(dòng)(ezusb.sys)和ezusb control panel進(jìn)行開(kāi)發(fā)、調(diào)試、也可以對(duì)通用驅(qū)動(dòng)、控制面板的源程序在vc++環(huán)境(需要ddk的支持)下進(jìn)行二次開(kāi)發(fā),以便編譯出開(kāi)發(fā)者滿意的驅(qū)動(dòng)程序和上位機(jī)程序。

          結(jié)束語(yǔ)

          通過(guò)實(shí)踐證明,基于usb2.0總線dsp hpi自舉的方案是可行的,可以達(dá)到預(yù)期效果,該方案可以省掉外擴(kuò)的eprom、flash及ram等程序存儲(chǔ)器,故可節(jié)約成本,也便于dsp軟件算法升級(jí),而且符合嵌入式系統(tǒng)要求,有很好的應(yīng)用前景,當(dāng)然,該方案還有待進(jìn)一步優(yōu)化與增強(qiáng),若要訪問(wèn)外部存儲(chǔ)器,還需要編寫二次引導(dǎo)程序,以便通過(guò)該程序把內(nèi)部存儲(chǔ)器中的數(shù)據(jù)編譯到外部存儲(chǔ)器,若需dsp與主機(jī)實(shí)時(shí)通信,則需要usb固件和dsp源程序中編寫相應(yīng)的中斷服務(wù)程序。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();