<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 解析基于SoC的系統設計與調試

解析基于SoC的系統設計與調試

作者: 時(shí)間:2012-10-24 來(lái)源:網(wǎng)絡(luò ) 收藏

 復雜電子系統從來(lái)就不是一項簡(jiǎn)單的工作,但至少是可以實(shí)現的,您要找到問(wèn)題的所在。采用您最相信的“示波器”,通過(guò)模擬電路到數字轉換,您可以追溯到問(wèn)題的源頭。然后,編寫(xiě)測試小程序,檢查驅動(dòng)和外設,增加一些邏輯探針,再回到外設控制器和CPU總線(xiàn)上,從而最終解決問(wèn)題。當然,這需要利用別人的一些代碼。

本文引用地址:http://dyxdggzs.com/article/185620.htm

  而芯片系統()集成從根本上改變了這一切。今天,微處理器、總線(xiàn)、外設控制器以及大部分存儲器和模擬電路都被包封在一個(gè)封裝中。它可以是ASSP、高級微控制器、FPGA,或者您自己設計的ASIC。不論是什么,事實(shí)上是,除非芯片設計團隊愿意幫助您,否則,您不可能深入地了解芯片內部。

  在嵌入式CPU中硬件,為您提供斷點(diǎn)和準實(shí)時(shí)跟蹤等傳統功能,從而幫助您完成調試工作。但是,對于他們自己,調試內核也只是給出了您系統的CPU外觀(guān)視圖。如果不能針對系統總體狀態(tài)來(lái)更廣泛的定義某一事件,那么,當事件發(fā)生后,您可能需要編寫(xiě)診斷短代碼,使系統暫時(shí)停止工作,將相應的數據寫(xiě)回CPU。這一過(guò)程最好的情況是僅僅耗費了您的時(shí)間,而最差的情況是,耗費了時(shí)間卻不一定能解決問(wèn)題,效率非常低。

  硅片知識產(chǎn)權(IP)供應商提供越來(lái)越精細的儀表調試手段,從而解決了這一難題。但是,當今的產(chǎn)品是個(gè)性化的,而不是標準化的。人員需要在芯片設計早期階段獨立作出選擇,而另一公司的其他團隊則根據產(chǎn)品能否及時(shí)面市、管芯面積等來(lái)確定自己的目標,并不關(guān)心能否方便的進(jìn)行系統調試。而芯片設計人員、軟件開(kāi)發(fā)人員和人員等參與者還是有一個(gè)共同點(diǎn)——互相協(xié)作,在系統級找到問(wèn)題所在。

 從一開(kāi)始就做好規劃

  實(shí)際上早已決定了您是否能夠成功的找到系統中的問(wèn)題——兩年前,在您目前正在使用的SoC的開(kāi)發(fā)階段。Brad Quinton是泰克公司嵌入式驗證的首席規劃師,他認為在芯片設計早期階段進(jìn)行規劃非常關(guān)鍵,不僅僅是能夠充分探查芯片,而且還涉及到采用什么樣的調試硬件。然而,這并不常見(jiàn)。

  芯片設計團隊的確在測試結構中開(kāi)展了前端工作,但卻是出于其他原因。芯片中置入了測試設計和內置自測試硬件來(lái)支持IC測試。但是,這些資源并不是用于調試,一般只提供很少的診斷信息。芯片設計人員會(huì )專(zhuān)門(mén)針對硅片開(kāi)發(fā)團隊而內置工具,但是,這些工具可能只有內部文檔,硅片一旦發(fā)布后,就會(huì )禁用這些工具。高速串行端口上會(huì )有邊界掃描,甚至是非常復雜的儀表功能,必須在系統中對其進(jìn)行調整。但是,這些手段是為了在電路板級建立并驗證連接能力,而不是用于系統調試。

  Quinton質(zhì)疑,雖然這些結構非常有用,但是芯片設計人員會(huì )有更多的問(wèn)題。Quinton認為,“從系統級進(jìn)行考慮。關(guān)鍵接口、高級狀態(tài)機在哪里?通過(guò)掌握哪些信息您能夠知道哪一子系統正在工作?”

  這些思考導致某些IP供應商開(kāi)發(fā)了一類(lèi)新模塊:在SoC中設計實(shí)現儀表和控制器,不僅供設計芯片的IC團隊使用,而且還有使用它的團隊,如圖1所示。

  1.jpg

  圖1 片內調試電路本身會(huì )成為實(shí)際的設計。

  從不同的方向開(kāi)始工作,兩類(lèi)供應商驗證了這一發(fā)展趨勢。ARM擴展了其CPU內核調試內核CoreSight,涵蓋了多核SoC的大部分工作,而現在是泰克一部分的Quinton Veridae從儀表模塊開(kāi)始,集中開(kāi)發(fā)觸發(fā)器/蹤跡控制器,包括了CPU調試內核。這兩種方法對于系統調試人員都非常寶貴。這都為在SoC基礎上擴展可探查性提供了重要的理念。

  數據源

  雖然您想立即開(kāi)始在系統結構圖中加入各種各樣的數據采集節點(diǎn),而Quinton首先提出了一些基本問(wèn)題。誰(shuí)會(huì )使用調試功能:應用編程人員、模擬設計人員,還是機械工程師?他們會(huì )在哪一抽象等級上來(lái)定義事件;功能調用、信噪比、扭矩讀數?這些用戶(hù)會(huì )怎樣做:確定他們的代碼熱點(diǎn)、找到瞬變噪聲,或者知道驅動(dòng)桿為什么失效?只有您理解了問(wèn)題所在,才能夠找到解決問(wèn)題的數據。

  Quinton認為,現在的技巧是確定在哪里收集數據。很明顯,首先是在源頭采集所有數據:A/D轉換器(ADC)輸出、狀態(tài)寄存器、網(wǎng)絡(luò )接口等。當然,您希望盡可能獲得接近源頭的一些信息,例如,受控物理器件的狀態(tài)等。

  但是,在其他情況下,事先考慮好在哪里采集數據可以減少測量開(kāi)銷(xiāo),以及后分析所需要的數據量。Quinton建議,“找到關(guān)鍵地方來(lái)觀(guān)察系統。在一點(diǎn)上所通過(guò)的系統狀態(tài)量會(huì )讓人感到驚訝:例如,CPU與系統總線(xiàn)的接口。”

  在哪里對數據進(jìn)行采樣也取決于用戶(hù)所希望的抽象級。例如,可能是通過(guò)PCI Express (PCIe)總線(xiàn)的系統交換信息等。探查串化器/解串器(SERDES)和PCIe控制器,使您能夠獲得底層協(xié)議層工作的詳細信息,這對于總線(xiàn)接口調試非常重要。但是,如果您希望總線(xiàn)接口能夠正常工作,觀(guān)察信息流,那么,您最好監視主存儲器中的緩沖,而忽略總線(xiàn)控制器。
問(wèn)題的相對性

  一旦找到了您需要的數據,確定了要在系統中的哪些地方來(lái)提取這些數據,那么,您需要收集數據,知道數據與時(shí)間的相關(guān)性,找到觸發(fā)模式,采集您希望保存的數據,從系統中提取出這些數據,送入分析工具中。在分立系統中,這一過(guò)程相對簡(jiǎn)單:所有工作都可以回到邏輯分析儀中完成,分析儀提供統一時(shí)間基礎。在基于SoC的系統中,您可能希望把所有數據送回SoC的中心模塊中,如圖2所示。好消息是,泰克和ARM的IP簡(jiǎn)化了這一過(guò)程。

  2.jpg

  圖2 完整的片內調試系統結合了傳統的CPU內核調試和數據采集站以及信息路由,提供將數據從芯片中輸出的方法。

  但是,使用IP帶來(lái)了新問(wèn)題。中心模塊和電路板另一側芯片之間的延時(shí)會(huì )有十幾個(gè)時(shí)鐘周期。即使在芯片內部,也會(huì )有數十個(gè)時(shí)鐘域,當您跨過(guò)時(shí)鐘域邊界時(shí),延時(shí)會(huì )增加很多CPU周期。您怎樣知道兩路數據是同時(shí)的呢?

  如果您要開(kāi)發(fā)自己的調試工具,那么,這會(huì )很難。您可以估算數據采集模塊和中心控制器之間的傳播延時(shí),然后,對數據流進(jìn)行后處理,使其對齊。但是,這一方法難以解決時(shí)鐘域交叉的非確定性延時(shí)問(wèn)題。您可以分配一路主時(shí)鐘,使用它對您采集的數據進(jìn)行時(shí)間戳處理,但是,這需要很大的電路開(kāi)銷(xiāo)。泰克等提供的商用解決方案同時(shí)使用了硬核IP和軟件算法,在底層自動(dòng)完成所有這些工作。通過(guò)這些算法,可以在一個(gè)與時(shí)間相關(guān)的視圖中看到SoC不同時(shí)鐘域和不同物理位置上的事件,通常會(huì )發(fā)現意外的系統行為。

  即使是自動(dòng)完成,仍然會(huì )有變化。如果把在系統中不同部分同時(shí)發(fā)生的小事件作為觸發(fā)器,只定義這類(lèi)事件——例如,ADC輸出等于0,而一個(gè)CPU內核進(jìn)入某一中斷服務(wù)例程,那么會(huì )出現什么情況?如果事件不僅僅涉及到不同的地方,而且還有不同的抽象級——例如,串行端口的接收眼圖閉上后,出現了堆棧上溢,又會(huì )怎樣呢?Quinton把這類(lèi)跨域分配事件觸發(fā)描述為系統觸發(fā)的“圣杯”。正如這一隱喻所示,很難找到合適的解決方案。但是,采集了足夠的數據,經(jīng)過(guò)認真思考,構建能夠采集這類(lèi)復雜事件的本地觸發(fā)器,通常能夠實(shí)現這些解決方案。

  從芯片到系統

  我們詳細討論了芯片級調試功能,它比簡(jiǎn)單的CPU調試內核有很大的進(jìn)步。對于開(kāi)發(fā)自己的SoC的系統設計人員,這些數據非常有用。但是,其他人會(huì )怎樣,誰(shuí)會(huì )使用他人的芯片設計?這里的很多理念仍然能發(fā)揮作用。

  其中最首要的是重視提前做好規劃:確定用戶(hù)及其使用環(huán)境,制定測試策略,回答這些用戶(hù)可能提出的問(wèn)題,規劃數據采集來(lái)支持這一策略。最大的不同是,芯片設計人員會(huì )提出這些問(wèn)題,然后,在他們的SoC中開(kāi)發(fā)結構。系統設計人員也會(huì )提出問(wèn)題,然后,通過(guò)SoC供應商所提供的工具以及他們的支持來(lái)解答問(wèn)題。

  相應的,系統設計團隊至少會(huì )向他們的SoC供應商提出三類(lèi)很難的問(wèn)題。第一,芯片供應商會(huì )提供調試工作臺——例如,Tektronix或者ARM主軟件包,來(lái)控制SoC的調試硬件嗎?主軟件包能夠很好的適應您現有的系統調試環(huán)境嗎?

  第二,硬件實(shí)際接觸SoC中的哪一點(diǎn)?您只獲得了一個(gè)CPU內核的觸發(fā)/跟蹤功能,或者芯片提供CPU、加速器、總線(xiàn)和外設控制器的擴展采集,跟蹤以及交叉觸發(fā)功能嗎?第三,調試子系統會(huì )提供哪些方法來(lái)觀(guān)察系統中其他芯片和器件的狀態(tài)?

  這些問(wèn)題的答案會(huì )定義系統團隊連接哪類(lèi)外部測量設備工作臺,在哪些工作臺上能夠實(shí)現他們的系統調試計劃。在這么多的系統工程中,關(guān)鍵是要盡早地開(kāi)始對調試進(jìn)行規劃——在工程的體系結構設計階段。沒(méi)有足夠的數據呈現,就開(kāi)始調試基于SoC的系統,是不明智的,很快這種場(chǎng)景就會(huì )很難維持下去的。



關(guān)鍵詞: SoC 系統設計 調試

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>