Android製品のデバイスドライバについて

このQ&Aのポイント
  • Android製品にBluetoothチップを載せるときのデバイスドライバ開発方法について質問です。
  • Androidのソース自体を修正してチップベンダの通信仕様に合わせる方法と、独自のAPIを開発する方法があります。
  • APIを開発する方法はAndroidのソースを読む必要がなくなりますが、Android APIが使えないデメリットがあります。一方、ソース修正する方法は難しくライセンスも気にする必要があります。将来性を考慮しつつ負担を軽減できる方法をお知りになりませんか?
回答を見る
  • ベストアンサー

Android製品のデバイスドライバ

業務でAndroid製品を開発している方に質問です。 (自分は組み込み系のソフト開発(C言語)をかじり中です) Android製品にBluetoothチップを載せる際、 デバイスドライバは、どのように開発してますか? (1)Bluetoothのチップベンダの独自通信仕様に基づいて別途APIを開発しているのでしょうか? それとも (2)Androidのソース自体(ライブラリやLinuxカーネル?)をチップベンダの通信仕様に合うよう修正しているのでしょうか? (1)だと、Androidのソースを読み解く必要がないので楽だと思うのですが Android APIが使えない欠点があると思ってます。 (2)だと、アプリケーション層の開発者がAndroidの標準仕様で開発できますが Linuxカーネル層やライブラリ層を解読する必要があるし ライセンスも気にしないといけないためカナリ大変なのでは?と想像しています。 想定してる製品は、スマフォやタブレットではないので Androidアプリが起動できなくてもいいのですが(そもそもAndroidでなくてもいい) 将来性を考えて(2)を選択しつつも、負担を軽減できる良い方法をご存じないでしょうか? チップベンダがAndroid用(Linux)のデバイスドイラバを提供していれば話は簡単ですが(笑)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ハードウェアにアクセスする必要がある時点でLinuxのドライバという話になります。 Anroidの場合、カーネルはLinuxですから作るとしたらLinuxのドライバですしソース公開の義務を伴います。 知人がLinuxのドライバの作法がわからなくて調べるのが大変と嘆いてました。(公開を前提に作る必要があるっていってました) それと、Bluetoothの場合、通信仕様はBluetoothの仕様です。 ※Bluetoothのチップベンダの独自通信仕様はないでしょう。あっても、他社のBluetooth機器と通信できなさそう。 > チップベンダがAndroid用(Linux)のデバイスドイラバを提供していれば話は簡単ですが(笑) ほぼされています。 されてないチップがあったら知りたいくらい。 ※チップベンダが提供してない場合ってアンドロイドの市場を考えてないチップしかありえませんし、ドライバ書くにはチップのプログラミングに必要な資料は必須だと思いますがその入手はチップベンダに頼らざるを得ないですよね。 それと、チップメーカにはオープンソースにドライバ供給しているメーカ多いですよ。

hiroki_xxx
質問者

お礼

回答ありがとうございます。 よく理解できたと同時に、 自分の間違いと自分がわからない点を整理できました。 CompleteモジュールというBluetoothチップがあります。CPUやプロファイル等が内蔵されており中身の詳細はblackboxなものです。この場合はメインCPUが直接ハードを制御する訳ではなく、UARTとでメッセージのやり取りをするだけで良いです。デバドラ不要です。ただUARTの通信インターフェースを作成しないといけなく、そこをAndroid のBluetoothAPIにどう連携させて作っているのか?という点が分かっていません。 そこは改めて質問したいと思います。ありがとうございました。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

Linuxって今では意外とOSSによるドライバが充実してるんです。 試しにPCのLinux環境を作って適当なBTドングルをさしてもらえばわかると思いますが、大抵のものは自動認識されます。 ですから、「対応チップを組み込む」というアプローチを取ってるところが多いんじゃないでしょうか。

hiroki_xxx
質問者

お礼

回答ありがとうございます。 Linuxなどは、OSSによるデバドラがあるのですね。 BlueZ等が確かにありました。

関連するQ&A

  • Android2.3.1(API9)のインストール

    1年ほど前にubuntu10.10に ・eclipse-java-helios-SR2-linux-gtk.tar.gz ・jdk-6u24-linux-i586.bin ・android-sdk_r10-linux_x86.tgz によりandroidを組み込みました。順調にeclipseでプログラムを作成できました。 使用していたハードディスクが壊れてしまったので、HDDのフォーマート後再度ubuntu10.10を組み込みました。上記の3本でアンドロイドの開発環境を構築しましが、以前作成したプログラムが Android2.3.1(API9)であるため、問題なく動いていたものが Unable to resolve target 'android-9'のエラーメッセージが表示されてしまいます。 調べたところ、おそらくAPI9がないためと思われ、必死でインターネットでその組み込み方法を探したのですが、開発元のサイトにこのバージョンがなぜかありません。 解決方法を教えてくだされば幸です。

  • 古いLinuxに最新のX Windowsのインストール

    Linuxのカーネル2.2で開発しているものです. いままで使っていたパソコンが壊れたので,新しいパソコンに,Linuxカーネルの2.2を入れたまではいいのですが,X Windowsがうまく動作しません. たぶん,XFree86が古くて,新しいビデオチップに対応していないと思っています. なので,最新のXFree86最新バージョンのソースをとってきて,インストールしたいのですが,そもそも古いLinuxに最新のXFree86がコンパイルできて,さらにX Windowsがうまく動作するか心配です. そこで,ご質問なのですが,古いLinux(カーネル2.2)で最新のXFree86がコンパイルできて,ちゃんと動作するのか教えてください. あと,もし,コンパイルできた場合,はなりそうな箇所があれば教えていただけるとありたがたいです.

  • 【開発】AndroidのBluetooth通信

    Android開発のBluetooth通信について シンプルな構造にしたい為Activity毎に機能を分けたいです。 以下の様な構成は可能でしょうか? Activity1 →BluetoothAdapter、BluetoothChatServiceクラスをもち、Bluetooth通信を行う Activity2 →Activity1でBluetooth通信された内容を割り込みを受け、データ送受信が行える

  • Linux kernel に関する書籍

    こんにちは 私は、Linux2,6系のkernelのソースコードを読みたいと思い、 その為の参考書として以下の書籍、 「詳解 Linuxカーネル 第3版」 「Linuxカーネル2.6解読室」 のどちらかの購入を検討しています。 しかし、両方とも3~4年前に発売されていて、 年々進化しているLinuxの技術書としてはやや古いような気がするのですが この書籍は今から読んでも十分に役に立つ本なのか教えてください。 それと、もっとおすすめのものがあれば教えていだたけるとうれしいです。

  • Linuxって、、、、、、

    私は現在リナックスを使っているのですが、、、、、 親にリナックスって何?って聞かれると上手く答えられません、 自分自信一体なんのかよくわかってません、 C言語のできるOS?違う、そんなのWindowsでもできる、。 サーバ構築?違う、これもWindowsでもできる、 システム開発用のOS?これもやっぱ違うと思う、他のOSでも できるような気がする、 私が知っているのは、オープンソースとかいうくらい、 自分でいろいろなんか変えられるとか、、、、、 あと友達は「Linuxはカーネルだ!」といっていました、 カーネルは知っているのですが、意味がよくわかりませんでした。 お願いします、Linuxとは一体なんなのですか?

  • C、C++のプログラミング勉強に良いソースを教えてくださ

    私は、C、C++を少しかじった程度なんですが、これからもっと勉強していきたいと思っています。 目標は、●Linuxのフリーソフト(システム関係のもの)の開発      ●(Windowsでも何かアプリケーションを作る(フリーの)) です。 そこで質問なのですが、どのようなソースコードを読めば、より上達が早まるでしょうか? または、読んでおいた方がいいソースとかあるでしょうか? 基本からなので、Linuxのものから始めたいと思っています。 (今使っているのは、Vine Linuxです。使いこなせてないですが・・・。) いきなりカーネルのコードを読むのはハードルが高いような気がするし、実際見てもよく分かりませんでした。 ある程度簡単なものからステップアップして、最終的にカーネルを読んで、理解できるようになりたいです。 どなたか教えてください。よろしくお願いします。

  • Androidアプリが上書インストールされてしまう

    Androidアプリ開発の超初心者です。 Android SDKを使って、Nexus7から目覚まし時計のような機器に Bluetoothで情報を送信するアプリを開発したいと思っています。 ここで、起床時刻を送信するアプリと、時刻合わせ用に現在時刻を送信するアプリを 別アプリとして作成し、Nexus7にインストールしたいのですが、 一方をインストールした状態で他方をインストールすると、上書きされてしまいます。 どこを変更すれば、別アプリとしてインストールすることができるでしょうか。 因みにアプリ名は、strings.xml中の"app_name"を変更し、互いに異なるようにしています。 アプリはいずれもAndroid2.2(API8)のサンプルプログラム"BluetoothChat"を元に 作成しております。 開発環境はEclipse4.2.1、Windows7Enterprise上で動作させています。 Nexus7のAndroidバージョンは4.2です。 ご回答頂ければ幸いです。何卒よろしくお願い致します。

  • XKP漢字処理技術について

    ここで質問していいのかわかりませんが。。。 XKP仕様で拡張漢字処理を行いたいのですが、 調べたのですが、どうしていいか分かりません。 XKPのHPには下記のXKP技術を利用した開発方法として   ・UDCサーバーAPIを呼び出す(C/C++言語等向き)   ・OLE Controlを利用する(Visual BASIC/VBA向き) の2方法あると書かれています。 当方では、両方とも試して開発したいのですが、 サンプルソース及びライブラリー、ヘッダ等がありません。(提供してくれるのでしょうか?) 全くの素人なので、抽象的な表現になってしまいすみません。 何か知ってることがあれば教えて頂きたいのですが。

  • Android(アンドロイド)アプリ開発時 OSやメーカーの互換性につ

    Android(アンドロイド)アプリ開発時 OSやメーカーの互換性について Android(アンドロイド)アプリの開発を進めるにあたり OSやメーカごとの互換性について教えてください。 自分が調べた限りでは OSはバージョンが異なると(1.6や2.1)使用できるAPIが異なるので 互換性はなく、例えば「Ver1.6で開発したものは、基本2.1など他のバージョンのOSでは動かない」と 認識してます。 このような認識でよろしいでしょうか? また特にお伺いしたい点として、メーカーごとにも差異の互換性はどうでしょうか。 例えばDocomoのエクスペリア(OS 1.6)に動作するアプリを開発した場合 同一バイナリのアプリでソフトバンクのIS01(OS 1.6)で動作するものなのでしょうか。 自分が調べた限りでは 「端末実機(メーカー)ごとの差異による、サスペンド、レジューム周りの起動に関わる処理の違いによる影響がある」 との事で、やはり同一バイナリで動作できないように認識してます。 このような認識でよろしいでしょうか? 繰り返しの質問ですが OS メーカー(端末実機)ごと こちらのアプリの互換性について、差異がどのようなものか 特定のOS、端末で開発したアプリが 他OS、他メーカーの端末で動作させようとした場合 どこがどのような差異があるものなのか、ご教授ください。 できましたら、その情報が記載されているようなソース情報も併せていただけると 非常に助かります。 どうぞよろしくお願いします。

  • Linux のカーネル・パニックに強くなる本

    Linux のカーネル・パニックに強くなる本 Linux のカーネル・パニックに強くなる本、なにかよいものはないでしょうか。 私はあるハードウェアメーカに勤めています。作っている製品のファームウェアの一部で Linux を使用しているのですが、最近私がその部分の担当となりました。 これまでハード・ソフトの開発でユーザとしてUNIX自体には長く触れてきたのですが、管理者や Linux を含むシステムの開発・問題調査などはあまり経験がありません。 Linux マシンの管理者になるための本は比較的見つけやすかったので、本屋でいくつか買ってきて勉強しました。また、Linux のカーネルソースを解説した本もいくつか買いました。 しかし何と言っても怖いのがカーネル・パニックです。パニックが起こったとき、「このパニックは、これこれこういう現象なので、ハードのここら辺が怪しい」とか「ソフトのここら辺が怪しい」みたいな感じの、現象の把握と説明、原因の大まかな切り分けが、まずはできるようにならなければな~、と思っています。 まあ、本当に「カーネル・パニックに強くなる」には経験を積む必要があると思いますが、その前にまず、勉強として「これは読むとためになるよ~」とか、「それにはコレがぴったりだよ」というような本などに心当たりの方おりましたら、お教えいただけるとありがたいです。 本ではなく、Web ページとか、あるいは有料のセミナーの様なものの情報などでも、もし上記目的にマッチしそうなものをご存じでしたらご助言ください。 よろしくお願いします。

専門家に質問してみよう