在porting的幾天裡 有很多background實在吃不消
只能見招 然後查docment或google 真的不行就只好問人(hychen又要靠北別interrupt我...)
然後昨天又被yvonne大姐唸說去把整個process去好好了解一下..
結果今天快下班前...yvonne大姐BT porting for WinCE竟然好了 !!!
shit ~~ 一整個就是悶到極點
還特地跑過來叫我過去看 這就算了 還一邊說:看到沒,BT一直掃呀掃的
很想把血吐到她臉上.....................
恩..這不重要 還是先說明目前的situation
昨天一直沒辦法利用TI的BTS(bluetooth scirpt)把chip初始化並set up device
但撇開BTS不談,就算chip沒辦法initialzation,可是至少要能找到MAC
因為MAC是燒進chip裡面的,而且我也找的到chip,照理說應該要能configure到
可竟然沒有!!!所以我把重心放在make kernel上....結果又是我自己耍白痴...
花了幾個小時,終於知道為什麼沒辦法使用Bluez tools了...因為根本沒載入module...
我一直以為把bluetooth protocol相關東西用build-in到kernel去就好...根本沒管module
所以我把modules加進filesystem去並insmod,果然就好了= =
剩下BTS的問題了...但查到8點半一直查不出原因 只好放棄先回家K文件寫心得了...(慘)
===========================================================================
接下來開始說明bluez UART BTS等相關backgorund...因為是硬啃下去的...
所以若有說明不解或資料不齊...未來會慢慢補上.
===========================================================================
Bluez是官方 Linux Bluetooth stack,由主機控制介面(Host Control Interface ,HCI)層、Bluetooth 協定核心、邏輯鏈路控制和適配協定(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音訊層、其他 Bluetooth 服務、使用者空間後臺預設程式以及設定工具組成.
而bluez裡面,有一個源始碼叫hci_core.c ,它是HCI的核心所在,而H4 procotol跟BCSP procotol全都依賴這個HCI core,而H4跟BCSP的源始碼也放在bluez裡叫hci_h4.c和hci_bcsp.c,想更深入了解的人可以先去翻閱.
那H4跟BCSP又是什麼呢?BCSP全名叫BlueCore serial Protocol,而H4是UART的規範,如果是RS232呢?那就是H3 procotol,所以這次的HCI protcol將會用到H4跟BCSP,所以在設置核心時,記得要打勾!!
己經知道BT會用到的protocol之後,再來就是要來了解是誰負責傳/收資料,誰又是負責處理資料.
負責傳/收當然就由UART負責跟硬體層溝通,接著會到serial core,這個serial core會把UART接收到的信號轉成數位,而且handle所有的資料跟接口(ports),並且對該device向tty I/O註冊,而tty I/O會再把它轉換成device並通知核心註冊一個character device,讓你能夠經由terminal對serial port下command.
而處理資料是經過一個叫HCIline discipline,Line disicpline是在同一種serial driver上使用不同科技的一種方法,它是位於serial core的上層,如果說serial是負責控制硬體傳/收資料,那line disicpline就是負責處理這些資料的方法,而且是在user space及kernel space做傳輸.
它會執行封包切割 配置並且產生相對對應的網路資料結構,然後把對應的資料傳送到對應的協定層...沒錯,它將會傳送到H4及BCSP的協定層.
而這顆chip是屬於內置CSR bluetooth並使用UART連接.因為CSR是設計為HCI資料分組,所以必為要用hciattach來通知bluez來鏈結驅動程式.
至於BTS...因為怕會牽扯到資料洩密的問題,所以我也不便多說....只能它說是TI額外設置chip的東西.
當然也不是每一顆bluetooth的晶片都會如此這樣做,像我google了一些別人的platform...有些人porting的chip都要自己額外去設置....那個才叫慘..
大致上整個process應該如我上面所述(噴了幾個晚上的眼淚查閱到的...)
若有半點遺漏或錯誤的地方 請更正我!!!
No comments:
Post a Comment