android系統移植(一) 總述

來源:互聯網
上載者:User

一、先說明一下平台要求

平台硬體要求

•RAM: 512MB•FLASH:256MB•CPU:    ARM平台指令集要求   ARM9 Family以上,ARMv5以上指令集,   mips平台指令集要求   MIPS32 revision 2 - Little-Endian, O32

軟體需求•Linux2.6以上版本,目前froyo(v2.2)對應於linux2.6.32 - linux2.6.35版本,最好是使用android官方網可以下載到的代碼【目前linux2.6.23官方網下不了,最低也是linux2.6.25】•Android源碼每個android版本對應不同的linux版本android 2.1 ----- linux 2.6.29android 2.2 ----- linux 2.6.32

android 2.3 ----- linux 2.6.35

二、移植主要四大模組

•1、bootload運行起來,無論使用u-boot還是fastboot,主要是關於flash分區問題•2、linux kernel 主要涉及到android driver層驅動代碼•3、android 系統移植•4、應用程式移植 【後面則詳細講解各個模組的移植過程】

1、Bootload•一般使用u-boot或者fastboot,主要的工作就是flash分區問題,一般劃分為如下幾個分區:1、fastboot      【快速啟動,裸板啟動區】2、recovery     【系統復原分區】      recovery就好比外套,fastboot就好比內褲3、kernel         【linux核心分區】4、system       【android核心系統磁碟分割】5、userdata    【使用者資料分區】6、factorydata【工廠資料分區】

2、linux kernel 移植由於android系統對於linux kernel的限制,首先是要選定合適的kernel版本,然後剩下的工作就是整個一個全新的kernel代碼,系統移植有三份kernel代碼需要整合•1、機頂盒廠商提供的linux源碼,包含有針對平台的驅動代碼及修改•2、官方網站下載的linux源碼,與廠商的版本可能有所不同•3、增加了android linux driver的源碼,這部分已經從linux kernel中分離開來,需要單獨移植  所以首要的問題是將三份統一到一起,目標是支援  廠商驅動,支援android驅動以及更新到一定  linux核心版本(android driver +sdk driver + linux kernel )  這部分工作需要深入到linux kernel driver層代碼,一定的  技術功底+細心

Kernel移植要點•1、儘可能將硬體平台相關的代碼從舊版移植到新版本•2、針對硬體平台相關的代碼,以舊版本為主,畢竟舊版的是可以正常啟動並執行版本,•3、非硬體平台相關代碼盡量使用新版本•4、若遇到不知如何處理問題,先跳過,記錄下該檔案及修改點,這部分需要多參考部份原碼進行移植•5、對於配置.config檔案,需要根據相關功能進行修改及配置,可以從模擬器上拿到config.gz檔案解開即可•6、編譯及測式,採用nfs掛載根檔案系統,一般遇到kernel panic錯誤時,開啟kernel debug,printk加列印,或者disable此功能進行調試

3、android啟動步驟Android從Linux系統啟動有4個步驟;1、 init進程啟動 (system\core\init\中的main函數)    init進程,它是一個由核心啟動的使用者級進程。核心自行啟動(已經被載入記憶體,開始運行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動一個使用者級程式init的方式,完成引導進程,此後android將接管所有工作,這裡涉及到兩個指令檔:init.rc 及 init.xxx.rc【arch】2、 Native服務啟動    Servicemanager和zygote進程就奠定了Android的基礎。Zygote這個進程起來才會建立起真正的AndroidRunspace,主要是Zytote建立JAVA 虛擬機器,裝載classes等   【受精卵,典型的C/S結構,請求生產,fork子進程,ok,出產品完成】3、 System Server服務迴圈架構     Android服務啟動不停的通過Zygote fork新的進程,並建立了一大堆服務,並add Service到service Manager,Android的所有服務迴圈架構都是建立SystemServer@(SystemServer.java)上 4、 Home啟動   啟動完所有的Android服務後,然後啟動第一個home應用程式,即第一個啟動HomeActivity 應用程式4、應用程式移植•不同的android版本差異性•不同的sdk api函數差異性•只要搞定以上兩點就可以寫出完全移植於不同平台的應用程式 【*.apk 應用程式】 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.