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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 使用嵌入式處理器對可編程邏輯器件重編程

          使用嵌入式處理器對可編程邏輯器件重編程

          作者: 時間:2012-06-05 來源:網(wǎng)絡(luò) 收藏

           1 引言

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

            在系統(tǒng)里除了外還會經(jīng)常到可,有些可在被焊接到印制電路板上之后還可以對其程序進行更新,這種特性稱之為“在系統(tǒng)可重能力”(In SystemReprogrammability,ISR)。在單板開發(fā)階段,通常下載電纜通過IEEE Standard 1149.1 JTAG接口對重編程。在產(chǎn)品原型及制造階段,單板上的JTAG接口很可能出于產(chǎn)品外形及內(nèi)部結(jié)構(gòu)設(shè)計的考慮已經(jīng)無法與下載電纜相連接,此時將無法通過下載電纜對邏輯器件重編程?;?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/嵌入式">嵌入式系統(tǒng)的產(chǎn)品通常對外提供串行接口或以太網(wǎng)接口,這些接口由嵌入式來控制[1] ,因此可以通過這些接口將邏輯器件的更新程序發(fā)送到,由處理器對可編程邏輯器件重編程。

            2 實現(xiàn)方法

            2.1 軟件方面

            串行接口由于協(xié)議實現(xiàn)簡單、占用資源少而被嵌入式系統(tǒng)廣泛,只需要使用串行接口連接線將主機的串行接口與產(chǎn)品的串行接口相連接,通過主機上的串行接口通訊軟件將更新程序發(fā)送給處理器即可,文件傳輸協(xié)議一般采用Xmodem協(xié)議;而對于基于嵌入式系統(tǒng)的網(wǎng)絡(luò)產(chǎn)品而言,由于自身提供以太網(wǎng)接口,而且操作系統(tǒng)內(nèi)嵌TCP/IP協(xié)議棧,因此可以使用以太網(wǎng)接口將更新程序發(fā)送給處理器,文件傳輸協(xié)議一般采用TFTP協(xié)議,嵌入式系統(tǒng)運行TFTP服務(wù)器程序,主機上運行TFTP客戶端程序[2] 。

            嵌入式處理器通過串行接口或以太網(wǎng)接口接收到的可編程邏輯器件的更新程序是一種Jam文件,使用類似于Altera公司Quartus II development tool的開發(fā)工具根據(jù)Jam標準和測試語言(Jam Standard Test andProgramming Language 以下簡稱Jam語言)的要求由Programmer Object File (*.pof,文件后綴名為pof)一類的目標文件轉(zhuǎn)換生成[3] 。Jam文件是一個ASCII文件,文件中包含了對可編程邏輯器件進行編程的所有信息,包括編程算法和數(shù)據(jù),詳細介紹如下:

           ?。?)“注解字段”部分存儲了Jam文件的相關(guān)信息,包括可編程邏輯器件的名稱,Jam文件的創(chuàng)建時間,使用的Jam語言的版本等等。

           ?。?)“變量聲明/初始化”部分由編程/校驗的數(shù)據(jù)和Jam文件用到的一些變量聲明組成。

           ?。?)“算法部分”包含了對可編程邏輯器件編程需要用到的命令和代碼,包括空白檢查、擦除、編程和校驗等等所有可以在可編程邏輯器件上執(zhí)行的功能。在代碼中可以使用分支或循環(huán)結(jié)構(gòu)。

            嵌入式處理器在接收到Jam文件之后通過運行一個Jam Player程序來解析這個Jam文件,翻譯文件中每一條指令,并對JTAG端口進行數(shù)據(jù)的讀寫操作,從而完成對ISR可編程邏輯器件程序的更新工作。Jam Player是一個C語言程序,其main主程序執(zhí)行所有的基本功能,包括對Jam文件內(nèi)容的解析,指令的翻譯等,這部分內(nèi)容對于所有的嵌入式系統(tǒng)和Jam文件來說都是一樣的。而Jam Player的I/O功能,包括I/O管腳的尋址、延時程序、文件的I/O以及操作系統(tǒng)相關(guān)的功能都包含在jamstub.c文件里,通過修改這個文件Jam Player可以適用于任何系統(tǒng)結(jié)構(gòu)。當Jam Player接收數(shù)據(jù)的時候,jamstub.c能夠從Jam文件取回數(shù)據(jù),或者從TDO管腳移位讀取數(shù)據(jù)。jamstub.c也能將處理過的JTAG數(shù)據(jù)發(fā)送到3個JTAG管腳(TDI、TMS和TCK),將出錯消息和相關(guān)信息返回給調(diào)用程序。升級ISR可編程邏輯器件的程序只需要改變Jam文件。

            Jam Player通過一個jam_jtag_io函數(shù)(int jam_jtag_io(int tms_tdi))來控制對JTAG接口的讀寫操作。每次調(diào)用這個函數(shù)的時候,JTAG的TMS和TDI輸出信號將被設(shè)定為需要的值,而TDO輸入信號將被采樣,值將被返回,之后TCK時鐘信號將產(chǎn)生一個下降沿。tms_tdi參數(shù)包含3比特信息,分別指示TMS信號和TDI信號的狀態(tài)以及是否需要讀取TDO的輸出(如果不需要用到TDO的值則可以跳過對TDO的讀取操作)。最低位比特代表TMS的值,第2位比特代表TDI的值,第3位比特指示是否讀取TDO:如果置位,則必須讀取TDO的值,否則不需要。如果TDO為低電平,返回零值,高電平則返回非零值。如果沒有對TDO進行讀取也將返回零值。

            2.2 硬件方面

            嵌入式處理器與JTAG 器件連接的方法有兩種,一種是直接將嵌入式處理器與JTAG 器件連接起來,這種方法處理器需要有專門四個管腳用于JTAG 接口,節(jié)省了電路板空間的同時卻占用了處理器的四個管腳;另一種方法通過一個接口邏輯將JTAG 器件連接到處理器的總線,處理器通過JTAG 器件對應(yīng)的地址來對其進行讀寫操作[4] 。

            圖1 給出了接口邏輯的一個范例。當接口邏輯收到正確的地址和控制信號,它將對TDI、TCK 和TMS信號進行同步,并通過多路復(fù)用器驅(qū)動輸出管腳,下載電纜也可以通過多路復(fù)用器對JTAG 鏈進行編程或驗證[5] 。TDI、TCK 和TMS 信號的同步通過嵌入式處理器的時鐘信號和寄存器來完成,TDO 的緩沖區(qū)可以防止總線競爭,TDI、TCK 和TMS 的緩沖區(qū)在調(diào)試的時候還可以用來讀回寄存器的值。圖中的與門通過R/W 信號來控制執(zhí)行讀或?qū)懖僮?,而AS 和DS 信號則可以在另一個級別上對電路進行選擇和去選擇。

          接口邏輯

          圖1 接口邏輯

            2.3 內(nèi)存使用情況

            下面討論使用嵌入式處理器對可編程邏輯器件重編程時內(nèi)存的使用情況。為了能夠兼容沒有內(nèi)存分配服務(wù)的嵌入式處理器,Jam Player 不僅需要程序存儲空間而且需要動態(tài)內(nèi)存。程序存儲空間(如硬盤驅(qū)動器或ROM)用于存儲Jam Player 可執(zhí)行二進制文件和Jam 文件;動態(tài)內(nèi)存(如RAM)將在調(diào)用Jam Player的時候使用。

            Jam Player 按照下面的步驟來使用內(nèi)存:

           ?。?)嵌入式處理器從ROM 中調(diào)用Jam Player;

           ?。?)Jam Player 從ROM 中讀取Jam 文件,然后把它存入RAM;

           ?。?)Jam Player 對Jam 文件中包含的壓縮程序數(shù)據(jù)解壓,并將解壓后的數(shù)據(jù)存入RAM;

           ?。?)Jam Player 在RAM 中初始化符號表(symbol table)、堆棧(stack)和堆(heap)。

            符號表包含Jam 文件的標記(labels)和變量(variables);堆棧用于FOR 循環(huán),CALL 和PUSH 語句;堆作為臨時內(nèi)存用于數(shù)學表達式的求值以及填充數(shù)據(jù)的存儲。在處理Jam 文件時每碰到一個命令堆棧和堆大小都將增加,可用動態(tài)內(nèi)存越來越少,而Jam 文件、解壓縮后的數(shù)據(jù)以及符號表需要的動態(tài)內(nèi)存空間在整個過程中則保持不變。

            Jam Player 的內(nèi)存使用情況如圖2 所示。

          Jam Player 的內(nèi)存使用情況

          圖2 Jam Player 的內(nèi)存使用情況

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(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); })();