2011年4月23日 星期六

Source Code 亂談

先看看這段影片.




5分鐘電影預告很長,


再看看中文預告片" 啟動原始碼"


從電影預告的劇情以及電影名稱,有沒有讓同樣是程式設計工程師的你很想去看看這部電影?

先不管為什麼中文翻譯要多加個"啟動" (不過我猜是因為這電影內容有點點像是電影"全面啟動",於是乎硬是在這名稱前加啟動).
一看到取名叫作 Source Code 的電影,就已經讓我一腳踏進電影院了(不過還有另外一腳在外面,所以其實我還沒去看過 XD).


故事說一名軍人 Stevens上尉 , 在一列火車上醒來後發現他處在別人(Sean)
的身體裡,他還搞不清楚這一切,就被列車上炸彈炸歪了.

接著他又醒來在一處駕駛艙般的地方.被告知他正執行著一項任務.透過一套稱為Source Code的系統,他會經歷Sean被炸死前的8分鐘,他的任務就是要一次一次的經歷這8分鐘,藉由他的觀察,找出誰是這位炸彈客,若不能及時發現誰是兇手那再過6小時後,又會在另一處發生炸彈攻擊事件.

什麼是原始碼?


後面的劇情會怎麼樣,我還不知道,不過看了前面的幾段預告,Stevens上尉在Source Code裡面做的事情,觀察,找一些資訊來查出兇手,改變結果.不就是我們也常在 Source Code裡面做的事情( Debug , try and error)? 尤其像是去處理別人留下的bug. 還好我們不用一直被炸了又炸.

所以來講講平常在開發除錯環境裡,有哪些方式或是工具可以協助 Debug .(會不會轉的太硬 .. 笑)

簡單分為兩部分:
printf ( UART ) 以及使用 Debugger( ICE/ULINK2/JTAG or LPC-LINK ) .


1. printf 部分已經在  Debug Message UART 提過. 這個方式是將 printf 埋在程式中成為觀察點,在compile後將帶有這些printf 的程式更新至MCU裡,當MCU執行過這些 printf時,會將這些資訊透過UART 轉RS23 送到PC COM Port,再藉由 Hyper Terminal or Putty 等 PC端程式,將其顯示於螢幕上. 除錯者藉由觀察自己埋下的資訊,來作為除錯的判端.

這種方式在 ICE 昂貴的環境下非常受歡迎,因為開發成本可以大大降低,也因此可看到目前多數 MCU 廠家的初始 ISP ( boot loader )多是設計透過 UART 介面(可以更新fw又可以提供除錯).除了成本低以外,另外的好處是當除錯的點,不適用中斷後觀察的情況下也是一種很好的除錯方式.

缺點就是當你想要觀察新的資訊,就需要再code裡面新增 printf ,再compile ,再download fw ,再reset MCU.重RUN一次這樣的流程,有時候常常是很耗費時間. 記得以前執行過的一個project 在架設多機同時編譯的Server下. clean後再build約需要1個小時,而一次小改的compile加上link要15分鐘左右,試想一天算8個小時工作時間(我知道大家都不只工作8小時), 8hrsx60min/15min = 32 次 .. 是的一天只能有32次的機會. 想想真的是浪費生命時間.
回頭再說 2.


      
2. Debugger  LPC-LINK
拜科技之賜(競爭可能是更大原因) ,許多MCU廠家為了提供更低價的ICE,也都開始提供自行開發或是委託 3rd party開發的ICE.也因此吸引更多人使用其生產MCU. 所以手上有了這套 $30 美金的 LPCXpresso .當然也別忘了台灣廠商也提供不錯的低價除錯工具.

一些ICE常用的功能
  • Run the program.
  • Breakpoint
  • Step Over C/C++ line.
  • Step into a function.
  • Stop the debugger.
  • Pause Execution of the running program
  • Reset
  • Instruction stepping mode (disassembly)
  • Peripheral views
  • Watch views
  • Memory views
細節可以參考 LPCXpresso入門手冊
另外我也找了一份 線上文件 LPCXpresso Hands-On / Lab Tutorial « Embedded Freaks..
對於這些部分也是不錯的說明.

另外透過 LPCXpresso  也可以做到像是 printf 的 message debug方式將資料透過 LPC-LINK 傳遞至 LPCXpresso上的 console. (稱作 semihosting ),這部分有機會也來寫篇文章說明怎麼做.


最後說一個好笑的事情,幾周前聽了一位 帶有濃厚口音的外國人介紹產品的時候,他講了好幾次 Debugger ... 發音是 底八改.  他就一直 底八改 底八改 底八改的讓我越聽越覺得他在講 天篷大元帥的名字.......



你們偏好用什麼方式除錯勒?

0 留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...