亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

集成電路內診斷數據的捕獲的制作方法

文檔序號:6419727閱讀:280來源:國知局
專利名稱:集成電路內診斷數據的捕獲的制作方法
技術領域
本發(fā)明涉及集成電路領域。更具體地說,本發(fā)明涉及集成電路內,諸如用于調試、性能監(jiān)測、設計及其他過程的診斷數據的捕獲。
已知提供一些帶有內建捕獲診斷數據然后輸出診斷數據的系統(tǒng)的集成電路。這樣的集成電路的示例是由英國劍橋ARM Limited(公司)生產的集成電路,它包括嵌入式跟蹤宏單元(ETM)。所述ETM系統(tǒng)用來捕獲跟蹤數據,諸如識別所執(zhí)行的程序指令、被操縱的數據值等,進入芯片跟蹤緩沖區(qū),供隨后輸出到外部診斷裝置。ETM類型系統(tǒng)的一個問題是,它們消耗數量相對大的電路資源。一旦利用所述ETM電路的設計和開發(fā)工作完成,這個診斷專用電路區(qū)域在生產集成電路過程中基本上沒有用。
還已知,在開發(fā)系統(tǒng)程序代碼內插入程序指令,以便利用UART或者其他通信資源從所述集成電路輸出診斷數據。采用這種程序驅動方法的一個缺點是,它給有關的程序造成沉重的負擔,并可能使它的運行發(fā)生畸變,使得診斷數據用處變小。因為所述裝置接口不是設計成進行直接訪問的,所以這是一個特別的問題。更糟糕的是,若通信裝置已滿載(無法接受更多數據),則所述應用程序可能停下來,數據在沒有被記錄的情況下丟失。相反,若所述程序代碼的元件由足夠低的優(yōu)先級和不影響性能的相當不頻繁的激勵構成,則可能回收的信息數量受到限制,而所述信息的定時還可能被有害地延遲。
從一個方面看,本發(fā)明提供一種集成電路,所述集成電路包括一個或多個功能電路,可用來執(zhí)行數據處理操作;診斷數據捕獲電路,可用來從總線捕獲診斷數據值字段,后者包括由所述一個或多個功能電路產生的數據字和代表與所述數據字相聯系的所述一個或多個功能電路的環(huán)境的環(huán)境字;以及診斷數據串行輸出電路,可用來使所述診斷數據字段串行化,并把所述診斷數據字段從所述集成電路輸出到外部診斷裝置。
本技術提供一種診斷數據捕獲電路,它從總線捕獲診斷數據。這是一種硬件捕獲機構,因此它本身不會給任何執(zhí)行程序代碼造成負擔。從總線捕獲的診斷數據字段包括數據字和環(huán)境字。還為捕獲所述環(huán)境字而設置診斷數據捕獲電路,使所捕獲的數據字能夠更容易解釋,并免去為提供環(huán)境通知信息而提供程序代碼或者其他機制來闡明所述診斷數據的必要性。一旦被診斷數據捕獲電路捕獲,所述診斷數據字段便通過它自己的診斷數據串行輸出電路從所述集成電路輸出,使之也不給別處造成負擔。本技術提供診斷數據輸出能力,對集成電路的其他元件帶有一種有利的低侵擾水平,而同時本身還只要求一種有利的低水平的電路系統(tǒng)開銷。
應當指出,所述診斷數據捕獲電路從其中捕獲診斷字段的總線,可以采取各種各樣的不同形式,但是在推薦的實施例中,診斷數據捕獲電路應方便地從集成電路的鏈接兩個或兩個以上功能電路的功能總線捕獲診斷數據。
在功能總線的環(huán)境下,數據字可以從功能總線的數據部分捕獲,而環(huán)境字可以從功能總線的地址部分捕獲。可以用所述功能總線的整個地址作為環(huán)境字,但是在推薦的實施例中,只用所述地址中提供足夠程度的環(huán)境信息的所需要的一部分,而同時減少需要從所述集成電路輸出的數據數量。
作為一種替代或者除了從功能總線捕獲診斷數據外,還可以采用專用的診斷總線,直接把數據從一個或多個功能電路發(fā)送到所述診斷數據捕獲電路。在這種環(huán)境下,可以在捕獲的數據字和環(huán)境字的屬性上,在一種程度上改善靈活性,因為它們不受功能總線協議的限制。
盡管診斷數據的串行輸出可以是直接的和無緩沖的,但是在本發(fā)明推薦的實施例中,提供先進先出緩沖區(qū),在串行化和輸出以前存儲所述診斷數據字段。這樣的先進先出緩沖區(qū)在一定程度上防止所述診斷數據輸出能力的溢出。這可能是這樣一種情況,所關心的診斷事件在相隔很近的時間出現,而且若無某些程度的緩沖,就可能無法同時調查這些情況。
在本發(fā)明的推薦的實施例中,診斷數據字段包括定時字,指示與所述數據字相聯系的時間值。所述時間值可以具有各種各樣不同的形式,例如,它有可能是某種周期計數形式或者實時值,但在推薦的實施例中,采用于下方法來設置所述計數值使所述計數值指示從仍舊由所述診斷數據串行輸出電路輸出的任何以前捕獲的診斷數據字段被捕獲以來的持續(xù)時間,這樣既能減少要從所述集成電路輸出的數據量,又仍舊允許足夠程度的時間分辨率。
在推薦的實施例中,所述時間值還可以用來指明是否有一個或多個診斷數據字段沒能被捕獲,例如,由于診斷數據字段溢出或者某些其他類型的捕獲失敗的結果。
可以用各種各樣不同的方法并且利用各種各樣不同的編碼來實現所述診斷數據的串行形式輸出。作為示例,所述診斷數據字段可能被拆分為較小的多字節(jié)段,然后依次輸出。但是,在推薦的實施例中,利用單一條串行數據輸出線或者單一條串行數據輸出線與時鐘信號相聯系,所述時鐘信號可以由所述集成電路本身產生或者由與所述集成電路配合使用的其他電路產生,可減少與診斷系統(tǒng)相聯系的所采用的外部引腳數的形式的系統(tǒng)開銷。輸出與時鐘信號的結合,以額外的一條信號線為代價,或者在所關心的時鐘信號線已經作為一種外部輸出存在的情況下,至少以一定程度上增加復雜性為代價,一般地可以實現較快的數據轉移速率。
本技術的一個特別推薦的特征是,對這些功能電路之一執(zhí)行的程序指令可以產生診斷數據字段。于是,可以使程序產生種籽數(seeded)/裝備儀表,它們在運行的適當時刻產生診斷數據。這在診斷數據的產生上和它的代表性上,允許有相當大的靈活性和能力。另外,硬件診斷數據捕獲電路和串行輸出電路具有使程序代碼不必對診斷數據的捕獲或者輸出負責的作用,而只由它自己產生。這有利地減少程序代碼的系統(tǒng)開銷。進一步,即使程序在產生這個數據之后″崩潰″,所述數據仍將被捕獲。
生成診斷數據的程序指令最好通過對隨后從其中捕獲數據字和環(huán)境字的總線產生總線交易來做到這一點。產生總線交易的程序指令一般存在于集成電路內,利用總線結構,并相應地,可以容易地用于這個診斷功能。
本技術的強烈推薦的特征是,所述診斷數據捕獲電路可用來捕獲與預定地址特性匹配的地址相聯系的總線交易。這樣,可以使所述診斷數據捕獲電路成為總線從設備,后者具有它自己的關聯的地址范圍,而把功能電路設置成在想要產生用于捕獲和輸出的診斷數據時利用所述地址范圍內的地址產生總線交易。
與所述診斷數據捕獲電路相聯系的地址范圍的使用,提供非常有利的特征,即,要與數據字相聯系的環(huán)境字可以從所述地址范圍內所述總線交易要送往的特定地址推算出來。于是,功能電路可能通過設置待指向特定的地址位置的總線交易,提供它的要與所述數據字段相聯系的環(huán)境信息,當所述診斷數據由程序指令產生時,這特別容易做到。
所述環(huán)境字可以利用指示在所述預定的范圍地址內使用的地址位置的索引值,有效地表示所述總線交易的地址。
本發(fā)明的推薦的實施例提供對診斷事件的可編程的靈敏度,可以以一種不然就無法由用戶調整的辦法,通過使用施加在所述診斷數據字段上的可編程的屏蔽值將其包括在所述系統(tǒng)的運行中。這個可編程的屏蔽值由所述診斷數據捕獲電路使用來把用戶已經確定為當時不關心的診斷數據屏蔽掉,或者屏蔽出那些所關心的數據。
從另一方面看,本發(fā)明提供診斷裝置,用于從集成電路接收診斷數據,所述診斷裝置包括診斷數據串行數據接收機,可用來接收代表從所述集成電路內的總線捕獲的數值的診斷字段的串行數據;和診斷數據解碼器,用于對所述診斷字段進行解碼,以便在其上識別由所述集成電路內一個或多個功能電路產生的數據字以及代表所述一個或多個功能電路的與所述數據字相聯系的環(huán)境。
從另一方面看,本發(fā)明提供一種生成代表由集成電路的一個或多個功能電路執(zhí)行的數據處理操作的診斷數據的方法,所述方法包括從總線捕獲一個值的診斷數據字段,所述診斷數據字段包括由所述一個或多個功能電路產生的數據字和代表與所述數據字相聯系的所述一個或多個功能電路的環(huán)境的環(huán)境字;使所述診斷數據字段串行化;以及從所述集成電路向外部診斷裝置輸出所述診斷數據字段。
現將參照附圖只以舉例的方式描述本發(fā)明的實施例,附圖中

圖1示意地舉例說明包括診斷數據捕獲電路的集成電路;圖2示意地舉例說明按照本發(fā)明一個實施例的集成電路,其中包括診斷數據捕獲電路,后者包括計數數據輸入端和硬件輸出端;圖3表示按照本發(fā)明實施例的裝置,用于接收由具有單一輸出導線的診斷捕獲裝置輸出的數據;圖4是按照本發(fā)明實施例的單線輸出接口的邏輯模型;以及圖5示意地舉例說明診斷數據捕獲裝置。
參照圖1,圖中示出集成電路10,它包括診斷數據捕獲電路15,可用來捕獲通過連接兩個功能電路20的系統(tǒng)總線25傳輸的診斷數據。診斷數據捕獲電路15在由數據處理系統(tǒng)處理的數據和單線輸出之間提供接口,有時稱作單線輸出(SWO)裝置。
在圖1的裝置中,所述診斷數據捕獲電路設置成訪問沿著這些功能電路之間的總線傳輸的數據。它基本上是一個無源裝置,除提供對所述數據的訪問以外,不影響所述系統(tǒng)或者以任何方式影響所述數據。
所述診斷數據捕獲裝置包括地址譯碼器、FIFO(先進先出)和串行化器。所述診斷數據捕獲裝置可用來訪問沿著所述總線的數據部分傳輸的數據字,還訪問沿著所述總線地址部分傳輸的將要寫入數據的地址。所截獲的數據字是數據寫入,因為它們是診斷目的所關心的。
訪問所述數據字,然后地址譯碼器通過在所述數據字上加上″環(huán)境數據″的選定位對其進行處理。這個環(huán)境數據是從地址數據推算的,并且事實上用來把所述數據字放入環(huán)境中。然后把長度擴展后的數據字傳送到FIFO。
在大多數實施例中,所訪問的數據字是32位字,而在推薦的實施例中,它被選擇成在其上加上5位環(huán)境數據。所述環(huán)境數據一般是地址的一部分,從地址總線上的地址數據取得。
可以以若干種方法觸發(fā)數據捕獲,包括響應寫入特定的地址的數據。一般地,在數據處理系統(tǒng)中,診斷數據寫入所述處理器地址空間的特定區(qū)域,于是,任何寫入這個特定區(qū)域的數據都將是所述診斷捕獲裝置所關心的。因此,建立所述系統(tǒng),以便使寫入所述區(qū)域的數據寫入指令都觸發(fā)所述數據捕獲裝置。做到這一點的一種方法是給所述診斷數據捕獲電路提供屏蔽電路,它可用來使用可編程的屏蔽值來選擇要捕獲的診斷數據字段。
一旦所述數據捕獲電路被觸發(fā),所述地址譯碼器動作,在所述數據字上加上環(huán)境數據。在許多實施例中,所述數據區(qū)域內的各個地址對特定的功能是特定的,于是,各個可能加到所述數據字上作為5位環(huán)境數據的地址的細節(jié),為被截獲的數據字的特別的功能提供信息。因此,在某些實施例中,所述環(huán)境字段可以是偏移量值,指示預定的地址范圍內所述地址位置。在這方面,例如,在RTOS的典型模型中,索引號0可以用于線程輸入,1用于線程輸出,2用于多路開關未決,3用于隊列未決等。所述裝置,例如,所述RTOS只把threadID(線程識別符)(TCB地址或者其他32位信息)寫入索引號0,用于指明所述指定線程被調度。于是,在一個存儲指令中,RTOS可以既傳達動作/發(fā)生的事件,又傳達所述作用/事件的環(huán)境。
所述37位數據從所述地址譯碼器輸出,然后輸出到FIFO,后者可能只是一級FIFO,但是最好包含若干級。事實上,所述FIFO使多個要發(fā)送的數據字能夠緊靠在一起,只要總體速率低于所述頻帶寬度。所述FIFO的典型深度是3,盡管根據功能電路的最大速率、芯片接收數據的時鐘速率和SWO的輸出速率,可以選擇不同的深度。
然后,串行化器用來通過單線輸出(SWO)以串行數據的形式輸出來自FIFO的數據輸出。由串行化器輸出的數據速率取決于所述實施例。有低速和高速實施例,并在下面對其進行更詳細的描述。實質上,所述高速實施例要求對串行化器的輸出計時(見圖2),于是,除單線診斷數據串行輸出(SWO)外,還有一條時鐘信號輸入線。一般所述高速實施例在約48MHz下運行,它可以支持100MHz。
所述低速實施例不要求時鐘輸入,因而可以在單一引腳接口上支持高達12MHz。
單線輸出接口裝置將串行地輸出多個所述37位數據字,然后,任何接收裝置可以使用與所述32位數據字相聯系的5位環(huán)境數據,以便將所述輸出數據多路分解成不同的流。
圖2表示用于按照本發(fā)明實施例的集成電路中的數據捕獲裝置。所述數據捕獲裝置類似于圖1舉例說明的,但是另外還包括″計數″輸入端和附加的FIFO,所述FIFO帶有用于從功能電路發(fā)送診斷數據的關聯的專用診斷總線。
所述計數輸入端可用來輸入定時字段,指示與可能附在所述37位字上的環(huán)境數據相聯系的時間值。所述計數值指示從所述系統(tǒng)總線捕獲數據字之間的時間長度,或者換句話說,在下一個字到達以前,這樣的字在所述FIFO上花費的時間長度。
一種實現方案是設置計數器,所述計數器從一段數據的捕獲啟動,并在下一段數據捕獲停止,然后重新開始。若所述捕獲計時器溢出,它會發(fā)送一段數據來影響所述SWO,這不影響頻帶寬度,因為這些額外的分組只當事實上所述分組隊列輸出暫停時才需要。
來自所述計數器的信息在串行化器中加到所述37位字上,就是說,作為與所述分組相聯系的延遲標記產生數據分組。在推薦的實施例中,這是3位寬。所述計數數據在由處理器執(zhí)行的寫指令之間提供一種時間指示,因而這是有用的附加診斷數據。它還可以提供一種特定數據字段的數據捕獲是否丟失的征兆。
圖2還表示專用診斷總線40,它在不通過系統(tǒng)總線傳送數據的情況下,提供從功能電路到診斷捕獲電路的通信。它是一個硬件實現方案,并在事實上可以提供所述特定功能電路的運行″蹤跡″。這里沒有地址譯碼,所述硬件設置直接把所述數據位寫入FIFO。它通過它自己的FIFO耦合到數據捕獲電路,即使正在從所述系統(tǒng)總線捕獲數據,這也使數據能夠加到輸出線路上。
圖3示出用于接收由具有單線輸出的診斷捕獲裝置輸出的串行數據的裝置。所述裝置包括串行數據接收機和串行數據解碼器。所述接收機可用來接收串行信號,而解碼器可用來對信號進行解碼,并從所述信號內識別由所述功能電路產生的數據字和它們的相關的環(huán)境數據。然后用所述環(huán)境數據來對數據字進行分類,并將所述單一流多路分解為多個流。
在某些實施例中,所述接收機可能是主機上的調試器,所述解碼器起按照它們的環(huán)境數據對數據字進行分類的作用,并把適當的數據轉發(fā)到所述調試器,而同時發(fā)送其他數據到定制DLL,并對其他數據進行存儲。
除用于調試或者跟蹤目的外,其他診斷數據可能利用單線輸出裝置捕獲。例如,若這個系統(tǒng)出現在汽車集成電路上,從這個引腳可以提取診斷數據,所述診斷數據提供汽車系統(tǒng)中不同的部分的狀態(tài)信息。
下面給出在本發(fā)明的實施例上附加的信息。在這方面,使用于下術語和縮寫。
術語 意義SWJ單線JTAG。這是一個模型,以此一個運行控制仿真器放入芯片中,并利用單一引腳方案(對于JTAG用4或者5個引腳)進行通信。這不僅減少引腳數,而且一般比JTAG快得多。它還提供附加的訪問和獨特ID。這個MemTAP模型的使用允許非??焖俚南螺d。
DBT/Mem 這是TAP塊,起AMBA的作用(AHB或者AHB-Lite)TAP 用于訪問系統(tǒng)總線的主設備。
AMBA 芯片內的ARM總線標準。
AHB AMBA高速接口,用于正常存儲器訪問(對比APB)。
AHB AMBA裝置,有源地響應一個地址的訪問從設備 范圍。SWO是一種AHB從設備。
AHB Lite 是指AMBA AHB的刪除一些功能的(stripped down)版本,沒有多主設備,而且沒有完全的突發(fā)方式和它的關聯的信令。
UART 異步串行(一次發(fā)送一位)裝置。SWO基于UART概念。SWO還用來代替UART作為調試跟蹤工具。
ETM 嵌入跟蹤宏單元,指芯片上跟蹤塊,它響應觸發(fā)事件并儲存指令和/或數據跟蹤信息。
下面描述按照本發(fā)明實施例的非常小的單線輸出″跟蹤″部件。這個部件與ETM差別相當大,實際上可以用ETM補充(取決于用途和HW))。SWO模型是一種應用驅動跟蹤,而ETM是處理器驅動跟蹤。其中ETM使用觸發(fā)器和范圍來控制跟蹤對象,SWO是無源的,并且只輸出由應用程序、RTOS或者系統(tǒng)HW明確地發(fā)送給它的數據。
SWO設計成由應用程序用于4個主要目的·進行′printf′調試。這意味著它們要讓應用程序(app)發(fā)送數據到某些通道,使得它們可以在主機上進行后加工。傳統(tǒng)上,使用串行通道,但是這要求應用程序(apps)擁有資源(一般如此)。它還意味著ISR要泄漏(drain)(或者HW自動緩沖)。另外,傳統(tǒng)的串行裝置慢得多的速率限制了數據速率。
·進行RTOS事件跟蹤。這意味著對RTOS進行小的修改,它把ID寫到特定位置,指明發(fā)生了什么事件。只要寫操作成本低,它可以讓寫留在展開版本(與具有單獨的調試圖像相比)。這保證固定的低侵擾,以便避免產生探針效應。傳統(tǒng)上,這是向低優(yōu)先級線程傳送,后者把它輸出串行線?;蛘甙阉D儲到環(huán)形緩沖區(qū),用于后來的Mortem分析。但是,大部分RTOS只在特殊版本中才包括它,所述線程的延遲和串行線路意味著,往往丟失或者歪曲關鍵信息。另外,線程的系統(tǒng)開銷和傳送所述信息高得多的系統(tǒng)開銷具有探針效應,它改變受試的行為。
·進行應用程序或者′總線′跟蹤。這一般意味著監(jiān)視特定的交易或者實時數據。這與printf調試的區(qū)別在于,它的解釋必須與數據本身分隔(例如,先有知識)。這還意味著,所述系統(tǒng)中的其他核心可以使用同樣的業(yè)務(諸如DSP)。
·使系統(tǒng)級HW能夠發(fā)送所收集的信息。這使系統(tǒng)設計者能夠容易地增加在所述主機的控制下饋送的小的塊信息。這可以包括爭用分析(總線使用平衡、DMA分析、PC采樣(在高速緩存較少的核心上或帶有支持核心)、事件計數、時間觸發(fā)器事件(諸如從ETM)、差錯狀態(tài)等。
在混合SWO和ETM系統(tǒng)中,ETM將能夠集中在指令流、特殊觸發(fā)事件及其他頻帶寬度不折衷的區(qū)域上。這種平衡為與引腳和門電路緊密關聯的設計者提供較好的解決方案。
所述SWO模型讓修改后的應用程序代碼原封不動,并當不使用時,關斷SWO部件。這意味著,在調試和生產使用之間的時間代價不改變。于是,它是固定侵擾(一般非常低,因為它只寫入快速存儲器)。但是,因為它可能關斷,所以不用時不消耗功率。
SWO體系結構基于三個指導原則
1.代替調試UART(RS232等)類型的編程解決方案。
2.在單一引腳、高達12Mbit/s的速度的條件下以及在2個引腳、高達100Mbit/s的速度下可以很好地工作。
3.把應用程序侵擾減到最小。
所述SWO接口作為一組32存儲器映射字″寄存器″暴露在外。每個字寄存器都可以用一個對應用程序有意義的32位值寫入。寄存器的索引號(0-31)是消息報文的一部分。就是說,實際上沒有32寄存器,而是一個37位寬的寄存器。這個37位寄存器包含由應用程序寫入的所述32位數據和由所述寄存器地址選定的5位索引號(所述地址的低5位)。這意味著,一個應用程序只要通過位置選定就可以給所述數據增加意義。
在一個典型的RTOS模型中,例如,索引號0可以用于線程輸入,1用于線程輸出,2用于多路開關(mutex)未決,3用于隊列未決等。這意味著,例如,所述RTOS只把進程ID(TCB地址或者其他32位信息)寫入索引號0,來指明所述指定線程已被調入。于是,在一個存儲指令中,所述RTOS可以傳達發(fā)生所得動作/事件和所述動作/事件的環(huán)境。
索引號可以在帶寬中指定。于是,0-17可以給RTOS(18個索引號),18和19用于″printf″登錄,20和21用于功能入口/出口(編譯器產生或者手產生),22和23用于ISR入口/出口等。因為主機還把所述37位看作″地址″(5位)和″數據″(32位),所以可以把它多路分解成不同的流。于是,在所述主機中,調試器可以處理全部地址0-17作為RTOS事件,18和19用于printf登錄等。這種多路分解只不過是向所述調試器提供的配置判決和用在所述靶上的習慣。這使一些消息流能夠進到定做DLL、一些存儲到文件中、而一些由調試器當場處理。任何組合都是允許的。
與數據用的寄存器一起,SWO部件提供密鑰鎖定控制寄存器、狀態(tài)寄存器和ID。還有屏蔽使能寄存器,它允許對特定地址(0-31)的選擇性禁止。
SWO定義為具有兩個基本形式低速和高速。低速部件用來在單引腳接口上維持高達12Mbit/s的速度。高速部件用來在雙線(時鐘外加數據)上維持高達100Mbit/s的速度。高速部件仍舊稱為″單線″,因為它可以利用單一數據引腳完成。應該指出,所述高速部件預計一般運行在約48MHz和較低的速度下,與USB2捕獲裝置一起很好工作。應當指出,可以使用更多引腳,但是意圖是保持配置數目非常小,以免使捕獲裝置的可用性造成問題。
根據協議,SWO部件把整個問題分成4層通信1.導線協議。這定義為42位協議,用于正常單線模型(低速),但是利用Manchester編碼的雙時鐘(于是10MHz位速率使用20MHz時鐘速率)。當共享引腳資源時,它可以是包裹的ETM V.3分組。對于高速,它將是42位協議,帶有單獨的時鐘源(可以是裝入所述芯片或者在所述芯片之外的時鐘,是為SWO或者不是為SWO設計的)。
2.靶協議。這定義為40位協議,包含3位數據頭、5位地址和32位數據塊。所述3-位數據頭用于延遲信息、超限狀態(tài)和擴展格式化。
3.數據協議。所述數據協議是主機和靶應用程序之間的合同。就是說,對所述32位數據沒有確定的意義。其意義是由發(fā)送者指定的,由主機SW解碼,后者配置成能夠理解它。這使自由格式使用能夠跨越范圍很寬的應用程序和系統(tǒng)。
4.捕獲裝置協議。這是所述靶協議的擴展部分,并使所述捕獲裝置能夠提供附加的信息。具體地說,所述捕獲裝置為分組啟動提供時間量度(inlmicro第二粒度)。時間量度使相對和絕對時間量度能夠用合理的準確性完成。所述靶協議中的內部延遲是針對分組″串″(當分組從后端到后端流出時)的,然而所述捕獲裝置時間是固定的量度(和因為在新的分組或者分組串開始時測量,允許修正)。
單線低速HW接口設計成使由低成本裝置實現波特率自動設定成為可能。通過保持在或者低于12Mbit/s和利用Manchester編碼(1=高-低,0=低-高),就容易使所述裝置進行波特率自動設定,并適合于與USB1.1一起工作。另外,在24MHz下或更低頻率下,對所述芯片非常很小的應力都會驅動所述信號或者電路板設計者布置線跡。這有助于保證這個調試部件可以在現場要求很小資源的情況下使用。事實上,在推薦的實施例中,所述單線將用芯片上的測試引腳進行多路切換(在復位時受控),因為沒有外部HW干擾(嘗試與連接到例如,LED的GPIO共享是一般都如此)。這意味著所述測試引腳連接器也可以用于SWO。
對于高速使用,將使用單獨的時鐘引腳(于是單一數據線加上時鐘)。這個時鐘將用于所述速率,于是沒有波特率自動設定的必要性(一個開始位和奇偶位仍將用來識別一個分組)。應當指出,所述時鐘可以是芯片中或者芯片外的任何時鐘信號。還應當指出,速度較高的SWJ可以使用同樣時鐘,允許非??焖俚膯尉€調試控制。這意味著3個引腳可以用于較大裝置中高速的SWJ+SWO。帶有MemTAP的高速SWJ能夠以比今天的4-6線JTAG更快的速度運行。
盡管持續(xù)12Mbit/s的速率對大部分應用是足夠的,但是突發(fā)速率可能需要更高。所述SWO部件使用FIFO來使較高突發(fā)速率成為可能。系統(tǒng)設計者可以選擇FIFO的深度(1或更大)。FIFO使應用程序能夠發(fā)送多個緊靠在一起的數據字,只要總體速率低于頻帶寬度即可。這例如允許將3個環(huán)境字轉儲,為稀有事件的登錄作好準備。3的FIFO深度可能是最優(yōu)的。
應當指出,所述應用程序仍舊需要知道,對于特別的處理器最大速率將意味著什么。這個將受FIFO深度、芯片的時鐘速率和SWO速率影響。因為SWO不記錄發(fā)生超時(數據丟失),這使它能夠容易地針對特定應用程序和芯片組合調諧。
用于printf調試的這個傳統(tǒng)的模型在應用程序的關鍵地點插入打印語句。這允許在不停止處理器的情況下,進行非常應用程序中心的信息轉儲。這個技術由于4個原因得到廣泛應用1.在調試器中在每一點上停止是很費時的,當你不知道你在尋找什么時,它是非常費時的。所述printf模型使你能夠顯示重要的數據并尋找問題的征兆。Printf調試與運行-停止調試配合使用,因為一旦問題區(qū)域向下收窄,人們便可以使用調試器來單步通過所述問題區(qū)域。
2.代碼流程分析。所述登錄可以用來觀察運行順序。對于基于SW的中斷,這可能是非常有用的,因為運行順序在大部分情況下不是確定的。
3.數據登錄。在運行的同時轉儲數值的能力,允許在所述事實之后進行分析。若這是利用斷點完成的,則不僅費時,而且很可能改變行為,因為停止會影響外部系統(tǒng)。典型用法是把實際的數據與預期的數據比較(產生的、以前的應用程序等)和用于調諧。
4.稀有事件監(jiān)測。所述printf模型往往用于這樣的系統(tǒng),其中故障出現非常稀少(例如,運行2個星期之后)。這可以用來在所述點處檢測出失效的環(huán)境下捕獲盡可能多信息。
對于傳統(tǒng)的printf調試,問題是它涉及發(fā)送字節(jié)流,往往帶有格式化成為該字節(jié)流的數據,跨越緩慢的通道。另外,隨后往往難以管理所述結果。利用字符串有以下問題·字符串越長,發(fā)送占用的時間就越長。這意味著字符串要簡潔,這會影響閱讀所述結果的能力。
·字符串要存儲在靶存儲器,于是要占用空間。
·字符串往往需要具有格式化為所述字符串的數據(本地信息)。這不僅需要時間,而且意味著緩沖區(qū)管理(直至輸出格式化的字符串為止)。
傳統(tǒng)方法的替代方法是不利用字符串,而是發(fā)送原始數據。問題變成將其轉換為有用的信息非常困難,并產生如何捕獲數據的問題。
按照本發(fā)明實施例的SWO以一種有效的和容易使用的方式支持強大的printf調試類型。所述模型基于兩個部分·字符串表模型。這意味著用戶建立一個文件,帶有每一個他們想要使用的字符串與數字和枚舉名稱之間的映射。例如0x10DBGCHANGEVALVE閥門位置已經變?yōu)椋0x11DBG MOTOR SENSOR電動機傳感器讀數%u速度,%u溫度,%u電流在上述兩行中,所述文件已經提供足夠的信息,允許每一條printf登錄以32位發(fā)送。所述32位值將″拆分″成8位索引號進入所述表(0x10和0x11將是在8位位置上)和24位數據值。在第一個字符串中,24位值用于%d。在第二個示例中,24位值被分成3個8位量,并用于%u控制。字符串還可以使用%c和定點值。所述文件由通用程序使用,它建立C/C++頭文件,后者連同某些宏一起定義每一個枚舉,來檢拾所述數據。這允許在程序中使用非常簡單的行DBGSTR1(DBGCHANGEVALVE,valve_position(閥門-位置));所述宏簡單地寫下枚舉移動24位(一個由編譯器計算的常數和所提供的價值或運算的結果。這使用非常很小處理器系統(tǒng)開銷。
·調試器解釋通過查閱所述字符串表中的8位索引號得來的數值,然后將它們呈現在登錄窗和/或文件中。登錄窗口允許通過枚舉和排序過濾。登錄窗口和文件都還記錄時間戳(從所述捕獲裝置)。這允許進行事件之間的相對時間測量。
過去人們已經嘗試在這些相同的應用程序中使用DCC。
但是,這樣做有3個主要問題·它在性能上是非常不確定的。它只是漏得像JTAG仿真器和SW選擇的那樣快。當運行基于主機的仿真器時,這是非常不可預測的。這意味著所述應用程序或者丟失了數據(隨后沒有這個的記錄),或者等待(阻塞所述應用程序)。這可以在某種程度上通過讓線程來完成這個運行(于是只有所述線程被阻塞)和/或使用空中斷來克服。兩個解決方案仍然非常需要侵擾位。
·因為它需要CP14接口并且因為上面定義的所述單字問題,它可以合理地不在線寫入。這意味著所述應用程序要調出例程來完成這個需要的動作,這使系統(tǒng)開銷大大增加。
·沒有(資料)談及工具支持((DCC通道觀看程序是對非阻塞支持的唯一的實在的選項)。
因此,DCC大致等效于利用UART,但是帶有確定性較低的性能。另外,最大DCC速率受所用的仿真器和與其一起使用的SW的嚴重影響。
所述捕獲裝置進行時間測量。確定新的分組的第一位輸出的時間允許要做的測量。所述捕獲裝置剛好在此以前發(fā)送一個分組(給所述主機),它指明這個分組以前延遲了多長時間(從所述最后一次的分組)。一旦一個分組串到達(一個分組串意味著下一個分組的起始位剛好在前一個分組的停止之后-這一般是從FIFO轉儲),使用所述分組中的所述延遲標記。所述延遲值指明當新的一個到達時,以前的一個在所述FIFO中大致停留多長時間。所述延遲是時間的2次方指數(0=0-7,1=8-15,2=16-31等),于是可以進行標定,以便提供合理的測量。
另外,可以把標記從ETM傳送到SWO,以便允許進行相關分析??梢允惯@與帶有用戶設置的跟蹤事件相關(于是在跟蹤塊開始時寫入數值,來取得時間相關,然后給后來的全部輸出打上戳)。于是,這允許存儲周期對時間的關系。這使用中等分辨率時間(1微秒)耦合到ETM,這將允許較好地理解所述應用程序環(huán)境中的跟蹤。這將變得更真實,因為ETM失去它的提供時間戳(時間不關聯的周期以外,并可能在任何時間改變它們的意義)的能力。
所述時間戳允許進行刺激/響應的測量、應用程序中的點到點、對SW響應的HW事件(諸如ISR)、ISR定時、中斷潛伏期和代碼評價。正常的時間測量工作通過讓捕獲裝置插入發(fā)回主機的分組作為捕獲計時器溢出。這允許主機得到絕對時間。因為只使用這些額外的分組,當沒有分組串時,沒有頻帶寬度代價(因為捕獲到主機通信鏈路的死時間)。
下面簡要描述按照本發(fā)明實施例的四種類型的裝置1.用于低速SWO的低成本直接到USB的并行化器。這個裝置不帶有存儲器,而是使用EPLD和USB裝置來把所述分組原樣發(fā)送回去(時間戳用的除外)。這個裝置只需要在所述靶上(SWO和接地)兩個連接器。它特別適合于微控制器。
2.用于高速SWO的高速捕獲裝置。這使用附加的單獨時鐘引腳來采集高達100MHz(等)的數據。它或者使用速度較高的通信通道到所述主機,諸如USB或者100 Base 10,或者需要時使用板上緩沖區(qū)。
3.ETM跟蹤收集塊。它原樣收集高速SWO信號或者分組內ETM v3數據流。
4.智能仿真器,諸如RVI可以用來利用一條引腳來采集低速SWO。這允許收集到本地的存儲器,然后通過RV-消息裝入主機。RVI塊可能需要預加工所述數據(除時間戳以外)。
如在圖4中可以看到的,邏輯設計是核心在內部存儲器中看到32位字。這些應該是0或者低等待狀態(tài)(有效的0帶有寫緩沖區(qū))。這允許應用程序用32位數據字寫到映射區(qū)域內的偏移量0-31。所述裝置將記錄′求余′地址(作為((基地址)>>2)&0x1F)加上所述32位字。所述額外的映射寄存器用于控制和狀態(tài)。
所述SWO部件在上電時被禁止,以避免浪費功率(但是它仍舊可以寫入,它們只是不起作用了)。應當指出,對于被動使用(無運行控制塊),所述應用程序在引導代碼或者根據某些檢測機構(諸如strap引腳或者引導EEPROM/閃存設置)使之啟動。這意味著所述SWO或者由運行控制仿真器啟動(通過核心或者MemTAP),或者由應用程序啟動它本身。
圖5示意地舉例說明可以連接到所述集成電路的診斷數據捕獲裝置。其外部形式看來像圓柱體,一端帶有插入PCB連接器的電纜,而另一端帶有計算機連接,諸如USB插塞。在捕獲線路50內,并行化器從集成電路接收串行診斷數據流。分組包裹器從所述并行化器52取出字節(jié)流,添加它自己的時鐘,當某些周期沒有數據時,還發(fā)送出心博。它還將發(fā)送分組以便表示它是否溢出(與所述通信能夠排出數據的速度相比,數據到達較快)。應當指出,在推薦的實現方案中,心博無論如何總是每個固定周期都發(fā)送的。當長數據串到達(用所述心博對所述分組時間再設置基線)時,這保證沒有歪曲的超時。通信裝置56(USB)從所述分組包裹器54取出診斷數據,將其發(fā)送到通用計算機(例如,PC),以便進一步分析。
權利要求
1.一種集成電路,所述集成電路包括一個或多個功能電路,可用來執(zhí)行數據處理操作;診斷數據捕獲電路,可用來從總線捕獲診斷數據字段值,所述診斷數據字段值包括由所述一個或多個功能電路產生的數據字和代表所述一個或多個功能電路的與所述數據字相關聯的環(huán)境的環(huán)境字;和診斷數據串行輸出電路,可用來將所述診斷數據字段串行化并把所述診斷數據字段從所述集成電路輸出到外部診斷裝置。
2.如權利要求1所述的集成電路,其中包括多個功能電路,所述總線是使所述多個功能電路互聯的功能總線。
3.如權利要求2所述的集成電路,其中所述功能總線包括數據部分和地址部分,所述數據字是從所述數據部分捕獲的,而所述環(huán)境字是從所述地址部分捕獲的。
4.如權利要求3所述的集成電路,其中所述環(huán)境字是所述總線的所述地址部分上地址的一部分。
5.如上述權利要求中任何一項所述的集成電路,其中所述總線是專用診斷總線,它把關于所述數據字和所述環(huán)境字的信號從至少一個功能電路傳送到所述診斷數據捕獲電路。
6.如權利要求3、4和5中任何一個所述的集成電路,其中包括多條總線,所述多條總線包括作為專用診斷總線的至少一條總線,所述專用診斷總線把關于所述數據字和所述環(huán)境字的信號從至少一個功能電路傳送到所述診斷數據捕獲電路。
7.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據捕獲電路包括先進先出緩沖區(qū),所述診斷數據字段在被所述診斷數據串行輸出電路串行化以便輸出以前被存儲在所述先進先出緩沖區(qū)中。
8.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據字段還包括定時字,所述定時字表示與所述診斷數據字相關聯的時間值。
9.如權利要求8所述的集成電路,其中所述時間值是計數值,表示從任何以前捕獲的仍舊被所述診斷數據串行輸出電路輸出的診斷數據字段的捕獲以來,所經過的持續(xù)時間。
10.如權利要求9所述的集成電路,其中所述時間值還用來指明是否有一個或多個診斷數據字段沒有被所述診斷數據捕獲電路捕獲。
11.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據串行輸出電路在單一診斷數據串行輸出信號線上輸出所述診斷字。
12.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據串行輸出電路在單一診斷數據串行輸出信號線上與時鐘信號線上時鐘信號相關地輸出所述診斷字。
13.如上述權利要求中任何一項所述的集成電路,其中在至少一個所述功能電路上執(zhí)行的程序指令產生所述診斷數據字段。
14.如權利要求13所述的集成電路,其中所述程序指令對在其上捕獲所述數據字和所述環(huán)境字的所述總線產生總線交易。
15.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據捕獲電路可用來捕獲所述總線上、與和預定地址特性匹配的地址相關聯的總線交易。
16.如權利要求15所述的集成電路,其中所述預定的特性是所述地址落在預定的地址范圍內。
17.如權利要求16所述的集成電路,其中所述環(huán)境字是索引值,所述索引值指示所述預定的地址范圍內所述地址的位置。
18.如上述權利要求中任何一項所述的集成電路,其中所述診斷數據捕獲電路包括屏蔽電路,可用來利用可編程的屏蔽值來選擇要捕獲的診斷數據字段。
19.一種用于從集成電路接收診斷數據的診斷裝置,所述診斷裝置包括診斷數據串行數據接收機,可用來接收串行數據,所述串行數據代表從所述集成電路內的總線捕獲的診斷字段值;和診斷數據解碼器,可用來對所述診斷字段解碼,以便識別其中的由所述集成電路內一個或多個功能電路產生的數據字和代表所述一個或多個功能電路與所述數據字相關聯的環(huán)境的環(huán)境字。
20.如權利要求19所述的診斷裝置,其中所述總線是連接多個功能電路的功能總線,所述功能總線包括數據部分和地址部分,所述數據字是從所述數據部分捕獲的,而所述環(huán)境字是從所述地址部分捕獲的。
21.如權利要求20所述的診斷裝置,其中所述環(huán)境字是所述總線的所述地址部分上的地址的一部分。
22.如權利要求19、20和21中任何一個所述的診斷裝置,其中所述總線是傳送關于所述數據字和所述環(huán)境字的信號的專用診斷總線。
23.如權利要求20、21和22中任何一個所述的診斷裝置,其中從多條總線捕獲診斷數據字段,所述多條總線中至少一條總線是傳送關于所述數據字和所述環(huán)境字的信號的專用診斷總線。
24.如權利要求19至23中任何一個所述的診斷裝置,其中所述診斷數據字段還包括表示與所述診斷數據字相關聯的時間值的定時字。
25.如權利要求24所述的診斷裝置,其中所述時間值是計數值,指示從任何一個以前捕獲的仍舊從所述集成電路輸出的診斷數據字段的捕獲以來所經過的持續(xù)時間。
26.如權利要求25所述的診斷裝置,其中所述時間值還用來指明,在所述集成電路內是否有一個或多個診斷數據字段沒有被捕獲。
27.如權利要求19至26中任何一個所述的診斷裝置,其中所述診斷數據串行數據接收機在單一診斷數據串行輸入信號線上接收所述診斷字。
28.如權利要求19至27中任何一個所述的診斷裝置,其中所述診斷數據串行數據接收機在單一診斷數據串行輸出信號線上,與時鐘信號線上的時鐘信號有關地接收所述診斷字。
29.如權利要求19至28中任何一個所述的診斷裝置,其中所述診斷數據字是響應在所述集成電路的至少一個功能電路上執(zhí)行的程序指令而產生的。
30.如權利要求29所述的診斷裝置,其中所述程序指令對在其上捕獲所述數據字和所述環(huán)境字的所述總線產生總線交易。
31.如權利要求19至30中任何一個所述的診斷裝置,其中診斷數據字段對應于所述總線上與預定地址特性匹配的地址相關聯的總線交易。
32.如權利要求31所述的診斷裝置,其中所述預定的特性是所述地址落在預定的地址范圍內。
33.如權利要求32所述的診斷裝置,其中所述環(huán)境字是索引值,指示所述預定的地址范圍內所述地址的位置。
34.如權利要求19至33中任何一個所述的診斷裝置,其中為了由可編程的屏蔽值捕獲而選定所述診斷數據字段。
35.一種產生診斷數據的方法,所述診斷數據代表由集成電路的一個或多個功能電路執(zhí)行的一個或多個數據處理操作,所述方法包括從總線捕獲診斷數據字段值,所述診斷數據字段值包括由所述一個或多個功能電路產生的數據字和代表所述一個或多個功能電路與所述數據字相關聯的環(huán)境的環(huán)境字;將所述診斷數據字段串行化;以及從所述集成電路向外部診斷裝置輸出所述診斷數據字段。
36.如權利要求35所述的方法,其中所述集成電路包括多個功能電路,所述總線是將所述多個功能電路互聯的功能總線。
37.如權利要求36所述的方法,其中所述功能總線包括數據部分和地址部分,所述數據字是從所述數據部分捕獲的,而所述環(huán)境字是從所述地址部分捕獲的。
38.如權利要求37所述的方法,其中所述環(huán)境字是所述總線的所述地址部分上地址的一部分。
39.如權利要求35至38中任何一個所述的方法,其中所述總線是從至少一個功能電路向所述診斷數據捕獲電路傳送關于所述數據字和所述環(huán)境字的信號的專用診斷總線。
40.如權利要求37至39中任何一個所述的方法,其中所述集成電路包括多條總線,所述多條總線包括作為專用診斷總線的至少一條總線,所述專用診斷總線從至少一個功能電路向所述診斷數據捕獲電路傳送關于所述數據字和所述環(huán)境字的信號。
41.如權利要求35至40中任何一個所述的方法,其中包括在將所述診斷數據字段串行化以前,在先進先出緩沖區(qū)中緩沖診斷數據字段。
42.如權利要求35至41中任何一個所述的方法,其中所述診斷數據字段還包括表示與所述診斷數據字相關聯的時間值的定時字。
43.如權利要求42所述的方法,其中所述時間值是計數值,指示從任何一個以前捕獲的仍舊被輸出的診斷數據字段的捕獲以來的持續(xù)時間。
44.如權利要求43所述的方法,其中所述時間值還用來指明是否有一個或多個診斷數據字段沒有被所述診斷數據捕獲電路捕獲。
45.如權利要求35至44中任何一個所述的方法,其中在單一診斷數據串行輸出信號線上輸出所述診斷數據字段。
46.如權利要求35至45中任何一個所述的方法,其中在單一診斷數據串行輸出信號線上、與時鐘信號線上的時鐘信號相關聯地輸出所述診斷數據字段。
47.如權利要求35至46中任何一個所述的方法,其中在至少一個所述功能電路上執(zhí)行的程序指令產生所述診斷數據字段。
48.如權利要求47所述的方法,其中所述程序指令對在其上捕獲所述數據字和所述環(huán)境字的所述總線產生總線交易。
49.如權利要求35至48中任何一個所述的方法,其中捕獲所述總線上與和預定的地址特性匹配的地址相關聯的總線交易。
50.如權利要求49所述的方法,其中所述預定的特性是所述地址落在預定的地址范圍內。
51.如權利要求50所述的方法,其中所述環(huán)境字是索引值,所述索引值指示所述預定的地址范圍內所述地址的位置。
52.如權利要求35至51中任何一個所述的方法,其中可編程的屏蔽值用來選擇要捕獲的診斷數據字段。
全文摘要
一種集成電路裝備有采取診斷數據捕獲電路形式的診斷數據捕獲和輸出系統(tǒng),所述診斷數據捕獲和輸出系統(tǒng)從總線捕獲數據字和環(huán)境字。所述總線可以是連接集成電路內功能電路的功能總線或者是專用總線,直接把一個或多個功能電路鏈接到診斷數據捕獲電路。捕獲的診斷數據在先進先出緩沖區(qū)內緩沖,然后串行化以便輸出。所述診斷數據字段還包括時間值,指示所關心的診斷數據字段被捕獲的時間和是否有任何診斷數據字段沒有被捕獲。
文檔編號G06F11/36GK1764903SQ03826316
公開日2006年4月26日 申請日期2003年9月17日 優(yōu)先權日2003年4月17日
發(fā)明者P·基梅爾曼, I·費爾德 申請人:Arm有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1