當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化

  1 引言

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

  2 實(shí)現(xiàn)方法

  2.1 軟件方面

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

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

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

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

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

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

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

  2.2 硬件方面

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

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

圖1 接口邏輯

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

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

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

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

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

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

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

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

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

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

  2.3.1 程序存儲(chǔ)空間(ROM)使用情況

  所需程序存儲(chǔ)空間為:

Jam Player的大小由使用的嵌入式處理器以及接口邏輯的復(fù)雜度決定,Jam文件總的程序存儲(chǔ)空間由JTAG鏈上正在被編程的器件數(shù)量決定。如果JTAG鏈上只有一個(gè)器件,該器件對(duì)應(yīng)Jam文件的大小即為所需程序存儲(chǔ)空間的大小。Jam文件的大小還取決于目標(biāo)器件,在壓縮后一般在26K字節(jié)到30K字節(jié)。假設(shè)JTAG鏈中有3個(gè)器件,所有3個(gè)器件都將要編程,所需Jam文件存儲(chǔ)空間將為3個(gè)Jam文件大小的總和。表1給出了單器件所需要程序存儲(chǔ)空間的情況。

表1 單器件需要的程序存儲(chǔ)空間

  2.3.2 動(dòng)態(tài)內(nèi)存(RAM)的使用情況

  所需RAM 空間為:

Jam 文件需要的RAM 空間與ROM 空間大小一樣,在程序存儲(chǔ)空間使用情況里已經(jīng)討論過(guò)了。在Jam Player從ROM 讀出Jam 文件存儲(chǔ)到RAM 之后,Jam Player 對(duì)Jam 文件里的壓縮數(shù)據(jù)解壓并將解壓后的數(shù)據(jù)存儲(chǔ)到RAM。解壓后的數(shù)據(jù)占用RAM 空間的大小可以通過(guò)Jam 文件里的ACA 變量來(lái)得到。每個(gè)ACA 變量都在“變量聲明/初始化”部分列出,每個(gè)數(shù)組的大小由變量聲明方括號(hào)里的數(shù)值決定。例如:

說(shuō)明解壓后的ACA變量大小為434460比特,也就是大約53K字節(jié)。

  符號(hào)表的大小由下式給出:

一個(gè)變量或標(biāo)記名稱的大小為48字節(jié),JAM_C_MAX_SYMBOL_COUNT在jamdefs.h文件里定義,默認(rèn)值為1021。實(shí)際上大多數(shù)Jam文件最多使用400個(gè)變量和標(biāo)記名稱。將JAM_C_MAX_SYMBOL_COUNT修改為400能節(jié)省一部分動(dòng)態(tài)內(nèi)存,

  相比較Jam Player使用的總RAM空間大小而言堆棧和堆需要很少的RAM,jamdefs.h文件里的JAMC_MAX_NESTING_DEPTH常量定義堆棧的最大深度。表2給出了單器件所需要RAM空間的情況。

表2 單器件需要的RAM 空間

  3 結(jié)論

  本文通過(guò)軟件、硬件以及內(nèi)存的使用情況等方面的介紹,詳細(xì)描述了一種通過(guò)嵌入式處理器使用Jam編程與測(cè)試語(yǔ)言對(duì)ISR器件重編程的新方法,為在產(chǎn)品原型及制造階段對(duì)可編程邏輯器件重編程提供了參考,具有很強(qiáng)的實(shí)用意義。

  本文作者創(chuàng)新點(diǎn):由于在產(chǎn)品原型及制造階段,單板上的JTAG接口很可能出于產(chǎn)品外形及內(nèi)部結(jié)構(gòu)設(shè)計(jì)的考慮已經(jīng)無(wú)法與下載電纜相連接,此時(shí)將無(wú)法通過(guò)下載電纜對(duì)可編程邏輯器件重編程。而通過(guò)串行接口或以太網(wǎng)接口將可編程邏輯器件的更新程序發(fā)送到處理器,由處理器對(duì)可編程邏輯器件重編程,解決了這個(gè)難題。

  參考文獻(xiàn)

  [1] 杜延,劉從越.嵌入式實(shí)時(shí)系統(tǒng)軟件測(cè)試實(shí)踐[J].微計(jì)算機(jī)信息,2007,4-2:86-88.

  [2] Kamal,Raj.嵌入式系統(tǒng):體系結(jié)構(gòu)、編程設(shè)計(jì)[M].清華大學(xué)出版社,2005.

  [3] 鄭亞民,董曉舟.可編程邏輯器件開(kāi)發(fā)軟件QuartusII[M].國(guó)防工業(yè)出版社,2006.

  [4] Stuart,R.Ball.嵌入式微處理器系統(tǒng)設(shè)計(jì)實(shí)例(第三版)[M].電子工業(yè)出版社,2004.

  [5] 田澤.嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用[M].北京航空航天大學(xué)出版社,2005.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉