簡體   English   中英

關於將Android內核從一台設備移植到另一台設備的指南

[英]Guidance regarding Android Kernel Porting from one device to other

我擁有三星Galaxy 3,並希望移植可用於其他Android設備的內核。 我已經准備好所有建築環境。 我也有C語言知識。 我不明白的是移植的方式和涉及的所有內容,應該以哪種方式修改哪些代碼?

如果有人可以幫助我。 這會很棒。

提前致謝。


好,我知道了。 但是真正的問題是我不了解一件事。

為了使其與其他設備兼容,需要在源代碼中進行哪些更改? 有人可以向我解釋嗎?

Idolon提出了一個很好的建議。 從理論上講,那里寫的是真的。 實際上,它涉及更多。 我已經移植Android內核已有幾個月了。 我的目標是在具有自定義I / O的自定義板上安裝自定義S5PV210處理器模塊。 我有三星銀河選項卡和幾個三星android智能手機的源代碼,以及三星評估板(S5PV210 CPU的SMDKV210)的幾個版本(Froyo,Gingerbread)。 僅供參考,S5PC110是近端衍生產品。 這是我發現的。 盡管所有設備驅動程序都應該以非常模塊化的方式構建並且彼此獨立,並且您應該能夠用類似的設備替換它們,但是三星這樣做的方式並非完全如此。 給你一個例子是關於電源管理的。 在許多處理硬件設備的低級驅動程序中,它為其他硬件設備(如電源管理芯片)調用一些特定的例程。 因此,當您在“ make xconfig”或“ make menuconfig”中更改驅動程序的選擇時,它將刪除不需要的源代碼並添加所需的源代碼,但是仍有其他模塊在調用您刪除的低級功能。 在構建時,您會得到大量未解決的外部信息,因為您卸下了電源沒有的硬件管理芯片,但該硬件已在您使用的電源中使用。 我瀏覽了幾個三星的設備源代碼,它們很早就分支了。 它們已經由不同的團隊進行了修改,從一種設備到另一種設備從另一台設備轉到另一台設備將是大量的工作。

這是我成功的方法:我購買了帶有已移植的Android內核(姜餅)的S5PV210評估板。 已清理的所有電源管理和相互依存的問題。 然后,形成一個工作包,我可以更換所需的設備(如果沒有每年100K的設備,您將無法購買),而不會陷入相互依賴的境地。 然后,我什至可以更改LCD分辨率(從800x480到1024x768),觸摸屏,Cell調制解調器等。整個過程只需要一個人(我)一個月就可以完成。

從Galaxytab或其他商用設備開始,使我浪費了數月的頭痛,但沒有得到有用的結果,但我學到了。

我的方法有一個成功的要求。 您必須了解所使用的硬件。 例如,您需要知道您的硬件(芯片組)具有哪種觸摸屏來選擇驅動程序,以及是否已將其連接以將其連接到正確的設備(USB,串行等)。 對於所有其他設備(電源管理芯片,小鍵盤,背光,LCD等),這都是相同的

希望這有助於您了解所涉及的工作以及如何進行。

我也有一段時間在Android移植工作中,我建議采用以下路線:

您需要具備android移植和AOSP源代碼,目錄結構層次結構的基礎知識。 我建議您開始閱讀https://books.google.co.in/books/about/Embedded_Android.html?id=plHsngEACAAJ&hl=zh-CN,並同時將https://source.android.com/devices/index.html引用為好人指出,您也可以使用google android移植相關的小組並成為該小組的成員,如果您遇到問題,很可能以前其他人也可能遇到過類似的問題。

AOSP代碼 :並行地,您需要深入研究android源代碼,例如從https://android.googlesource.com/之類的鏈接中觀察哪些組件放置在源代碼中的什么位置,以前android版本的更新是什么(例如替換了ART) dalvik中的dalvik),在頂層將有通用代碼,硬件/和設備/文件夾中的HAL特定於您的硬件。

內核代碼 :在內核中,您還需要觀察目錄結構,並知道問題所在,例如SoC特定代碼將在arch /目錄中defconfigs(用於選擇內核配置)將在arch // configs /目錄中。 也有適用於linux內核的好書,您可以在Google上搜索並開始閱讀。

在移植內核時,您需要注意以下事項

1.如果在新內核中已經支持用於硬件移植的SoC,那么您只需要添加特定於設備的更改,例如假設您要將新內核版本移植到三星s3,則可以參考android具有exynos支持的內核,然后您只需進行更改即可添加對三星銀河s3的支持。

為此,您需要參考一些支持s3的舊內核,從那里您可以研究已添加的補丁程序,以增加對s3的支持,並將這些補丁程序移植到較新的內核中。

實驗

首先,您只能移植僅需最少的更改,即可啟動平台,在平台上進行編譯和刷新,然后觀察輸出,如果一切都還不錯,則繼續進行下一個更改,否則嘗試解決此問題。

謝謝,Devarsh

您應該查看《 Android平台開發人員指南》的緩存副本以及android-porting谷歌論壇。

還有一篇關於將Android移植到諾基亞N810的古老而有用的文章,它將為您提供有關Android Linux內核移植的一些提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM