接下來整理在 porting BT 時的心得 雖然目前在交叉編譯的地方卡住= =
但爭取一天寫一次心得 務必盡快上手
local:
Linux distribution: Ferdora 11
kernel version: 2.6.29
gcc version:4.4.0
Target :
board : TI OMAP2430
chip : TI WL1271
kernel version : 2.6.14
BSP version : 18.12
----------------------------
對這個platform的硬體沒啥概念 只知道這顆chip能夠support WiFi+BT+Android
看的出來我會跟這系列的chip常打交道了 所以有空要補上
(documents看不完呀呀~~~~)
----------------------------
目前拿到所有kernel&BT的packge 但我還沒有看到編譯給target用的工具
所以我連上公司遠端直接做cross compile 用的是arm-none-linux-gnueab
可是我很懷疑這cross compile是不是對的= =
hyson說他的WiFi是用這個compile 沒道理我這不是...唉 鬱悶呀~
先總結一下目前我所認知BT :
藍牙協議堆疊依照其功能可分四層:
* 核心協議層(HCI、LMP、L2CAP、SDP)
* 線纜替換協定層(RFCOMM)
* 電話控制協定層(TCS-BIN)
* 選用協議層(PPP、TCP、IP、UDP、OBEX、IrMC、WAP、WAE)
藍牙規範(Profile)是指藍牙通訊在那一種用途下應該使用的通訊協定和相關的規範。藍牙1.1定義的profile有13個。SIG 認為藍牙裝置有4個最基本的 Profile:
* General Access Profile(GAP)
* Service Discovery Application Profile(SDAP)
* Serial Port Profile(SPP)
* General Object Exchange Profile(GOEP)
我所關心的是核心協議層,其中
LMP(Link Management Protocol):它主要是負責base band與之間控制訊息的交換
HCI(Host Controller Interface):這個介面是用來處理Host與BT device之間的通訊,透過HCI,無論這個BT device是以USB介面還是serial port介面連接到Host,Host都可以存取BT device,聽起來很像是驅動程式,但它卻不會像驅動程式一樣去存取記憶體等資源,它的作法是HCI透過發送命令或是資料封包到BT device,這時BT device也會回覆資訊,所以簡單講,HCI提供了一個uniform的介面來存取BT device
L2CAP(Logic Link Control and Apapation Protocol):L2CAP是負責多工,從上層送來的封包過大時,它是切成適當的大小往下層送,好讓下層可以處理,反之亦然.
SDP(service discovery protocol):簡單的話,這協議定議了如何發現哪個可用的BT deivce,並且在找不到BT device時,同時也有探測的功能.
Bluez它是標準的Linux Bluetooth module,幾乎支援各個BT device
整個BT architecture中,除了硬體的RF module , base band , Link Manager之外
還需要軟體部份的L2CAP,RFcomm module,SDP,TCS 而Bluez就是負責這部份
在Bluez的軟件中,又有Bluez-Libs和Bluez-Utils,其中Bluez-Utils就比較麻煩
它需要依賴dbus,expat(xml)等函式庫
所以在TI給我的BT package就有:
expat-2.0.1:提供XML library
dbus-1.2.1
bluez-libs-3.36
bluez-utils-3.36
openobex-1.3
但目前在cross compile dbus時 查了config.log 出現下列錯誤:
configure:26090: arm-none-linux-gnueabi-gcc -o conftest -ffunction-sections -fdata-sections -I/home/work/rootfs/usr/include -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wdeclaration-after-statement -fno-common -I/home/work/rootfs/usr/include -L/home/work/rootfs/usr/lib conftest.c -lexpat >&5
/tmp/ccENhlU7.o: In function `main':
conftest.c:(.text.main+0x8): undefined reference to `XML_ParserCreate_MM'
collect2: ld returned 1 exit status
configure:26114: result: no
configure:26270: error: Explicitly requested expat but expat not found
這原因讓我非常納悶...在公司跟在家裡遇到的錯誤竟然不一樣!!
configure是這樣設置:
CFLAGS=-I/home/work/rootfs/usr/include CPPFLAGS=-I/home/work/rootfs/usr/include LDFLAGS=-L/home/work/rootfs/usr/lib CC=arm-none-linux-gnueabi-gcc ./configure -C --prefix=/home/work/rootfs/usr --without-x --host=arm-linux --with-xml=expat --sysconfdir=/etc --localstatedir=/var
----
board:TI OMAP2430 功能很強,你有的玩了
ReplyDeletechip:TI WL1271 這不就跟太欣半導體一樣WLAN+BLUETOOTH
選TI的就對了,國產的沒事別用,會落賽......
--
還是跟之前說的一樣,東西要TRY資料也要看.....
wlan+bt+fm
ReplyDelete.....
我只負責bt
應該不會把這板的功能全玩 ..
Dicky你好,最近我也是在port wl1271,不曉得能不能跟你請教一下相關的問題。謝謝。
ReplyDelete@Brandown : 請說,如果有我幫的上忙的地方 :)
ReplyDelete