Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Port Bluedroid to RTOS

882 views

Published on

Android の Bluetooth プロトコルスタック Bluedroid を RTOS に 移植した話です。

Published in: Software
  • Be the first to comment

  • Be the first to like this

Port Bluedroid to RTOS

  1. 1. Port Bluedroid to RTOS by スカイストリーム せきね
  2. 2. Bluedroid • AndroidのBluetooth プロトコルスタック • BroadcomとGoogleが開発 • AOSPでソースコード公開 • https://android.googlesource.com/ platform/external/bluetooth/bluedroid/ • Apache License 2
  3. 3. • Protocols • ATT AVCTP AVDTP BNEP BTM L2CAP MCAP OBEX RFCOMM SDP SMP • Profiles • A2DP AVRCP BIP BPP CTP DI DUN FTP GAP GATT GOEP HCRP HDP HFP HIDP HSP ICP LAP MAP OPP PAN PBAP SAP SPP SYNCH VDP • Bluedroidの開発は2015-03で停止したが system/btとして開発が継続 (link)
  4. 4. GOOD • Apachie License 2 • BT/BLE dual stack • 対応しているプロトコル・Profileが多い • 必要なプロトコル・プロファイルのみのコンフ ィグできる • 独自のメモリ管理機構があるのでmallocが無い OSでも動作
  5. 5. BAD • ドキュメント無し • コミュニティ無し • テストコード無し • Bluetoohロゴ認証テストコード無し
  6. 6. SOURCE CODE 言語:だいたいC言語 規模:18万行ぐらい (clocで調査) bta/ 抽象化レイヤ btif/ 上位向けAPI hci/ HCIドライバ gki/ OS依存コード stack/ プロトコル・プロファイル
  7. 7. TASK
  8. 8. GKI Generic Kernel Interface • タスク管理 • タスク間通信 • タイマ • メモリ管理
  9. 9. PORTING • Linuxで最小限のソースコードになるようにす る • btif->bta->stackの順でコンパイルエラーを取 る • HCIとドライバを接続する • GKIを移植する • 動かしならがデバッグする。
  10. 10. PORTING RESULT • ターゲット • CPU ARM • OS uITRON4.0互換OS • コンパイラ ARM Realview • BLEのみに変更 • ソースコード 9万行 • ROM 約100KB / RAM 約100KB
  11. 11. Bluetooth SIG Qualification • テストプランを入手し、どのテストを受験する か決める • テストのシーケンスを行うプログラムを開発 • PTSで自分でテストする • テストラボで本番テストをする 認証はpassできた
  12. 12. sample code btgatt_srvc_id_t servc_id1 = { { {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00}, 0, }, bt_uuid_t app_uuid1 = {{ 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x19, 0x2a, 0x00, 0x00 }}; bt_uuid_t app_uuid1 = {{ 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x19, 0x2b, 0x00, 0x00 }}; btIf = get_bluetooth_interface(); sGattIf->init(&sGattCallbacks); btIf->enable(); sGattIf = btIf->get_profile_interface(BT_PROFILE_GATT_ID); sGattIf->server->register_server(&app_uuid1); sGattIf->server->add_service(4 , &servc_id1, 24); sGattIf->server->add_characteristic(4, 40, &app_uuid2, 0x02+0x10, 0x01); sGattIf->server->start_service(4, 40, 1); sGattIf->client->set_adv_data( 5 /* client_if */, 0 /* set_scan_resp */, 1 /* include_name */, 0 /* include_txpower */, 0x20 /* min_interval */, 0x100 /* max_interval */, 0 /* appearance */, 0 /* manifactureer_len */, NULL /* manifacturer_data */, 0 /* service_data_len */, NULL /* service_data */, 0 /* service_uuid_len */, NULL /* service_uuid */ ); sGattIf->client->listen( 5 /* server_if */, 1 /* start */ );
  13. 13. PR スカイストリームでは、 • Bluedroid の各種OSへの移植 • Bluetooth認証のサポート • 技術基準適合証明 / FCC / CE のサポート • Wi-Fi認証のサポート を行っています お問い合わせ:http://www.skystream.co.jp/ 人材も募集中です
  14. 14. おまけ
  15. 15. モバイルプラットフォームの Bluetoothプロトコルスタッ ク • iOS : Bluemagic -> Apple? • Android : BlueZ -> Bluedroid -> system/bt • Windows Mobile : Microsoft? • Firefox OS : BlueZ -> Bluedroid • Tizen : BlueZ

×