• 
    

    
    

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

      基于Android的BSP移植自動適配技術

      2014-06-07 05:53:26楊海民
      計算機工程 2014年11期
      關鍵詞:源碼開發(fā)板驅動程序

      楊海民,張 濤,趙 敏,尤 峻,董 民

      (解放軍理工大學a.指揮信息系統(tǒng)學院;b.通信工程學院,南京210007)

      基于Android的BSP移植自動適配技術

      楊海民a,張 濤a,趙 敏a,尤 峻a,董 民b

      (解放軍理工大學a.指揮信息系統(tǒng)學院;b.通信工程學院,南京210007)

      當前Android的板級支持包(BSP)移植開發(fā)人員不僅需要熟悉具體型號芯片的開發(fā)手冊,還需要調整部分驅動封裝代碼,工作效率較低。為此,通過對Android Linux內核源代碼進行重構,設計并實現(xiàn)一種基于源代碼分類管理的Andriod BSP移植管理框架。形式化定義Android Linux內核源碼重構規(guī)則,基于該規(guī)則對Android Linux內核源碼按照原生Linux內核代碼、Google Android驅動程序、廠商板硬件相關BSP代碼3類進行管理,設計Android BSP移植自動適配工具,實現(xiàn)面向特定開發(fā)板和特定Linux內核版本的Android Linux內核源代碼自動生成。測試結果表明,該管理框架能夠提高BSP移植開發(fā)人員移植和升級開發(fā)板Android Linux內核的工作效率。

      Linux內核;Android Linux內核源碼;組織結構;重構;板級支持包移植;自動適配技術

      1 概述

      Google Android自2007年11月首次發(fā)布以來,已經歷了數(shù)個版本更新,市場上采用該系統(tǒng)的移動設備數(shù)量也在飛速增長。為便于系統(tǒng)的移植和硬件適配,Google Android系統(tǒng)被設計成分層的架構,自底向上分別是Linux內核層、本地層(Native)/運行時層 (Runtime)、框架層(Framework)和應用層(Application)[1]。Android系統(tǒng)運行的基礎是Linux,所有的硬件驅動程序、設備管理和進程間通信機制都在底層Linux內核中實現(xiàn)。為了在不同架構、不同配置的硬件設備上移植運行Android系統(tǒng),針對底層Linux的移植是最重要的步驟。目前,Android系統(tǒng)Linux內核源碼移植適配主要采用人工對比分析的方式,內核移植和升級過程中的主要技術難點在于:(1)同一個Linux內核版本需要適配不同處理器和開發(fā)板,需要將不同板級支持包(Board Support Package,BSP)(主要是廠商的特定硬件的驅動程序)移植到同一版本Linux原生內核中;(2)將不同的Linux內核版本移植到同一個開發(fā)板或硬件設備上,需要將不同版本Linux內核源碼和同一BSP源碼進行移植合并。當前Android Linux內核移植和版本升級工作費時費力,工作效率不高,亟待研究一種高效的Android BSP源碼移植適配技術。

      針對上述Android Linux內核移植過程中的問題,本文形式化定義一套內核代碼重構規(guī)則,對Android Linux內核源碼進行重構,設計一種基于源碼分類管理的BSP移植框架,實現(xiàn)一個Android BSP移植自動適配工具,從而提高BSP移植開發(fā)人員代碼管理維護和升級工作效率,減少BSP移植的難度和工作量。

      2 相關工作與研究現(xiàn)狀

      近年來,隨著以智能手機和平板電腦為代表的移動互聯(lián)網產業(yè)的迅猛發(fā)展,支撐智能移動設備開發(fā)的關鍵技術——嵌入式系統(tǒng)BSP移植開發(fā)方法在工業(yè)界和學術界受到的關注越來越多。一直以來,針對嵌入式系統(tǒng)BSP移植的研究內容主要包括移植的操作系統(tǒng)與硬件設備的通信協(xié)議研究,以及BSP移植適配軟硬件協(xié)同技術研究與工具實現(xiàn)。

      文獻[2]提出ProGram正則語言用來描述硬件和軟件間的通信協(xié)議,該協(xié)議可以被編譯成實際軟件代碼,但是該協(xié)議不易在Android Linux操作系統(tǒng)環(huán)境中整合使用。文獻[3]引入了一種通過事件驅動狀態(tài)機來描述硬件設備行為、通信協(xié)議、規(guī)則聲明和代碼生成的設備驅動開發(fā)方法,解決了嵌入式系統(tǒng)BSP設備驅動的移植性問題,但是沒有涉及到處理器各控制器的抽象,此外需要使用一系列的外部工具,并且規(guī)則過于復雜,在本文討論的Android BSP移植適配環(huán)境下可適用度較低。

      目前基于嵌入式系統(tǒng)的BSP移植工作主要集中在VxWorks[4-6]和Windows CE[7-8]系統(tǒng)上,基于嵌入式Linux系統(tǒng)的BSP移植工作較少。另外,基于嵌入式Linux系統(tǒng)的BSP移植技術主要是解決硬件初始化、操作系統(tǒng)引導加載、硬件設備驅動等問題。文獻[9]著眼于解決這些問題,在進行比較的基礎上提出了比較完整的BSP解決思路,深入分析和比較了BSP的硬件初始化、引導代碼設計、驅動程序框架結構和設計思路等。文獻[10]分析比較了BSP技術和PC機的BIOS技術的特點,提出了BSP的工作職責,并詳細介紹描述了嵌入式Linux的引導技術和設備驅動程序框架。以上文獻都需要進行大量代碼研讀和分析工作,雖然Linux提供了開放的源碼,但其沒有提供完善的開發(fā)文檔支持,另外體系結構的層次劃分、代碼之間的關聯(lián),以及各種實現(xiàn)之間的注冊和調用關系等缺乏指導性文檔。

      3 Android Linux內核源碼組織結構分析

      如圖1所示,Android Linux內核源碼組織結構主要包括3個部分:原生 Linux內核代碼,Google Android驅動程序,廠商板硬件相關BSP代碼。

      圖1 Android Linux內核源碼組織結構

      原生Linux內核是Linux操作系統(tǒng)的內部核心程序,它向外部提供了對設備的核心管理調用[4]。目前Linux內核可以運行在很多的硬件上面,另外Linux每隔兩三個月就會發(fā)布一個新版本,新版本會增加同時也會刪除一些特性。

      Google Android是基于Linux內核的操作系統(tǒng),可以面向很多不同的硬件平臺,其版本也是快速更新的。雖然Google Android版本并沒有與原生Linux內核版本保持一致,但它們是相對應的。Google Android從多個方面對原生Linux內核進行了改動與增強,例如:它基于ARM構架增加的Gold-Fish平臺,以及 YAFFS2(Yet Another Flash File System,2nd edition)Flash文件系統(tǒng)等[11],另外,Google Android還添加了自己特有的驅動程序。

      BSP是用于初始化目標板硬件,給嵌入式操作系統(tǒng)提供板上硬件資源信息,并進一步裝載、引導嵌入式操作系統(tǒng)運行的軟件[12]。它介于底層硬件和上層軟件之間,給上層提供統(tǒng)一接口,同時提供操作系統(tǒng)的驅動和硬件驅動,以及屏蔽各種硬件底層的差異,為操作系統(tǒng)提供了硬件平臺無關性。廠商板級BSP可以分為2類:第1類是與硬件系統(tǒng)結構相關的部分;第2類是各種不同的驅動部分。

      4 Android Linux內核源碼重構規(guī)則

      如圖2所示,Android Linux內核源碼目錄已經考慮到了如何組織是否與架構相關的代碼,arch目錄下存放的是與架構相關的代碼,arch目錄下的每個目錄與一個CPU架構對應;與架構無關的代碼則根據(jù)不同的功能,被存放在不同的目錄下。

      圖2 Android Linux內核源碼目錄

      通過對Android Linux內核源碼目錄結構分析發(fā)現(xiàn),對于組織結構下的原生Linux內核代碼、Google Android驅動程序、廠商板硬件相關BSP代碼,在Android Linux內核源碼目錄中這3個部分是整合到一塊的,并且有的源代碼既可以屬于原生Linux內核部分也可以屬于Google Android驅動程序部分,或者是有的源代碼既可以屬于原生Linux內核部分也可以屬于廠商板硬件相關BSP部分。

      Android Linux內核源碼組織結構的重構過程見圖3。為提高Android Linux中現(xiàn)有源碼的重用度,筆者希望得到如該圖中右圖所示的Android Linux內核源碼組織結構。為此,定義了一套重構規(guī)則:假設重構前后的原生Linux內核代碼、Google Android驅動程序、廠商板硬件相關BSP代碼分別用集合L,L′,A,A′,B,B′表示。

      圖3 Android Linux內核源碼組織結構的重構

      規(guī)則1 (L-L∩A-L∩B)?L′,即重構后的原生Linux內核代碼不包含屬于Google Android驅動程序和廠商板硬件相關BSP代碼部分。

      規(guī)則2 (A-L∩A-A∩B)?A′,即Google Android添加的驅動屬于Google Android驅動程序部分。

      規(guī)則3 (B-L∩B-A∩B)?B′,即廠商添加的BSP屬于廠商板硬件相關BSP代碼部分。

      規(guī)則4 (L∩A-A∩B)?A′,即如果Google Android修改了原生Linux內核代碼,那么整個修改的文件屬于Google Android驅動程序部分。

      規(guī)則5L∩B?B′,即如果廠商修改了原生Linux內核代碼,那么整個修改的文件屬于廠商板硬件相關BSP代碼部分。

      規(guī)則6A∩B?B′,即與廠商開發(fā)板使用的芯片相關的驅動部分屬于廠商板硬件相關BSP代碼部分。

      5 BSP移植自動適配技術及實現(xiàn)

      5.1 重構后的Android Linux內核源碼結構

      利用重構規(guī)則,通過Google Android提供內核與未經過Google Android改動過的Linux內核進行比較,就可以得到屬于Google Android設備驅動程序部分的內容。另外通過根據(jù)各個不同驅動的架構,結合廠商給出的各個板子的使用說明、相關代碼以及相關的芯片使用手冊,找出與硬件相關的部分,這部分內容就屬于廠商板硬件相關BSP部分。當然,目前這樣的工作還只能通過手工完成。重構后的Android Linux內核源碼結構如圖4所示。

      圖4 重構后的Android Linux內核源碼結構

      Config.xml描述了Linux版本適配的Google Android內核的版本,當版本適配時核心的代碼不需要調整,只需調整部分驅動封裝的代碼。Config.xml代碼如下:

      Board.xml描述了廠商板硬件相關BSP代碼的信息,包括板子提供商、CPU架構類型、BSP version和支持的Linux版本列表等基本信息,還包括與架構相關的Arch文件信息和與驅動相關的Driver文件信息,Board.xml中Driver結構與Arch結構大體相同。Arch結構中包含了與Linux版本差異相關的文件和沒有版本差異的文件,Driver結構按<Section>標簽分類展開,每個<Section>標簽下包含與Linux版本差異相關的文件和沒有版本差異的文件。Board.xml中的Arch結構如下:

      5.2 實現(xiàn)過程

      BSP移植管理工具根據(jù)重構后的Android Linux內核源碼結構對原生Linux內核代碼、Google Android驅動程序、廠商板硬件相關BSP代碼進行分類管理。工具可以實現(xiàn)按功能對廠商板硬件相關BSP代碼相關文件進行瀏覽,如果需要增加新的開發(fā)板,在確定Linux內核版本的基礎上只需要對Google Android驅動程序和廠商板硬件相關BSP代碼目錄下的與Linux內核版本差異相關的文件做出相應的修改。在面向特定開發(fā)板和特定Linux內核版本時,其具體流程如圖5所示。

      圖5 BSP移植自動適配技術的實現(xiàn)流程

      6 測試與評價

      6.1 測試環(huán)境設置

      本文使用上文設計并實現(xiàn)的Android BSP移植自動適配工具對Samsung Real6410嵌入式開發(fā)板的Android Linux內核由2.6.28升級到2.6.36,從而驗證了本文提出的框架以及設計的自動適配工具的有效性。在本文的測試實驗中,BSP移植自動適配工具采用Java SWT技術開發(fā),運行在Ubuntu10.04操作系統(tǒng)上。

      6.2 測試實施與結果評價

      本文在進行Real6410嵌入式開發(fā)板Android Linux內核源碼升級的BSP移植自動適配主要采用了如下的步驟(圖6所示是實驗過程中驅動參數(shù)設定界面截圖):

      (1)開發(fā)板原始Linux內核源碼分類和重構:該型號開發(fā)板廠商提供的Linux內核源碼為2.6.28,首先需要使用本文提出的規(guī)則對其代碼進行分類和重構,拆分成原生Linux內核代碼、Google Android驅動程序、廠商板硬件相關BSP代碼。

      (2)開發(fā)板原始Linux內核源碼XML描述文件生成:使用本文定義的規(guī)則生成對該型號開發(fā)板可以適配的Linux內核版本描述的config.xml文件和對重構后的廠商BSP代碼結構描述的Board.xml文件。

      (3)Linux內核升級中的BSP移植自動適配:使用本文開發(fā)的BSP移植自動適配工具進行開發(fā)板Linux內核源代碼升級。首先選定目標升級內核版本,其次指定目標Linux內核源代碼存放目錄,工具會自動配置xml文件并生成目標內核源碼。

      (4)新的Linux內核源碼編譯并燒寫開發(fā)板:對生成的目標Linux內核源碼進行交叉編譯,并燒寫到開發(fā)板進行測試。

      圖6 驅動參數(shù)定義

      通過上述的測試驗證實驗可以看出,與目前學術界和工業(yè)界所普遍采用的移動設備Linux內核的BSP移植適配方法相比,本文所提出的移植框架和工具可簡化Linux內核的BSP移植適配工作流程,可大幅提高BSP移植適配的工作效率。

      7 結束語

      本文設計并實現(xiàn)一種基于源代碼分類管理的Andriod BSP移植管理框架,一定程度上解決了Linux未提供完善開發(fā)文檔支持和Linux體系結構的層次劃分、代碼之間的關聯(lián),以及各種實現(xiàn)之間的注冊和調用關系等缺乏指導性文檔問題。測試結果表明,本文設計的框架和工具可有效提高BSP移植開發(fā)人員移植和升級開發(fā)板Android Linux內核的工作效率。下一步將研究如何減少Android Linux內核源碼重構的工作量。

      [1] Google.Android Home Page[EB/OL].[2013-11-10].http://www.android.com.

      [2] O'Nils M,Jantseh A.Device Driver and DMA Controller Synthesis from HW/SW Communication Protocol Specifications[J].Design Automation for Embedded Systems, 2001,6(2):177-205.

      [3] Wang Shaojie,Malik S,Bergamaschi R A.Modeling and Integration of Peripheral Devices in Embedded Systems[C]//Proceedings of Conference on Design,Automation and Test in Europe.Munich,Germany:IEEE Press,2003: 136-141.

      [4] 隋 霞,許錄平.基于VxWorks的BSP技術分析[J].微計算機信息,2006,22(8-2):86-88.

      [5] 李 永,孫士明,王愛國.VxWorks操作系統(tǒng)在OMAP平臺上的移植[J].微計算機應用,2010,31(8):50-59.

      [6] 陳學兵,沈毅南,張振華.VxWorks5.5在龍芯2號處理器的移植和性能分析[J].計算機測量與控制, 2012,20(9):2542-2545.

      [7] 庫少平,方 俊.基于S3C2410的Windows CE 5.0 BSP移植[J].微計算機信息,2008,24(2-2):116-118.

      [8] 韓德強,劉立哲,劉 濤,等.基于 OMAP3530的Windows Embedded Compact 7 BSP的開發(fā)與移植[J].電子技術應用,2012,38(2):14-17.

      [9] 丁曉波.基于嵌入式Linux系統(tǒng)的BSP技術研究[D].成都:電子科技大學,2004.

      [10] 康涌泉.嵌入式LINUX開發(fā)平臺BSP技術的研究與實現(xiàn)[D].成都:電子科技大學,2006.

      [11] 楊豐盛.Android技術內幕·系統(tǒng)卷[M].北京:機械工業(yè)出版社,2011.

      [12] Yaghmour K.Building Embedded Linux System[M].[S.l.]:O'Reilly Press,2003.

      編輯 金胡考

      BSP Transplantation Automatically Adapting Technology Based on Android

      YANG Haimina,ZHANG Taoa,ZHAO Mina,YOU Juna,DONG Minb
      (a.Institute of Command Information System;b.Institute of Communication Engineering, PLA University of Science and Technology,Nanjing 210007,China)

      Considering the fact that,Android Board Support Package(BSP)transplantation personnel not only needs to be familiar with the specific model chip development manual over again,but also needs to adjust the package code of some parts of the drivers and other issues,this paper reconstructs Android Linux source code to design and implement a framework of Android BSP transplantation based on the classified management of source code.The framework defines Android Linux kernel source code reconstruction rules.Based on the rules,it manages Android Linux kernel source code in accordance with the native Linux kernel code,Google Android drivers and BSP code associated with manufacturer board.In addition,an Android BSP transplantation automatic adaptation tool is designed which implements the automatic constitution of Android Linux kernel source code.Test result proves that the framework can significantly improve work efficiency of transplanting and upgrading board Android Linux kernel.

      Linux kernel;Android Linux kernel source code;organizational structure;reconstruction;Board Support Package(BSP)transplantation;automatically adapting technology

      1000-3428(2014)11-0245-05

      A

      TP302

      10.3969/j.issn.1000-3428.2014.11.049

      國家科技重大專項基金資助項目“新一代寬帶無線移動通信網”(2011ZX03006-003)。

      楊海民(1990-),男,碩士研究生,主研方向:嵌入式系統(tǒng),信息安全;張 濤,教授;趙 敏、尤 峻、董 民,講師。

      2013-10-28

      2013-12-29E-mail:15150598706@163.com

      中文引用格式:楊海民,張 濤,趙 敏,等.基于Android的BSP移植自動適配技術[J].計算機工程,2014, 40(11):245-249.

      英文引用格式:Yang Haimin,Zhang Tao,Zhao Min,et al.BSP Transplantation Automatically Adapting Technology Based on Android[J].Computer Engineering,2014,40(11):245-249.

      猜你喜歡
      源碼開發(fā)板驅動程序
      基于網頁源碼結構理解的自適應爬蟲代碼生成方法
      計算機應用(2023年6期)2023-07-03 14:11:56
      基于圖神經網絡的軟件源碼漏洞檢測方法
      計算機時代(2023年6期)2023-06-15 17:49:09
      企業(yè)如何保護源碼
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      淺析單片機開發(fā)板的設計與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      基于數(shù)據(jù)結構教輔系統(tǒng)的實驗課程改革
      計算機教育(2016年4期)2016-05-20 02:36:05
      Mouser為您呈上開發(fā)關鍵之STMicroelectronics Nucleo開發(fā)板
      Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
      驅動程序更新與推薦
      驅動程序更新與推薦
      平罗县| 宜黄县| 孝昌县| 涟源市| 香河县| 栾城县| 衡阳市| 房山区| 芮城县| 囊谦县| 邳州市| 平邑县| 收藏| 纳雍县| 定边县| 邹城市| 德惠市| 翼城县| 台州市| 兖州市| 西峡县| 方山县| 太原市| 玉林市| 常熟市| 思茅市| 名山县| 鄂温| 绍兴县| 隆回县| 三原县| 泗洪县| 彭州市| 青阳县| 泸西县| 永城市| 遂宁市| 凯里市| 新野县| 佛山市| 濮阳市|