国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于片上閃存的系統(tǒng)芯片jtag調(diào)試控制方法

      文檔序號(hào):5881944閱讀:204來(lái)源:國(guó)知局
      專利名稱:一種基于片上閃存的系統(tǒng)芯片jtag調(diào)試控制方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及系統(tǒng)芯片領(lǐng)域,尤其是一種系統(tǒng)芯片JTAG調(diào)試控制方法。
      背景技術(shù)
      系統(tǒng)芯片(SOC,System on Chip)是指在單個(gè)芯片上集成一個(gè)完整的系統(tǒng)。這一 設(shè)計(jì)技術(shù)始于20世紀(jì)90年代中期。隨著半導(dǎo)體工藝技術(shù)的快速發(fā)展,IC (Integrated Circuit,集成電路)設(shè)計(jì)者能夠?qū)⒃絹?lái)越復(fù)雜的功能集成到單個(gè)硅片上,出現(xiàn)了集成電路 (IC)向集成系統(tǒng)(IS,Integrate System)轉(zhuǎn)變的趨勢(shì),SOC就是在這一轉(zhuǎn)變下產(chǎn)生的。隨 著深亞微米工藝技術(shù)日益成熟,集成電路芯片的規(guī)模越來(lái)越大。數(shù)字IC從基于時(shí)序驅(qū)動(dòng) 的設(shè)計(jì)方法,發(fā)展到基于IP (Intellectual Property,知識(shí)產(chǎn)權(quán))核復(fù)用的設(shè)計(jì)方法,這一 設(shè)計(jì)方法在SOC中得到廣泛的應(yīng)用。SOC能夠充分的利用現(xiàn)有的設(shè)計(jì)積累,極大的提高了 ASIC (Application Specified Integrated Circuit,專用集成電路)的設(shè)計(jì)能力,因此發(fā) 展十分的迅速,并成為集成電路發(fā)展的必然趨勢(shì)。JTAG 是 Joint Test Action Group(聯(lián)合測(cè)試行為組織)的簡(jiǎn)稱。IEEE 1149.1 標(biāo) 準(zhǔn)就是由JTAG這個(gè)組織最初提出的,最終由IEEE批準(zhǔn)并且標(biāo)準(zhǔn)化的。所以,IEEE 1149.1 這個(gè)標(biāo)準(zhǔn)一般也俗稱JTAG調(diào)試標(biāo)準(zhǔn)。JTAG接口主要用于芯片的調(diào)試,還可以用于實(shí)現(xiàn)ISP (In-System Programmable,在線編程),對(duì)FLASH (閃存)等器件進(jìn)行編程。在JTAG調(diào)試當(dāng)中,邊界掃描是一個(gè)很重要的概念。邊界掃描技術(shù)的基本思想是 在靠近芯片的輸入輸出管腳上增加一個(gè)移位寄存器單元。因?yàn)檫@些移位寄存器單元都分布 在芯片的邊界上,所以被稱為邊界掃描寄存器。當(dāng)芯片處于調(diào)試狀態(tài)的時(shí)候,這些邊界掃描 寄存器可以將芯片和外圍的輸入輸出隔離開(kāi)來(lái)。通過(guò)這些邊界掃描寄存器單元,就可以觀 察和控制芯片上的輸入和輸出信號(hào)。對(duì)于芯片的輸入管腳,可以通過(guò)與之相連的邊界掃描 寄存器單元把信號(hào)(數(shù)據(jù))加載倒該管腳中去;對(duì)于芯片的輸出管腳,也可以通過(guò)與之相連 的邊界掃描寄存器獲取該管腳上的輸出信號(hào)。在正常的運(yùn)行狀態(tài)下,這些邊界掃描寄存器 對(duì)芯片來(lái)說(shuō)是透明的,所以正常的運(yùn)行不會(huì)受到任何影響。這樣,邊界掃描寄存器提供了一 個(gè)便捷的方式用以觀測(cè)和控制所需要調(diào)試的芯片,任意的讀取和修改芯片內(nèi)的寄存器以及 數(shù)據(jù)成為可能。另外,芯片輸入輸出管腳上的邊界掃描寄存器單元可以相互連接起來(lái),在芯 片的周圍形成一個(gè)邊界掃描鏈。邊界掃描鏈可以串行的輸入和輸出,通過(guò)相應(yīng)的時(shí)鐘信號(hào) 和控制信號(hào),就可以方便的觀察和控制處在調(diào)試狀態(tài)下的芯片。JTAG通過(guò)TAP (Test Access Port,測(cè)試訪問(wèn)口)來(lái)實(shí)現(xiàn)對(duì)邊界掃描鏈的控制。在 IEEE 1149. 1標(biāo)準(zhǔn)里面,將寄存器分為兩大類數(shù)據(jù)寄存器(DR)和指令寄存器(IR)。邊界 掃描鏈屬于數(shù)據(jù)寄存器中很重要的一種,用來(lái)實(shí)現(xiàn)對(duì)芯片的輸入輸出的觀察和控制,數(shù)據(jù) 寄存器還包括器件標(biāo)識(shí)寄存器和旁路寄存器。而指令寄存器用來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)寄存器的控 制,例如可以為邊界掃描鏈指定一個(gè)訪問(wèn)對(duì)象。TAP是一個(gè)通用的端口,通過(guò)TAP可以訪問(wèn)芯片提供的所有數(shù)據(jù)寄存器和指令 寄存器。對(duì)整個(gè)TAP的控制是通過(guò)TAP Controller (TAP控制器)來(lái)完成的。標(biāo)準(zhǔn)的TAP接口是四線TMS (Test Mode Selection hput,測(cè)試模式選擇輸入)、TCK (Test Clock Input,測(cè)試時(shí)鐘輸入)、TDI (Test Data Input,測(cè)試數(shù)據(jù)輸入)、TDO (Test Data Output, 測(cè)試數(shù)據(jù)輸出)。還有一根可選引腳TRST(Test Reset hput,測(cè)試復(fù)位輸入)。這些引腳 的定義為TCK為TAP的操作提供一個(gè)獨(dú)立的,基本的時(shí)鐘信號(hào),TAP的一切操作都要通過(guò)這 個(gè)時(shí)鐘來(lái)驅(qū)動(dòng);TDI為測(cè)試數(shù)據(jù)輸入,所有要輸入到特定寄存器的數(shù)據(jù)都要通過(guò)TDI接口來(lái) 一位一位的串行輸入,這個(gè)輸入也有TCK來(lái)驅(qū)動(dòng);TDO為測(cè)試數(shù)據(jù)輸出,所有要從特定寄存 器讀取的數(shù)據(jù)都通過(guò)TDO—位一位串行的輸出,這個(gè)過(guò)程需要通過(guò)TCK驅(qū)動(dòng);TMS為測(cè)試模 式選擇,用來(lái)控制TAP狀態(tài)機(jī)的轉(zhuǎn)換,通過(guò)這一信號(hào)可以控制TAP在不同狀態(tài)之間轉(zhuǎn)換,從 而根據(jù)用戶要求完成不同操作,該信號(hào)在TCK上升沿有效;TRST為測(cè)試復(fù)位線,通過(guò)這一信 號(hào)可以對(duì)TAP狀態(tài)機(jī)復(fù)位。通過(guò)TAP對(duì)數(shù)據(jù)寄存器進(jìn)行訪問(wèn)的一般過(guò)程如下首先,通過(guò)指令寄存器,選擇一 個(gè)需要訪問(wèn)的數(shù)據(jù)寄存器;其次,將選定的數(shù)據(jù)寄存器連接到TDI和TDO上,即將數(shù)據(jù)寄存 器綁定到掃描鏈路上;最后,在TCK的驅(qū)動(dòng)下,經(jīng)過(guò)TDI,將需要的數(shù)據(jù)輸入到指定的數(shù)據(jù)寄 存器,同時(shí)通過(guò)TD0,將指定的數(shù)據(jù)寄存器中的數(shù)據(jù)輸出。TAP狀態(tài)機(jī)如附圖1所示,總共有16個(gè)狀態(tài),通過(guò)TMS來(lái)控制這些狀態(tài)之間的轉(zhuǎn) 換,從而達(dá)到對(duì)數(shù)據(jù)寄存器的輸入和讀取。JTAG測(cè)試系統(tǒng)的正常操作過(guò)程是向指令寄存器 送入指令,然后通過(guò)數(shù)據(jù)寄存器進(jìn)行測(cè)試。測(cè)試指令指出了下一個(gè)要進(jìn)行的測(cè)試以及測(cè)試 需要使用的數(shù)據(jù)寄存器。指令分為公開(kāi)和私有,已經(jīng)定義的標(biāo)準(zhǔn)指定了一個(gè)兼容器件必須 支持的最小公開(kāi)指令集。而私有指令主要用于片上的專用測(cè)試,標(biāo)準(zhǔn)并沒(méi)有做出具體的規(guī) 定。JTAG的邊界掃描結(jié)構(gòu)如圖2所示。BSC (Boundary Scan Cell)為邊界掃描單元, 能夠截取各個(gè)輸入輸出管腳的數(shù)據(jù)。數(shù)據(jù)寄存器的三個(gè)重要部分如下器件標(biāo)識(shí)寄存器能 夠讀出固定在芯片內(nèi)部的標(biāo)識(shí)碼;旁路寄存器將TDI延遲一個(gè)時(shí)鐘連接到TD0,使得測(cè)試臺(tái) 可以快速的訪問(wèn)下一個(gè)器件(在多個(gè)器件串行連接的情況下);邊界掃描寄存器能夠截取芯 片核心邏輯與輸入輸出管腳之間的所有信號(hào)。一個(gè)支持JTAG調(diào)試的CPU,只要時(shí)鐘TCK正常,就可以通過(guò)JTAG接口訪問(wèn)CPU的 內(nèi)部寄存器和掛在CPU總線上的設(shè)備,如RAM (Random Access Memory,隨機(jī)存取存儲(chǔ)器) 等存儲(chǔ)設(shè)備以及UART,TIMER, GPIO等通用IP和特定芯片的專用IP。這就為系統(tǒng)芯片的調(diào) 試提供了極為便利的條件。但是隨之而來(lái)也產(chǎn)生了新的問(wèn)題。由于通過(guò)JTAG接口可以讀 取和修改芯片內(nèi)部存儲(chǔ)設(shè)備的數(shù)據(jù)和IP的寄存器,這就使得那些對(duì)信息安全有特殊要求 的芯片面臨數(shù)據(jù)泄露和被篡改的危險(xiǎn)。片上閃存具有非易失性的特點(diǎn),在斷電后能夠保存數(shù)據(jù)。同時(shí)由于其位于芯片內(nèi) 部,在芯片封裝完成后,通過(guò)JTAG接口可以讀寫(xiě)片上閃存,但通過(guò)其它的方式則很難讀取和 改變片上閃存的數(shù)據(jù)。需要說(shuō)明的是,在理論上,JTAG接口可以訪問(wèn)CPU總線上的任何設(shè)備, 所以應(yīng)該能夠?qū)懫祥W存,但閃存的寫(xiě)入方式與RAM不大相同,寫(xiě)的時(shí)序根據(jù)不同的閃存而 不同,因此需要一個(gè)特定的接口 IP將片上閃存與總線相連,實(shí)現(xiàn)指定閃存的寫(xiě)入功能。

      發(fā)明內(nèi)容
      為了克服已有的系統(tǒng)芯片JTAG調(diào)試控制方法的存在數(shù)據(jù)安全隱患、安全性較差的不足,本發(fā)明提供一種在方便調(diào)試的同時(shí)保障數(shù)據(jù)安全、提升安全性的基于片上閃存的 系統(tǒng)芯片JTAG調(diào)試控制方法。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是
      一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,所述JTAG通過(guò)TAP實(shí)現(xiàn)對(duì)邊界掃 描鏈的控制,所述TAP接口包括TCK接口、TMS接口、TDI接口、TDO接口和TRST接口,所述 TCK接口、TMS接口和TDI接口分別通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制,數(shù)據(jù)選擇器的兩 個(gè)輸入分別為正常信號(hào)和固定的低電平或高電平,再通過(guò)系統(tǒng)芯片內(nèi)的一個(gè)位寬為一位的 寄存器REGl來(lái)控制數(shù)據(jù)選擇器,當(dāng)寄存器REGl的值為一時(shí),將低電平信號(hào)連接到TCK接 口、TMS接口和TDI接口上,屏蔽JTAG接口 ;而寄存器REGl的值為零時(shí),將正常信號(hào)連接到 TCK接口、TMS接口和TDI接口上,進(jìn)入正常的調(diào)試模式;
      設(shè)置兩個(gè)關(guān)鍵值為KEYl和KEY2,以及選定片上閃存中存放關(guān)鍵詞的地址ADDR ; 所述系統(tǒng)芯片JTAG調(diào)試控制方法包括以下步驟
      (1)、啟動(dòng)程序,從零地址開(kāi)始取指,即進(jìn)入ROM段;
      (2)、從片上閃存的ADDR地址讀取32位數(shù)據(jù)VALUE,并將VALUE與關(guān)鍵值KEYl進(jìn)行比

      如果VALUE與KEYl相等,則將REGl寫(xiě)成一,此時(shí)JTAG接口被屏蔽,并跳轉(zhuǎn)到程序的起 始地址;
      如果VALUE與KEYl不相等,則將REGl寫(xiě)成零,此時(shí)JTAG接口能夠正常的工作,順利進(jìn) 入調(diào)試模式;
      (3)繼續(xù)將VALUE與KEY2進(jìn)行比較
      如果VALUE與KEY2相等,則直接跳轉(zhuǎn)到程序的起始地址。如果VALUE月KEY2不相等, 則跳轉(zhuǎn)到一段循環(huán)指令。作為優(yōu)選的一種方案所述TRST接口也通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制,當(dāng) 寄存器REGl的值為一時(shí),將高電平信號(hào)接到TRST接口上;當(dāng)寄存器REGl的值為零時(shí),將正 常信號(hào)接到TRST接口上。進(jìn)一步,所述寄存器REGl支持讀和寫(xiě)。所述兩個(gè)關(guān)鍵值KEYl和KEY2選用除了 OxfffTfTfT外的數(shù)值。所述兩個(gè)關(guān)鍵值 KEYl和KEY2的地址與程序段的地址位于片上閃存的不同位置。本發(fā)明的技術(shù)構(gòu)思為為了能夠順利的進(jìn)入JTAG調(diào)試以及調(diào)試完成后能夠安全 有效的屏蔽JTAG接口,本發(fā)明對(duì)JTAG的四根輸入引腳TCK,TMS, TDI,TRST進(jìn)行控制(如果 對(duì)應(yīng)的JTAG接口沒(méi)有TRST,也可只對(duì)其它三根控制)。由前文論述可知,這四根引腳對(duì)JTAG 調(diào)試起至關(guān)重要的作用,當(dāng)這四根輸入引腳能夠正常輸入時(shí),JTAG工作在調(diào)試模式下,可以 去調(diào)試芯片。當(dāng)TCK,TMS和TDI為固定的低電平,TRST為固定的高電平時(shí),由于沒(méi)有TCK 驅(qū)動(dòng),同時(shí)模式選擇的TMS也為低電平,TAP狀態(tài)機(jī)不能正常跳轉(zhuǎn),JTAG調(diào)試功能被屏蔽, 不能再去讀取和修改芯片內(nèi)部的數(shù)據(jù)。TRST被固定為高電平是因?yàn)門RST為低電平時(shí),會(huì) 使JTAG接口復(fù)位,故將其接為高電平(沒(méi)有這跟引腳也不影響最終的結(jié)果)。以下過(guò)程認(rèn)為 JTAG為具有五線的接口,即JTAG接口包含TRST線。四根輸入引腳分別通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制。數(shù)據(jù)選擇器的兩個(gè)輸入 分別為正常信號(hào)和固定的低電平或高電平。再通過(guò)芯片內(nèi)的一個(gè)位寬為一位的寄存器REGl來(lái)控制數(shù)據(jù)選擇器,當(dāng)REGl的值為一時(shí),將低電平信號(hào)連接到JTAG接口的TCK,TMS, TDI 上,并將高電平信號(hào)街道JTAG接口的TRST上,屏蔽JTAG接口;而REGl的值為零時(shí),將正常 信號(hào)連接到JTAG接口的TCK,TMS, TDI和TRST上,進(jìn)入正常的調(diào)試模式??紤]到片上閃存 的特性,我們將根據(jù)片上閃存的數(shù)據(jù)來(lái)決定REGl的值,從而達(dá)到對(duì)JTAG調(diào)試的控制。需要 注意的是,REGl不應(yīng)該用全局復(fù)位信號(hào)去復(fù)位,即REGl只支持讀和寫(xiě),不支持任何形式的 復(fù)位。整個(gè)控制過(guò)程的核心是一段固化在芯片上的ROM程序,通過(guò)這段ROM程序可以根 據(jù)片上閃存的一個(gè)特殊地址的內(nèi)容來(lái)使JTAG接口正常工作或者屏蔽JTAG接口。首先應(yīng)該 決定兩個(gè)32位的關(guān)鍵值,這兩個(gè)關(guān)鍵值是判斷當(dāng)前需求的依據(jù)。由于片上閃存在出廠后一 般是擦除后的狀態(tài),即所有數(shù)據(jù)位都為一,所以選定的兩個(gè)關(guān)鍵值應(yīng)該避開(kāi)Oxffffffff。記 這兩個(gè)選定的關(guān)鍵值為KEYl和KEY2。其次應(yīng)該選定一個(gè)存放關(guān)鍵值的地址。如果程序也 是存放在片上閃存上,那么應(yīng)該注意不要讓存放的程序段和存放關(guān)鍵值的地址沖突。記選 定的這個(gè)地址為ADDR。這段ROM程序起始地址位于芯片內(nèi)地址空間的零地址。程序啟動(dòng)后會(huì)從零地址 開(kāi)始取指,即會(huì)進(jìn)入ROM段。ROM段固化的程序?qū)⑼瓿梢韵乱恍┎僮魇紫?,從片上閃存的 ADDR地址讀取32位數(shù)據(jù)VALUE,并將VALUE與KEYl進(jìn)行比較。如果VALUE與KEYl相等, 則將REGl寫(xiě)成一,此時(shí)JTAG接口被屏蔽,并跳轉(zhuǎn)到程序的起始地址(一般為片上或者片外 存儲(chǔ)器的基地址)。如果VALUE與KEYl不相等,則將REGl寫(xiě)成零,此時(shí)JTAG接口能夠正常 的工作,順利進(jìn)入調(diào)試模式,并繼續(xù)將VALUE與KEY2進(jìn)行比較。如果VALUE與KEY2相等, 則直接跳轉(zhuǎn)到程序的起始地址。如果VALUE月KEY2不相等,則跳轉(zhuǎn)到一段循環(huán)指令。根據(jù)上面的分析,這段ROM程序會(huì)產(chǎn)生三個(gè)不同的狀態(tài)屏蔽JTAG,跳轉(zhuǎn)到程序起 始段;開(kāi)啟JTAG,跳轉(zhuǎn)到程序起始段;開(kāi)啟JTAG,跳轉(zhuǎn)到一段循環(huán)指令。這三種狀態(tài)的作用 如下
      (1)芯片調(diào)試前,片上閃存處于擦除的狀態(tài),所有的數(shù)據(jù)位都為一。復(fù)位后,位于零地址 的ROM程序從片上閃存ADDR地址讀回的32位數(shù)據(jù)為Oxffffffff,與KEYl和KEY2都不相 等。ROM程序段將會(huì)開(kāi)啟JTAG,此時(shí)由于程序還沒(méi)有裝載到存儲(chǔ)器中,不能直接跳到程序的 起始地址(否則CPU取到無(wú)法識(shí)別的指令),只能跳到一段循環(huán)指令,以確保能夠順利的進(jìn)入 調(diào)試模式。進(jìn)入JTAG調(diào)試模式后,將需要調(diào)試的程序載入存儲(chǔ)器中相應(yīng)的地址空間。并通 過(guò)JTAG接口將片上閃存的ADDR地址寫(xiě)成KEY2的值。(2)再次復(fù)位啟動(dòng)后,ROM程序段再次從片上閃存ADDR地址讀取數(shù)據(jù),這時(shí)讀回的 數(shù)據(jù)為等于KEY2,JTAG正常的工作,由于程序已經(jīng)下載完畢,可以直接跳到程序的起始地 址。這時(shí)可以正常的運(yùn)行程序,監(jiān)測(cè)程序運(yùn)行的狀態(tài),并根據(jù)需要可以反復(fù)的修改和重新載 入程序。直到程序完全運(yùn)行正確,并希望永久的屏蔽JTAG接口,以防止非法的讀取和修改 芯片內(nèi)的數(shù)據(jù),這時(shí)通過(guò)JTAG接口將片上閃存的ADD地址寫(xiě)成KEYl的值。(3)由于片上閃存能夠在斷電后保存數(shù)據(jù),以后的每一次復(fù)位重新啟動(dòng)后,ROM程 序段從片上閃存的ADDR地址讀取的數(shù)據(jù)都等于KEYl的值,JTAG被屏蔽,無(wú)法再通過(guò)JTAG 接口去讀取和修改芯片內(nèi)的數(shù)據(jù),也無(wú)法再去修改片上閃存的ADDR地址的數(shù)據(jù),從而達(dá)到 了保護(hù)芯片內(nèi)數(shù)據(jù)安全的作用。綜上所述,本發(fā)明能夠通過(guò)片上閃存安全有效的對(duì)系統(tǒng)芯片的JTAG調(diào)試進(jìn)行控制,從而達(dá)到保護(hù)芯片數(shù)據(jù)安全的目的。本發(fā)明的有益效果主要表現(xiàn)在在方便調(diào)試的同時(shí)保障數(shù)據(jù)安全、提升安全性。


      圖1是TAP狀態(tài)機(jī)的示意圖。圖2是JTAG的邊界掃描結(jié)構(gòu)圖。
      3AMBA(Advanced Microcontroller Bus Architecture, MW^W 制器總線架構(gòu))2. 0結(jié)構(gòu)的簡(jiǎn)單片上系統(tǒng)的示意圖。圖4是CPU的JTAG接口的具體連接方法的示意圖。圖5是ROM程序的流程圖。
      具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)D3 圖5,一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,所述JTAG通 過(guò)TAP實(shí)現(xiàn)對(duì)邊界掃描鏈的控制,所述TAP接口包括TCK接口、TMS接口、TDI接口、TDO接 口和TRST接口,所述TCK接口、TMS接口和TDI接口分別通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái) 控制,數(shù)據(jù)選擇器的兩個(gè)輸入分別為正常信號(hào)和固定的低電平或高電平,再通過(guò)系統(tǒng)芯片 內(nèi)的一個(gè)位寬為一位的寄存器REGl來(lái)控制數(shù)據(jù)選擇器,當(dāng)寄存器REGl的值為一時(shí),將低電 平信號(hào)連接到TCK接口、TMS接口和TDI接口上,屏蔽JTAG接口 ;而寄存器REGl的值為零 時(shí),將正常信號(hào)連接到TCK接口、TMS接口和TDI接口上,進(jìn)入正常的調(diào)試模式;
      設(shè)置兩個(gè)關(guān)鍵值為KEYl和KEY2,以及選定片上閃存中存放關(guān)鍵詞的地址ADDR ; 所述系統(tǒng)芯片JTAG調(diào)試控制方法包括以下步驟 (1 )、啟動(dòng)程序,從零地址開(kāi)始取指,即進(jìn)入ROM段;
      (2)、從片上閃存的ADDR地址讀取32位數(shù)據(jù)VALUE,并將VALUE與關(guān)鍵值KEYl進(jìn)行比

      如果VALUE與KEYl相等,則將REGl寫(xiě)成一,此時(shí)JTAG接口被屏蔽,并跳轉(zhuǎn)到程序的起 始地址;
      如果VALUE與KEYl不相等,則將REGl寫(xiě)成零,此時(shí)JTAG接口能夠正常的工作,順利進(jìn) 入調(diào)試模式;
      (3)繼續(xù)將VALUE與KEY2進(jìn)行比較
      如果VALUE與KEY2相等,則直接跳轉(zhuǎn)到程序的起始地址。如果VALUE月KEY2不相等, 則跳轉(zhuǎn)到一段循環(huán)指令。所述TRST接口也通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制,當(dāng)寄存器REGl的值為一 時(shí),將高電平信號(hào)接到TRST接口上;當(dāng)寄存器REGl的值為零時(shí),將正常信號(hào)接到TRST接口 上。所述寄存器REGl支持讀和寫(xiě),不支持任何形式的復(fù)位。所述兩個(gè)關(guān)鍵值KEYl和KEY2選用除了 Oxffffffff外的數(shù)值。所述兩個(gè)關(guān)鍵值 KEYl和KEY2的地址與程序段的地址位于片上閃存的不同位置。
      3W AMBA(Advanced Microcontroller Bus Architecture, ^MW控制器總線架構(gòu))2.0結(jié)構(gòu)的簡(jiǎn)單片上系統(tǒng)。CPU是一顆支持JTAG調(diào)試的RISC (Reduced Instruction Set Computer,精簡(jiǎn)指令集計(jì)算機(jī))微處理器。eFlash為片上閃存,采用4片 大小為128K的片上閃存并聯(lián),可以進(jìn)行按word (字,即32位)訪問(wèn),地址空間為0x80000 到 Oxfffffc。eFlash Controller (片上閃存控制器)為片上閃存與 AMBA AHB(Advanced High-performance Bus,高性能總線)的接口,這個(gè)接口能夠?qū)HB總線信號(hào)轉(zhuǎn)換為對(duì)應(yīng)的 閃存控制信號(hào),從而實(shí)現(xiàn)對(duì)閃存的讀,寫(xiě),擦操作。也正是有了這個(gè)接口,使得通過(guò)JTAG對(duì) 片上閃存在線編程成為可能。圖4給出了 CPU的JTAG接口的具體連接方法,四個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制 JTAG接口的四個(gè)輸入TMS,TCK, TDI, TRST0數(shù)據(jù)選擇器一的兩個(gè)輸入分別為片上系統(tǒng)的 輸入引腳TMS_IN和固定的低電平;數(shù)據(jù)選擇器二的兩個(gè)輸入分別為片上系統(tǒng)的輸入引腳 TCK_IN和固定的低電平;數(shù)據(jù)選擇器三的兩個(gè)輸入分別為片上系統(tǒng)的輸入引腳TDI_IN和 固定的低電平;數(shù)據(jù)選擇器四的兩個(gè)輸入分別為片上系統(tǒng)輸入引腳TRST_IN和固定的高電 平。四個(gè)數(shù)據(jù)選擇的控制信號(hào)都為JTAG_0FF。這個(gè)控制信號(hào)來(lái)自eFlash Controller中的 一個(gè)寄存器REGl,并與REGl的值保持一致。這個(gè)REGl只有讀寫(xiě)功能,不會(huì)隨系統(tǒng)的復(fù)位 而復(fù)位。當(dāng)控制信號(hào)JTAG_0FF為高電平時(shí),固定的低電平和固定的高電平分別被選中,任 何的調(diào)試控制信息都無(wú)法傳遞給TAP,也就是說(shuō)JTAG調(diào)試被完全屏蔽;當(dāng)JTAG_0FF為低電 平時(shí),來(lái)自片上系統(tǒng)的輸入引腳被選中,可以通過(guò)這四根輸入將需要的數(shù)據(jù)傳入TAP,從而 JTAG調(diào)試能夠正常的進(jìn)行。選定兩個(gè)關(guān)鍵值KEY1,KEY2分別為0x20101234和0x19876789 (關(guān)鍵值可任意選 取,注意不要選擇Oxffffffff,原因見(jiàn)前文論述),存放關(guān)鍵值的地址ADDR為OxffffOc (可 在片上閃存地址空間范圍內(nèi)任意選取一個(gè)地址,注意不要與存儲(chǔ)在片上閃存的數(shù)據(jù)相沖 突,而且按照word讀取,地址應(yīng)對(duì)齊)。為了能夠根據(jù)片上閃存某個(gè)地址的值來(lái)改變寄存器REGl的值,需要固化一段ROM 程序,并將這段ROM程序作為整個(gè)芯片的啟動(dòng)程序。ROM程序的流程如附圖5所示。首先 檢測(cè)eFlash Controller是否是空閑的(只有在空閑狀態(tài),才能通過(guò)eFlash Controller 對(duì)片上閃存發(fā)起讀操作)。非空閑則等待,空閑則從OxffffOc讀取一個(gè)32位的數(shù)據(jù),記為 VALUE。再將VALUE與0x20101234進(jìn)行比較,相等則直接跳到程序起始地址。不相等則將 eFlash Controller中的寄存器REGl置成0,即將JTAG_0FF置成低電平,并繼續(xù)將VALUE 與0x19876789進(jìn)行比較。若兩者相等,則跳到程序起始段;若兩者不相等,則跳到一段位于 ROM程序的循環(huán)指令。芯片開(kāi)始調(diào)試前,復(fù)位后從ROM程序段啟動(dòng)。從OxffffOc處讀回的32位數(shù)據(jù)為 Oxffffffff (閃存初始狀態(tài)為擦除狀態(tài)),與KEY1,KEY2都不相等,ROM程序?qū)EGl寫(xiě)0。 JTAG_0FF為低電平,JTAG能夠正常工作,并跳到一段位與ROM程序的循環(huán)指令。此時(shí)可以 通過(guò)JTAG來(lái)裝載需要調(diào)試的程序。程序裝載完成后,再將OxfTfTOc寫(xiě)成0x19876789。復(fù) 位再啟動(dòng)后,從OxffffOc處讀回來(lái)的值為0x19876789,與KEY2相等,ROM程序?qū)EGl寫(xiě)0。 JTAG_0FF為低電平,JTAG能夠正常工作,并跳到程序的起始段。此時(shí)可以通過(guò)JTAG來(lái)運(yùn)行 程序,并可重復(fù)裝載,反復(fù)調(diào)試。等到程序調(diào)試完全完成,再將OxfTfTOc寫(xiě)成0x20121234。 再次復(fù)位重啟后,從OxffffOc讀回的數(shù)據(jù)與KEYl相等,ROM程序?qū)EGl寫(xiě)1。此時(shí)JTAG_ OFF為高電平,屏蔽JTAG接口,并直接跳到程序起始地址,開(kāi)始運(yùn)行程序。此時(shí),不能再通過(guò)JTAG接口來(lái)截取或者修改程序,也不能再去寫(xiě)OxffffOc這個(gè)地址。閃存能夠在斷電后 保存OxffffOc處的數(shù)據(jù),同時(shí)REGl不會(huì)被復(fù)位,從而JTAG被屏蔽的狀態(tài)能夠永久的保存。
      權(quán)利要求
      1.一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,所述JTAG通過(guò)TAP實(shí)現(xiàn)對(duì)邊界 掃描鏈的控制,所述TAP接口包括TCK接口、TMS接口、TDI接口、TDO接口和TRST接口,其 特征在于所述TCK接口、TMS接口和TDI接口分別通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制, 數(shù)據(jù)選擇器的兩個(gè)輸入分別為正常信號(hào)和固定的低電平或高電平,再通過(guò)系統(tǒng)芯片內(nèi)的一 個(gè)位寬為一位的寄存器REGl來(lái)控制數(shù)據(jù)選擇器,當(dāng)寄存器REGl的值為一時(shí),將低電平信號(hào) 連接到TCK接口、TMS接口和TDI接口上,屏蔽JTAG接口 ;而寄存器REGl的值為零時(shí),將正 常信號(hào)連接到TCK接口、TMS接口和TDI接口上,進(jìn)入正常的調(diào)試模式;設(shè)置兩個(gè)關(guān)鍵值為KEYl和KEY2,以及選定片上閃存中存放關(guān)鍵詞的地址ADDR ;所述系統(tǒng)芯片JTAG調(diào)試控制方法包括以下步驟(1 )、啟動(dòng)程序,從零地址開(kāi)始取指,即進(jìn)入ROM段;(2)、從片上閃存的ADDR地址讀取32位數(shù)據(jù)VALUE,并將VALUE與關(guān)鍵值KEYl進(jìn)行比較如果VALUE與KEYl相等,則將REGl寫(xiě)成一,此時(shí)JTAG接口被屏蔽,并跳轉(zhuǎn)到程序的起 始地址;如果VALUE與KEYl不相等,則將REGl寫(xiě)成零,此時(shí)JTAG接口能夠正常的工作,順利進(jìn) 入調(diào)試模式;(3)繼續(xù)將VALUE與KEY2進(jìn)行比較如果VALUE與KEY2相等,則直接跳轉(zhuǎn)到程序的起始地址。
      2.如果VALUE月KEY2不相等,則跳轉(zhuǎn)到一段循環(huán)指令。
      3.如權(quán)利要求1所述的一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,其特征在 于所述TRST接口也通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制,當(dāng)寄存器REGl的值為一時(shí),將 高電平信號(hào)接到TRST接口上;當(dāng)寄存器REGl的值為零時(shí),將正常信號(hào)接到TRST接口上。
      4.如權(quán)利要求1或2所述的一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,其特征 在于所述寄存器REGl支持讀和寫(xiě)。
      5.如權(quán)利要求1或2所述的一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,其特征 在于所述兩個(gè)關(guān)鍵值KEYl和KEY2選用除了 OxfffTfTfT外的數(shù)值。
      6.如權(quán)利要求4所述的一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,其特征在 于所述兩個(gè)關(guān)鍵值KEYl和KEY2的地址與程序段的地址位于片上閃存的不同位置。
      全文摘要
      一種基于片上閃存的系統(tǒng)芯片JTAG調(diào)試控制方法,所述JTAG通過(guò)TAP實(shí)現(xiàn)對(duì)邊界掃描鏈的控制,所述TCK接口、TMS接口和TDI接口分別通過(guò)一個(gè)二選一的數(shù)據(jù)選擇器來(lái)控制,數(shù)據(jù)選擇器的兩個(gè)輸入分別為正常信號(hào)和固定的低電平或高電平,再通過(guò)系統(tǒng)芯片內(nèi)的一個(gè)位寬為一位的寄存器REG1來(lái)控制數(shù)據(jù)選擇器,當(dāng)寄存器REG1的值為一時(shí),將低電平信號(hào)連接到TCK接口、TMS接口和TDI接口上,屏蔽JTAG接口;而寄存器REG1的值為零時(shí),將正常信號(hào)連接到TCK接口、TMS接口和TDI接口上,進(jìn)入正常的調(diào)試模式;根據(jù)片上閃存的數(shù)據(jù)決定寄存器REG1的值。本發(fā)明在方便調(diào)試的同時(shí)保障數(shù)據(jù)安全、提升安全性。
      文檔編號(hào)G01R31/3185GK102073009SQ20101056170
      公開(kāi)日2011年5月25日 申請(qǐng)日期2010年11月29日 優(yōu)先權(quán)日2010年11月29日
      發(fā)明者嚴(yán)曉浪, 曾健林, 葛海通, 黃凱 申請(qǐng)人:杭州中天微系統(tǒng)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1