先看看這段影片.
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常用的功能
另外我也找了一份 線上文件 LPCXpresso Hands-On / Lab Tutorial « Embedded Freaks..
對於這些部分也是不錯的說明.
另外透過 LPCXpresso 也可以做到像是 printf 的 message debug方式將資料透過 LPC-LINK 傳遞至 LPCXpresso上的 console. (稱作 semihosting ),這部分有機會也來寫篇文章說明怎麼做.
最後說一個好笑的事情,幾周前聽了一位 帶有濃厚口音的外國人介紹產品的時候,他講了好幾次 Debugger ... 發音是 底八改. 他就一直 底八改 底八改 底八改的讓我越聽越覺得他在講 天篷大元帥的名字.......
你們偏好用什麼方式除錯勒?
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 Hands-On / Lab Tutorial « Embedded Freaks..
對於這些部分也是不錯的說明.
另外透過 LPCXpresso 也可以做到像是 printf 的 message debug方式將資料透過 LPC-LINK 傳遞至 LPCXpresso上的 console. (稱作 semihosting ),這部分有機會也來寫篇文章說明怎麼做.
最後說一個好笑的事情,幾周前聽了一位 帶有濃厚口音的外國人介紹產品的時候,他講了好幾次 Debugger ... 發音是 底八改. 他就一直 底八改 底八改 底八改的讓我越聽越覺得他在講 天篷大元帥的名字.......
你們偏好用什麼方式除錯勒?
0 留言:
張貼留言