為「別人的設計」(SED)問題進行除錯

2019-09-18
作者 Dwight Bues, EE Times Guru

你曾經不得不去除錯或改善「別人的設計」(Someone Else's Design;SED)嗎?你如何剝繭抽絲地找到問題發生的根源,以及如何發揮你的工程專業,解決那些棘手的問題?

一位知名的喜劇演員曾經創造了這句流行用語──「我很不喜歡這種感覺!」(I hate it when that happens!!!)。我其實完全能夠瞭解那種感受。每一次當我不得不去破解、除錯或改善「別人的設計」(Someone Else's Design;SED)時,我相信自己都說了這句話。

有一天,我的老闆給了我一個任務,要我去弄清楚一個基於VMEBus的處理器介面盒究竟是哪裡出錯了。由於這是在1990年代那個桌上型電腦獨大的「黑暗時代」(Dark Ages),這個介面盒中有一款摩托羅拉(Motorola) 68010微處理器,並採用組合語言(而非C語言、JAVA或HTML)進行編碼。我們所做的事就是將兩個6RU機架高、以繞線連接且基於7400邏輯電路的客製化介面盒置入一個5RU高的VMEBus盒中,並使其維持與兩個HP1000 Fast Fortran處理器的連接。

這個介面盒表面平滑:前方的觸控面板用於執行處理器的狀態,並顯示從介面所記錄到的數據資訊等。但這個介面盒原本面臨的問題就十分吊詭──想想看,你如何能將10磅的東西放在承重僅5磅的袋子裡?從封裝、佈線、後面板的連接器、電源以及冷卻器看來都很正常。但問題是,為了儘量地節省機架空間等,設計人員採用了超越其能力所及的組裝語言進行編碼作業。

原來的介面僅建置了‘L’模式。新的VMEBus設計則同時建置‘L’和‘S’模式,使複雜度增加了4倍。在‘L’模式下,每125微秒從144bit的數據框架下提取DF和NV位元,使L模式成功地完成建置。

然而,‘S’模式是一種新的編碼方式。這種模式則是每四個193位元、125ms提供一個DF和NV位元。測試此模式後發現無法順利運作。我懷疑問題就出在以組合語言編碼的邏輯電路建置上。我後來打了幾次電話詢問才知道當初的設計人員已經離職了,現在完全沒人可回答有關他這一設計的任何問題了。

我只好開始研究組合語言程式碼,發現設計人員對於所做的一切都進行了完整的建檔作業。但有關組合語言所要解決的最大難題通常都跟「子程式」(subroutine)語言有關。如果你看到佈滿‘JSR’和‘RTS’的程式碼,你可就很難追蹤到原來的邏輯建置作業了。很快地你就會發現,子程式存取作業也需要用到一些CPU週期來執行。而這就是在編寫組合語言時用於進行控制的關鍵參數。至於處理中斷服務程式(ISR)就更棘手了,因為只要外部中斷一發生,ISR就會隨時啟動執行。

…繼續閱讀請連結EDN Taiwan網站

活動簡介
未來寬能隙半導體元件會在哪些應用成為主流?元件供應商又會開發出哪些新的應用寬能隙元件的電路架構,以協助電力系統開發商進一步簡化設計複雜度、提升系統整體效率?TechTaipei「寬能隙元件市場與技術發展研討會」將邀請寬能隙半導體的關鍵供應商一一為與會者解惑。
贊助廠商
訂閱EETT電子報