8/04/2009

BT porting (5) - Set up !!!

哇哈哈~~今天下班的時候,BT終於起來了!!!

當它能scan到其它裝置時,高興的都快哭了....

跟TI的人通了20幾封mail,然後在今天下午mike學長帶著我去跟TI的人做電話會議...

經過TI的人確認,BTS是沒有問題的,因為其它家廠商都己經support成功了....只是不知道問題出在哪,但他說,他記得之前也有人碰過這種問題,只是他不太曉得...依稀記得跟size有關。

得到模糊的答案之後,就把主力放在source code上,第一步先檢查TI給的kernel,看裡面的UART source code是不是有問題...

經過1個多小時的追蹤,也確定跟kernel無關,因為UART source code只跟設定baudrate、tty device等相關而己,接著我就把重心放在最不可能的bluez....

但好死不死,我突然發覺,似乎真的是bluez的問題,因為在執行「hciattach」這個bluez tools的時候,為什麼會去download TI的firmware呢?

想到這點,心中百分之百確定TI一定有在bluez動手腳....之前會沒想到是因為bluez幾乎都support各種BT的profile及protocol,實在沒必要畫蛇添足...

果其不然,從「hciattach」這個binary file找到hciattach.c,但進去看的時候,也沒看到有關download BTS等相關code...

正準備要死心的時候,發現到hciattach_ti.c !!!

一點進去,哈,這個source code果然是專門處理BTS的...

在經過40幾分鐘的debug....終於發現,原來TI給的BTS要寫進memory的buff,比這個source code所定義的buff大了許多!!!

嘿嘿....一改完,重新編譯...REBOOT,

用hciattach再去鏈結一次serial裝置....OK !!

---------------------------------------------------

在這段debug的日子裡,為了找出原因....一步一步的確定baudrate、用示波器看TX、RX、CTS、RTS等工作是否正常....到最後找出答案,還滿令人振奮的!!!

或許大家都知道,當要debug一個東西時,都會從源頭找起,不然就是先確認hardware是否能正常工作,等確認ok了,再來開始著手software的問題。

我也是這樣,重編kernel...cross compile等等,懷疑BTS是否能用.....

所以我在這得到一個滿重要的體認:

「當要debug時,務必從printf error message開始往上找起。」

在debug的時候,沒人可以幫你,因為只有自己清楚遇到什麼樣的issue,你問別人說不定還會誤導自己的方向。

除了保持頭腦清晰,重要的是不能慌,再來就是先確定自己遇到什麼問題,然後把你遇到的問題、懷疑那個地方出錯、要如何去debug等等,這些都要再你提問時都要準備好,不然只會越撞越頭大。

不要期望有人給你答案,旁人給你的答案有百分之八十都是錯的,大部份都是經驗談,這點要牢記,除非是同一個問題。

2 comments:

  1. 恭喜恭喜........
    這個月聚餐吃壽喜燒,阿你晚上不上線是怎樣?

    ReplyDelete
  2. 我有上唄

    只是我回到家、吃飯完、洗完澡大約9點半了吧...

    你可以早上跟我說呀@@

    ReplyDelete