2011-09-14 16 views
1

私はSamsung Galaxy 3を所有しており、他のAndroidデバイス用のカーネルを移植したいと考えています。私はすべての建物の環境を準備しています。私はC知識も持っています。正確に私が理解していないのは、どのように移植するのか、どのようなコードをどのように修正すべきかということです。Androidカーネルに関するガイダンス1つのデバイスから他のデバイスへの移植

誰かが私を助けることができたら。それは素晴らしいことだ。

ありがとうございます。


いいえ私はそれを得ました。しかし、本当の問題は、私は一つのことを理解していないということです。

他のデバイスで互換性を持たせるためにソースコードを変更する必要はありますか?誰かが私にそれを説明できますか?

+0

ここで質問を破棄しないでください。私はこれを元の状態に戻しました。 –

答えて

3

Idolonは良い提案です。理論的にはそこに書かれていることは真実です。実際にはもう少し複雑です。私は数か月前からAndroidカーネルを移植してきました。私の目標は、カスタムI/Oをカスタムボード上にカスタムS5PV210プロセッサモジュールを置くことでした。 Samsungの評価版(S5PV210 CPU用のSMDKV210)用のいくつかのバージョン(Froyo、Gingerbread)と同様に、SamsungのGalaxyタブといくつかのSamsungのAndroidスマートフォンのソースコードがあります。 FYI、S5PC110は近い派生物です。ここに私が見つけたものがあります。 すべてのデバイスドライバは非常にモジュラーな方法で、互いに独立して構築されているはずですが、同様のデバイスでそれらを置き換えることができるはずです。 1つの例として、電源管理について説明します。ハードウェアデバイスを扱う多くの低レベルドライバでは、パワーマネージメントチップのような他のハードウェアデバイスのための特定のルーチンを呼び出します。だから、 "make xconfig"や "make menuconfig"でドライバの選択肢を変更すると、あなたが望んでいないもののソースコードが削除され、必要なものが追加されます。削除した低レベル機能。構築時には、ハードウェアにはないが始まったソースで使用されている電源管理チップを取り外したため、未解決の外部がたくさんあります。私はいくつかのサムスンのデバイスのソースコードを見て、彼らは非常に早い段階で分岐している。彼らはさまざまなチームによって適応されており、1つのソースキットから1つのデバイスから別のデバイスに移動することは大量の作業になります。

私が成功した方法は次のとおりです。既に移植されたAndroidカーネル(Gingerbread)を搭載したS5PV210評価ボードを購入しました。すべての電力管理と相互依存の問題は、既にクリーンアップされているところです。次に、作業キットを作って、相互依存性に縛られずに、私が必要としていたデバイス(あなたが100Kユニット/年のコミットメントなしで購入できないデバイス)を変更することができました。それから、LCD解像度(800x480から1024x768まで)、タッチスクリーン、セルモデムなどを変更することさえできました。すべてのものは、1人の男(私)だけで約1ヶ月分の作業が必要です。

Galaxytabまたは他の商業用デバイスから始めて、私は何ヶ月もヘッドカーブを無駄にしましたが、有用な結果は得られませんでしたが、私が学んだことです。

私のアプローチに成功するための要件が​​1つあります。あなたが作業しているハードウェアを知る必要があります。例として、ハードウェアにどのようなタッチスクリーン(チップセット)がドライバを選択するのかを知る必要があり、正しいデバイス(USB、シリアルなど)に接続するために接続されています。

他のすべてのデバイス(パワーマネージメントチップ、キーパッド、バックライト、LCDなど)で同じことが関係していると思います。

読む

あなたはアンドロイドの移植とAOSPのソースコード、ディレクトリstucture階層の基本的な知識を持っている必要があります:

0

は、私は以下の経路を示唆してかなりの時間のためのAndroidのポーティングのものにもしています。 https://books.google.co.in/books/about/Embedded_Android.html?id=plHsngEACAAJ&hl=en を読んでから、https://source.android.com/devices/index.htmlを参照してください。グッド・グッド・チームは、Googleのアンドロイド・ポーティング関連グループもそこに加わることができると指摘しています。もしあなたが問題にこだわっていれば、同様の問題が誰かそれ以外は以前。

守っ

AOSPコード: 並列に使用すると、ソースコード内で、以前のAndroidのリリースからのアップデートは何どこ(配置されているコンポーネント観察https://android.googlesource.com/などのリンクからアンドロイドのソースなどにダイビングする必要がありますARTがLLのdalvikに取って代わりました)、トップレベルにはハードウェア/デバイスとフォルダのHALというハードウェア固有のコードがあります。

カーネルコード:カーネルで また、あなたが(カーネルのコンフィギュレーションを選択するために使用)アーチ/ディレクトリdefconfigsになりますディレクトリ構造を観察し、どこのSoC固有のコードのように横たわるたものを知る必要があり、アーチ//になりますconfigs /ディレクトリ。 また、Linuxカーネルで利用できる良い本があります。あなたはそれらをgoogleして読むこともできます。

新しいカーネルで

1.Ifを以下の世話をする必要が移植カーネルは、あなたが思うような唯一のデバイス固有の変更を追加する必要があり、その後移植するハードウェアで使用されたSoCのサポートがすでにありますが新しいカーネルバージョンをsamsung galaxy s3に移植したい場合は、exynosサポートを持つリファレンスアンドロイドカーネルを使用して、samsung galaxy s3のサポートを追加するだけで変更する必要があります。

s3をサポートしている古いカーネルを参照する必要があるので、s3のサポートを追加するために追加されたパッチを調べて、それらのパッチを新しいカーネルに移植することができます。あなたが唯一のポートプラットフォームまでに必要な最低限の変更は、ご使用のプラットフォーム上でコンパイルしてフラッシュすることができます

実験

まず、出力を観察し、すべてが次の変更のために行くよりも、正常に見える場合はそうでないにしてみてください問題を解決してください。

ありがとう、 Devarsh

関連する問題