• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      面向S5PV210嵌入式平臺的Android系統(tǒng)移植與優(yōu)化的研究

      2016-10-17 09:05:09莫太平周園園趙翔翔
      電視技術 2016年9期
      關鍵詞:內核應用程序嵌入式

      莫太平,周園園,趙翔翔

      (桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)

      ?

      面向S5PV210嵌入式平臺的Android系統(tǒng)移植與優(yōu)化的研究

      莫太平,周園園,趙翔翔

      (桂林電子科技大學 電子工程與自動化學院,廣西 桂林541004)

      針對Android系統(tǒng)的不依賴設備甚至平臺的特質,結合目前工業(yè)控制領域對Android系統(tǒng)移植啟動速度的需求,介紹了在S5PV210嵌入式平臺上進行Android系統(tǒng)移植和優(yōu)化的方法,通過實例具體闡述了內核和Android文件系統(tǒng)的移植過程,并在S5PV210平臺上成功移植了Android系統(tǒng),而且從啟動服務、應用程序和預加載類等方面對Android系統(tǒng)進行了啟動優(yōu)化。實驗數(shù)據證明,Android系統(tǒng)在S5PV210平臺上的啟動速度明顯加快。

      S5PV210嵌入式平臺;Android系統(tǒng);移植;優(yōu)化

      隨著嵌入式開放平臺的廣泛應用,Android系統(tǒng)憑借系統(tǒng)自身所具備的代碼開源、系統(tǒng)可移植、硬件豐富、兼容性好、性能優(yōu)越及其用戶界面友好等特點決定了其使用范圍將不斷擴大,并給移動互聯(lián)網、工業(yè)控制、軟件開發(fā)等行業(yè)帶來新的機遇和挑戰(zhàn)。一方面,將Android系統(tǒng)移植到嵌入式平臺上的研究還處于初始階段,又因嵌入式平臺使開放性移植系統(tǒng)變得更加困難。另一方面,因Android系統(tǒng)底層是基于Linux內核的復雜的多層結構,啟動過程就需要加載大量的資源,初始化Runtime就會占據大量時間,因此,啟動速度異常緩慢,從而影響用戶的體驗,而且在工業(yè)控制領域這一現(xiàn)象變得更加明顯。

      S5PV210是Samsung推出的一款基于ARM Cortex-A8核心的應用處理器,采用ARM V7指令集,主頻可達1 GHz,能夠實現(xiàn)每秒兩億條指令集的高性能運算能力,適用于工控、通信、手持設備等領域,典型應用有監(jiān)控設備、人機界面、視頻電話及Pda等。Android系統(tǒng)能夠在S5PV210平臺上良好地運行,使其具備Android系統(tǒng)移植的硬件基礎。又因Android系統(tǒng)提供了ARM的架構,移植到ARM上就具備了理論支持。

      針對上述問題及S5PV210平臺硬件環(huán)境的支持,本文主要研究在S5PV210平臺上移植Android系統(tǒng),并對Android系統(tǒng)的啟動進行優(yōu)化。

      1 Android系統(tǒng)架構

      Android系統(tǒng)是有Google公司推出的以移動互聯(lián)網業(yè)務為主的智能終端平臺,由Linux操作系統(tǒng)、中間件、用戶界面及應用軟件等部分組成。其Android系統(tǒng)核心架構從上到下分為4層:Linux Kernel,Library+Android Runtime,Application Framework,Applications,具體如圖1所示。

      1)Linux Kernel

      Linux內核層,主要由內核及各種設備驅動組成。Android內核早期使用的是Linux 2.6,后來更新到Linux 3.0及其以上版本。Linux內核提供了系統(tǒng)的核心服務[1]:安全機制、網絡堆棧、進程及內存管理等。Linux內核是一個抽象層,連接著硬件和軟件,所以對于Android應用開發(fā)人員來說,要把主要精力放在軟件實現(xiàn)上,而不用關心底層的具體細節(jié)。

      圖 1 Android系統(tǒng)架構

      2)Android Runtime

      Android運行時,由Dalvik虛擬機及Android核心庫集組成[2]。Java語言的核心庫所具有的功能,Android核心庫集絕大部分都有提供,主要用于控制底層的設備和驅動,實現(xiàn)底層與上層的連接。Android 應用的運行由Dalvik虛擬機負責,每個應用對應一個Dalvik線程。不同于一般的JVM,Dalvik虛擬機運行專有的.dex文件,不但可以提高運行效率,而且在性能上又有所優(yōu)化。另外,常規(guī)的JVM是基于棧的,而Dalvik虛擬機是基于寄存器實現(xiàn)的,這樣的虛擬機在性能上會有更好的表現(xiàn),比較適合應用在移動智能設備上。

      3)Library

      函數(shù)庫,含有一套C/C++庫集,能夠被不同的組件使用。Android應用開發(fā)人員可以通過Application Framework來調用這套C/C++庫集。其中的核心庫主要有SQLite、系統(tǒng)C庫、Surface Manager、媒體庫、LibWebCore、SGL、3D library、Free Type等。

      4)Application Framework

      應用程序框架層,提供了大量的API,供Android應用開發(fā)者調用,如View、Button、TextView等UI組件。另外,應用程序框架層還提供了一系列的本地服務和Android系統(tǒng)服務。應用程序框架是應用程序開發(fā)的基礎,該框架優(yōu)化了組件的復用性,當按照框架的規(guī)定發(fā)布應用程序功能模塊之后,其他的應用程序便可以調用此發(fā)布模塊。

      5)Applications

      應用程序層,Android系統(tǒng)的許多核心應用程序分布在此層,如電子郵件、日歷、地圖、SMS、Web瀏覽器、聯(lián)系人和開發(fā)者基于SDK開發(fā)的應用等。該層的應用程序是用Java編寫的,運行于Dalvik虛擬機中。

      通過詳細分析Android的分層框架這一結構,才能使Android做系統(tǒng)移植的開發(fā)一目了然。同時,各層間的關聯(lián)性很小,從而系統(tǒng)的穩(wěn)定性及可移植性得到有效提高,維護修改所付出的代價相對較少。

      2 Android內核移植

      將一個實時內核運行在某個微處理器或微控制器上即是移植,將不同平臺和不同編譯環(huán)境的程序代碼經過修改后轉移到所需系統(tǒng)中運行的實現(xiàn)過程即為移植過程。本文是將Android系統(tǒng)移植到S5PV210 ARM平臺上,使Android內核能夠在S5PV210 ARM核心平臺上運行起來。本文對Android內核進行移植需要做的工作主要有修改平臺支持和驅動移植。其中,修改平臺支持是根據具體的環(huán)境修改與硬件平臺相關的內核源碼,包括添加對ARM的支持,修改平臺輸入時鐘和機器碼。而驅動移植主要是Android系統(tǒng)必要的驅動移植,包括nandflash驅動、yaffs2文件系統(tǒng)以及Android專有驅動[3]。當然也可以根據具體需要另外移植一些需要的驅動,如LCD顯示驅動、網卡驅動、觸摸屏驅動等。

      2.1添加對ARM的支持

      只有讓內核確定所選擇的架構,Android系統(tǒng)才能使用正確的編譯方式對內核進行編譯。因此,需要在內核頂層Makefile中修改設置編譯器(CROSS_COMPILE)和指定目標平臺(ARCH):

      ARCH?= arm

      CROSS_COMPILE ? = arm-linux-

      2.2修改平臺輸入時鐘

      平臺輸入時鐘頻率由時鐘控制邏輯單元決定,不同硬件平臺有不同的輸入時鐘。因此,Android內核源碼中的時鐘頻率必需與S5PV210的工作頻率一致。關于時鐘頻率的內核源碼在Android內核/arch/arm/mach-s5pv210目錄下的板級文件mach-smdk210中[4]。mach-smdk210是內核提供的,在其基礎上修改即可。也可以參考mach-smdk210創(chuàng)建自己的板級文件,然后通過修改makefile和config配置選擇自己的板級文件。因S5PV210使用的時鐘為24 MHz,在smdkv210_map_io(void)函數(shù)里面設置s3c24XX_init_clocks(24000000)。

      2.3修改機器碼

      在目標機上使用的bootloader中設定了機器碼為3466。內核的機器碼需要與bootloader中設置的機器碼保持一致,否則開機啟動時會提示“找不到CPU類型的錯誤”。內核中的機器碼保存在/arch/arm/tools/mach-types文件中,并在/arch/arm/mach-s5pv210/mach-smdk210.c文件中通過代碼MACHINE_START(SMDKV210,"SMDKV210")調用[5]。所以要在mach-types中找到關鍵字SMDKV210 所在那一行,然后將后面的機器碼改成與bootloader對應的機器碼。

      2.4驅動移植

      在Android內核中已經存在yaffs2文件系統(tǒng)和Android特有驅動[6],只需要在配置里選擇即可[7]。yaffs2文件系統(tǒng)對應/fs/yaffs2文件夾,Android特有驅動(主要包括binder 驅動、log記錄驅動、lowmem kill驅動等)在內核目錄driver/staging/Android/下。

      nandflash驅動已經集成到Android內核源碼當中,以s5pv210-nand命名注冊為平臺驅動,對應文件為drivers/mtd/nand/s3c_nand.c。使用時需要添加硬件資源信息和分區(qū)信息,并在板級文件mach-smdk210將nandflash驅動注冊為平臺設備s3c_device_nand的平臺驅動。首先,在smdk210_machine_init()函數(shù)中通過platform_add_devices()函數(shù)注冊s3c_device_nand為平臺設備。然后,在smdkv210_map_io()函數(shù)里設置s5pv210-nand為s3c_device_nand的平臺驅動為s3c_device_nand.name = "s5pv210-nand"。這樣在編譯時,系統(tǒng)通過驅動名可以從設備驅動中找到對應的驅動。最后,在s3c_nand.c中的mtd_partitions3c_partition_info修改nandflash的分區(qū)信息。移植完成后,通過串口打印效果如圖2所示。

      圖2 內核啟動信息(截圖)

      3 Android文件系統(tǒng)的移植

      Android文件系統(tǒng)移植通過編譯文件系統(tǒng)和根文件系統(tǒng)影像制作兩個步驟得到支持S5PV210的系統(tǒng)映像。

      3.1文件系統(tǒng)編譯

      使用命令source build/envsetup.sh初始化環(huán)境變量。lunch命令可以列出平臺編譯選項,此時可以看到之前在定制文件系統(tǒng)時添加的選項并選擇為當前編譯項。Make開始執(zhí)行編譯,由于Android文件系統(tǒng)較大所以編譯時間會較長。

      3.2制作根文件系統(tǒng)影像

      Android文件系統(tǒng)編譯完成之后,會在/out/target/product/board_name/下生成ramdisk.img,system.img,userdata.img這3個鏡像文件和root,system,data等文件夾。其中,ramdisk.img是根文件系統(tǒng),system.img包括主要的包和庫等文件,userdata.img為用戶數(shù)據。而root,system,data這3個文件夾分別對應上述3個img解壓之后的內容。在制作根文件系統(tǒng)方法是將system和data文件夾的內容復制到root文件夾里面的system和data目錄下,然后進行打包。打包是使用mkyaffs2image-128M工具通過命令mkyaffs2image-128M./root root.img將root文件夾下的文件系統(tǒng)內容打包成root.img鏡像。將root.img 鏡像和內核鏡像下載到S5PV210中就可以運行起Android系統(tǒng)了,效果如圖3所示。

      圖3 系統(tǒng)運行效果(截圖)

      4 Android系統(tǒng)的啟動優(yōu)化

      開機速度慢是智能系統(tǒng)普遍存在的一個問題,Android系統(tǒng)同樣如此。Android系統(tǒng)在手機移動平臺上使用的時候,由于手機開關機并不頻繁,開機速度影響不大。但當Android系統(tǒng)要移植到其他非移動平臺上時,由于其相對頻繁的開關機頻率,開機速度將成為影響用戶體驗的一個重要因素。所以此時對Android系統(tǒng)的啟動是非常必要的。

      整個系統(tǒng)的啟動流程,包括Bootloader啟動、內核啟動,根文件系統(tǒng)啟動3部分。其中,從Bootloader啟動到內核完全啟動只用2~4 s,沒有太大優(yōu)化空間。文件系統(tǒng)啟動是整個啟動過程占時最長的階段,包括啟動服務、預加載類和掃描應用程序包等環(huán)節(jié)。

      本文從啟動服務、預加載類、應用程序3方面對Android系進行啟動優(yōu)化,以求達到理想的優(yōu)化效果。

      4.1裁剪啟動服務

      Android系統(tǒng)的服務包括本地服務和Android系統(tǒng)服務兩部分。這些服務多種多樣,但并不是所有的服務對于系統(tǒng)的運行都至關重要。在不同硬件環(huán)境下,Android系統(tǒng)對于服務的需求也將不同。這些服務將在系統(tǒng)運行時占用大量資源,增加啟動時間。因此,針對不同的應用環(huán)境需要根據需求裁剪服務。

      本地服務是通過init解析執(zhí)行init.rc腳本啟動的[8]。Init.rc文件中有調用本地服務的命令,init通過這些命令啟動對應的服務。因此,要對本地服務進行裁剪,只需要將調用服務的命令注釋掉或刪除即可。具體方法是在/system/core/rootdir目錄下找到init.rc,在文件中找到service開始的程序段,注釋掉或刪除要裁剪的服務對應的程序段。

      Android系統(tǒng)服務運行在systemserver進程中,通過SystemServer.java中的ServiceManager.addService()方法添加,將/frameworks/base/services/java/com/android/server/SystemServer.java中添加服務的程序段注釋掉或刪除就可以達到裁剪Android系統(tǒng)服務的目的。

      本地服務中Android系統(tǒng)必不可少的關鍵服務有5個,包括Zygote,servicemannager,media,vold和neted。只要保留這5個服務就能順利啟動Android系統(tǒng)。而Android系統(tǒng)服務對系統(tǒng)服務的應用性較強,要保留較多服務。

      4.2應用程序裁剪

      系統(tǒng)啟動時,Package Manager服務會解析(/system/framework,/system/app,/data/app,/data/app-private)這4個文件夾中所有的應用程序apk包來獲取需要啟動的應用程序表。而無用的應用程序apk包將會增加Package Manager服務的掃描時間,使系統(tǒng)啟動變慢。

      應用程序的功能明確,關聯(lián)相對較少,所以其裁剪方法也比較簡單:刪除鏡像中應用程序的apk包。本文中保留Launcher2.apk和SettingsProvider.apk兩個應用即可。Launcher2.apk用于提供用戶界面,保證系統(tǒng)能進入用戶待機狀態(tài)。SettingsProvider.apk是對Android系統(tǒng)進行設定的應用程序,它通過調用系統(tǒng)服務來完成Android各種狀態(tài)的設置。若沒有這個應用程序,將會缺少用戶對系統(tǒng)的控制。

      4.3裁剪預加載類

      預加載類是Android系統(tǒng)啟動中耗時最多的環(huán)節(jié)之一,在Zygote服務啟動過程中通過preloadClasses()讀取/frameworks/base/preloaded-classes文件中的預加載列表來實現(xiàn)。其目的是通過預加載應用程序啟動需要的類來提高應用程序的啟動速度。但Android系統(tǒng)中預加載類多達一千多個,需要消耗過多的時間。預加載類分為兩種類型,一種是Android相關的類,另一種是Java基礎類。而Android相關的類是構建在Java基礎類之上的。預加載類的優(yōu)化方法是將Android相關的類全部去掉,只留下Java基礎類。這樣增加了Android系統(tǒng)的啟動速度,同時對應用程序啟動影響也不大。

      5 測試運行

      在S5PV210 ARM平臺上對啟動優(yōu)化方案進行運行和測試,完成Android系統(tǒng)移植與優(yōu)化后系統(tǒng)運行效果如圖4所示。并通過表1列出同正常流程啟動的數(shù)據進行對比分析,發(fā)現(xiàn)優(yōu)化后系統(tǒng)啟動時間從原來的平均42.04 s減少到了22.6 s。啟動優(yōu)化后,Android系統(tǒng)啟動速度明顯加快,優(yōu)化效果明顯。

      圖4 系統(tǒng)運行效果(截圖)

      s

      分類12345平均優(yōu)化前42.641.742.341.642.042.04優(yōu)化后22.922.622.322.722.522.6

      6 小結

      Android系統(tǒng)的開放性決定了Android系統(tǒng)要運行在不同的硬件平臺上,使得掌握Android系統(tǒng)的移植成為開發(fā)的基礎。另外,Android系統(tǒng)啟動時間過長嚴重影響了用戶體驗。根據這一研究背景,結合工業(yè)控制領域的應用需求,本文主要研究了在S5PV210平臺上移植Android系統(tǒng),并對Android系統(tǒng)進行啟動優(yōu)化,通過實驗數(shù)據分析,得出S5PV210平臺上運行的Android系統(tǒng)啟動時間得以優(yōu)化。

      [1]宋小倩,周東升.基于Android平臺的應用開發(fā)研究[J].軟件導刊,2011(2):104-106.

      [2]吳昊,張哲.基于國產自主CPU的SEP0611平臺中Dalvik虛擬機的移植和優(yōu)化[J].電子器件,2012(3):322-

      326.

      [3]仲元昌,王靖欣,胡江坤,等.Android內核移植及遠程監(jiān)控中的應用[J].重慶理工大學學報(自然科學),2011,25(1):102-106.

      [4]邵艷杰.Android操作系統(tǒng)移植及應用研究[D].長沙:湖南大學,2011.

      [5]柯元旦.Android內核剖析[M].北京:電子工業(yè)出版社,2011.

      [6]郭甲.基于數(shù)字電視平臺的Android定制與優(yōu)化[D].成都:電子科技大學,2012.

      [7]MA W F,WANG J H. Analysis of the Linux 2.6 kernel scheduler[C]//Proc. International Conference on Computer Design and Applications(ICCDA 2010). Qinhuangdao:[s.n.],2010:71-74.

      [8]希凡.Android關鍵服務分析與啟動過程優(yōu)化[D]. 成都:電子科技大學,2012.

      莫太平(1974— ),碩士生導師,副教授,主要研究方向為智能控制與模式識別、嵌入式系統(tǒng)及現(xiàn)場總線等;

      周園園(1988— ),女,碩士生,主研智能信息處理;

      趙翔翔(1991— ),碩士生,主研嵌入式軟件開發(fā)。

      責任編輯:許盈

      Research of transplantation and optimization of Android system based on S5PV210 embedded platform

      MO Taiping, ZHOU Yuanyuan, ZHAO Xiangxiang

      (SchoolofElectronicEngneeringandAutomation,GuilinUniversityofElectrnicandTechnology,GuangxiGuilin541004,China)

      For the characteristic that Android system is not dependent on equipment and even platform, the method of Android transplantation and optimization on embedded platform S5PV210 is introduced in this paper by combining the need for Android system transplantation boot speed at present in the field of the industrial control. Some specific examples are used to describe the transplantation process of kernel and Android file system, and then the Android system is ported to the platform S5PV210 successful. Besides, the method does startup optimization in startup services, application, pre-loaded class etc. on Android system. The experimental data show that the startup speed of the Android system on the S5PV210 platform is significantly accelerated.

      S5PV210 embedded platform; Android system; optimization; transplantation

      TP393

      A

      10.16280/j.videoe.2016.09.009

      國家自然科學基金項目(61263013);廣西教育廳重大項目(201101ZD007);廣西信息科學實驗中心重大項目(20130110);桂林電子科技大學研究生教育創(chuàng)新計劃資助項目(GDYCSZ201475);桂林電子科技大學研究生教育創(chuàng)新計劃資助項目(GDYCSZ201477)

      2016-02-23

      文獻引用格式:莫太平,周園園,趙翔翔. 面向S5PV210嵌入式平臺的Android系統(tǒng)移植與優(yōu)化的研究[J].電視技術,2016,40(9):46-50.

      MO T P,ZHOU Y Y,ZHAO X X. Research of transplantation and optimization of Android system based on S5PV210 embedded platform [J].Video engineering,2016,40(9):46-50.

      猜你喜歡
      內核應用程序嵌入式
      萬物皆可IP的時代,我們當夯實的IP內核是什么?
      強化『高新』內核 打造農業(yè)『硅谷』
      刪除Win10中自帶的應用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      基于嵌入式Linux內核的自恢復設計
      Linux內核mmap保護機制研究
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      關閉應用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      南漳县| 阆中市| 治多县| 若羌县| 麟游县| 永登县| 安岳县| 讷河市| 突泉县| 华坪县| 明水县| 彰化县| 山东省| 桂平市| 柳河县| 黄龙县| 班玛县| 武鸣县| 仙居县| 嘉鱼县| 吐鲁番市| 湛江市| 木里| 敖汉旗| 祁东县| 山东省| 广西| 乐都县| 湘西| 米易县| 东莞市| 洪湖市| 新疆| 临夏县| 剑川县| 宁晋县| 钟山县| 莲花县| 香格里拉县| 蒲江县| 尉犁县|