Global Sources
電子工程專輯
 
電子工程專輯 > EDA/IP
 
 
EDA/IP  

EE人生:為「別人的設計」(SED)進行除錯

上網時間: 2011年11月18日     打印版  Bookmark and Share  字型大小:  

關鍵字:VMEBus  介面  處理器  組合語言  編碼 

一位知名的喜劇演員曾經創造了這句流行用語──「我很不喜歡這種感覺!」(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就會隨時啟動執行。

最後我終於發現,大部分用於尋找DF和NV的邏輯是透過ISR內部所執行的,每512微秒執行兩次ISR作業。現在我幾乎就要解決這個問題了。我找到了Motorola Assembler手冊,然後開始增加執行ISR所需的CPU指令週期,接著就發現其中一個ISR無法在下一次中斷發生前完成指令作業,因而不斷地耗用CPU堆疊中的暫存器,直至記憶體耗盡後當機。

實際動手進行修復可不簡單。我花了一個多月的時間重新建置ISR,使ISR內部僅執行關鍵的指令集,並建立了一個可立即儲存中間計算值的方式,以便使這些值也可用於ISR外部。

這些修改終於完成且經測試過了,而這款介面盒在那之後還用了好多年。我自己對於這一點成績也感到相當自豪。

編譯:Susan Hong

(參考原文:The SED (Someone Else's Design) Problem,by Dwight Bues)





投票數:   加入我的最愛
我來評論 - EE人生:為「別人的設計」(SED)進行除...
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首