使用 Serial Port 來除錯的時候請小心
一般來說,程式設計師在除錯的時候常常會用的一種方式就是 print 大法,在程式適當的地方插入一些顯示資訊的指令,提供開發者更多資料來除錯。而在使用這個方法來除錯的時候,有很高的機會是利用 serial port 來顯示信息,特別是在嵌入式系統的開發上。然而當透過 serial port 來印信息的時候有著潛在的風險,因為在工作上遇到了,所以就特別紀錄在下面。首先先來看看下面這一段程式。 1 2 3 4 5 6 7 #!/usr/bin/python import sys import time for item in range( 0, 10000, 1 ): print str( item ) + " ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" 這段程式相當的簡單,就只是單純的把一個字串印個 10000 次罷了。然後我們分別透過 SSH 以及 Serial port 連到測試設備上執行這個程式,並利用 time 這個指令來量測時間。結果記錄在下面(省略印字串的輸出)。 SSH: root@OpenWrt:~# time ./test_print_01.py real 0m 0.68s user 0m 0.18s sys 0m 0.08s Serial Port (115200): root@OpenWrt:~# time ./test_print_01.py real 1m 8.18s user 0m 0.17s sys 0m 0.07s 可以發現時間差距非常的多,理由很簡單,因為 serial port 的輸出速度只有 115200 bps (本篇的實驗設備),所以慢也很正常的。問題是,如果今天要除錯的程式是一隻 time critical 的程式,那這就會遇到很大的麻煩。先把程式列在下面: test_print.py 1 2 ...