《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于gnuboy虛擬機的嵌入式實驗平臺的移植與優化
基于gnuboy虛擬機的嵌入式實驗平臺的移植與優化
摘要: 本文構建了一個基于ARM920T嵌入式Linux的實驗平臺環境, gnuboy作為一種虛擬機,應用到這樣的嵌入式環境中遇到的問題具有一定的代表性,最需要解決的問題是速度問題,針對于此,本文實現了它在所構建的平臺上的移植和一些優化研究。
Abstract:
Key words :

Gnuboy已經實現了i386匯編代碼的一些優化工作,能夠在奔騰機器上運行良好,除此之外,到目前為止,它能夠運行的平臺還很有限。隨著嵌入式系統設計技術的發展,PDA、Smartphone等嵌入式產品的功能不斷地得到擴展,適應用戶的需要, Gnuboy在嵌入式產品中的移植應用非常具有前景。目前Gnuboy在ARM Linux下還沒有得到很好的應用,本文就是在構建的基于ARM920T" title="ARM920T">ARM920T Linux的嵌入式平臺上對gnuboy運用進行的嘗試性工作,同時, Gnuboy作為一種虛擬機技術,本文的工作對研究虛擬機技術在ARM L inux中的應用也具有一定的價值。

  硬件環境

  本實驗測試板采用Motorola公司的MX1 Lite,系統的主要模塊有處理器內核模塊、用戶接口模塊、連接設備模塊等,如圖1所示,下面分別進行介紹。

  

 

  1)處理器內核模塊采用v4T體系結構的ARM920T 內核擁有16K的指令緩存和16K的數據緩存; 外部接口模塊提供了最多6 個片選信號來訪問外部設備,其中連接的12Kx16bits的NOR Flash 經過配置用于系統啟動; SDRAM 控制器提供了對使用32Mx32bits的SDRAM的訪問控制。

  2)用戶接口模塊由于MX1 L ite沒有模擬信號處理模塊,無法直接接收觸摸屏的輸入,所以本系統采用了TI的TSC2301芯片來支持觸摸屏的輸入功能,它與主芯片通過連續外設接口協議連接,它不僅可以接收觸摸屏的輸入,而且它還支持聲音數模轉換和輸入輸出等功能; LCD 控制器用于給外部液晶顯示屏提供顯示數據,LCD采用了Sharp 的20x240 HR - TFT LCD,它支持觸摸屏輸入,分辨率為320x240。

  3)連接設備模塊包含有多媒體卡/數字安全主機控制模塊、內存棒控制器和智能卡接口,以此來連接用于外部存儲的多媒體卡。

  Gnuboy軟件結構和一些工具軟件

  Gnuboy是基于Qt系統的,可從圖2中看出它和整個系統的關系。本文構建的基于ARM920T的嵌入式L inux平臺下采用的是嵌入式系統的QT 版本: QT/Embedded 和Qtop ia(QPE) ,這有助于模擬器的移植。

  

 

  QT/Embedded和Qtopia

  QT/Embedded和Qtopia是著名的QT庫開發商TrollTech開發的基于Framebuffer、面向嵌入式系統的QT版本。它的特點是界面美觀、色彩配比好,使用與QT/Windows和QT/X11 完全一致的AP I接口,許多基于QT的程序可以非常方便地移植到嵌入式系統。Qtopia 包括了全套的個人信息管理PIM,如地址本、日程安排、游戲、配置工具等。QT/Embedded實現了對下層輸入設備的驅動和底層圖形接口以及各基類和AP I,它在編譯后生成函數庫被應用程序調用。Qtopia也是以客戶/服務器的方式,通過消息機制來管理各種應用程序。圖3描述了QT應用程序的執行方式及系統結構,其中X Server是核心。

  

 

  一些工具軟件

  移植前需要在宿主機上建立ARM 的交叉編譯環境,主要用到的開發工具包括三個部分: binutils、gcc、glibc。

  ● Binutils — 用于操作二進制文件的實用程序集合,包括諸如匯編器as、二進制轉換工具( objdump、objcopy) 等這樣的實用程序;

  ● Gcc — GNUC編譯器(C編譯器gcc和C + +編譯器g + + ) ;

  ● Glibc —所有應用程序將鏈接到的C庫。

  可以直接從Internet上下載已經編譯的二進制文件安裝到PC機上,并相應設置比如路徑等這樣一些比較簡單的參數即可使用,但必須保證編譯時所用的函數庫版本與目標板上運行時所使用的函數庫版本的一致。ARM Developer Suite它是全套的實時開發軟件工具包,編譯器生成的代碼密度和執行速度優異,可快速低價地創建ARM結構應用。

  移植和優化

  Gnuboy是一種虛擬機機制,它對具體硬件的操作是通過操作系統(這里是L inux)來進行的,圖4 為它對基于ARMlinux平臺硬件操作的抽象層次。

  

 

  這個抽象層次也適用于在ARM Linux平臺下用C語言編寫的一般虛擬技術應用。越是頂層越是抽象,代碼可移植性就越好;越是底層,越是硬件相關,代碼可移植性就越差,但代碼執行速度越快。這也是一般虛擬機移植和優化思想的體現,提高移植性,多運用抽象的接口,提高速度,多一些直接操作硬件的代碼。

  移植

  Gnuboy在此平臺上的正確運行需要解決中斷、提供Framebuffer支持、數據存儲格式、字符串到64位整數轉換等問題。

  中斷問題

  Gnuboy需要依賴宿主操作系統(這里是L inux)來提供輸入/輸出等基本服務,讓宿主操作系統作為它與硬件設備的中間人,這種游離于硬件通信細節之外的方法具有良好的可移植性,本文要解決的主要是提供對鍵盤輸入和游戲控制終端的中斷響應和處理。

  在本文構建的平臺下,需要編寫相應的鍵盤和游戲控制終端的Linux驅動程序,以模塊方式加載后,在Gnuboy中打開該設備。對應鍵盤處理,在Gnuboy中需要調整相應的鍵盤設置代碼使之與系統一致。 提供Framebuffer支持

  Framebuffer技術提供了一個訪問物理圖形設備的定義良好的接口,本文構建的平臺下采用的是Qt系統的嵌入式版本,它是基于Framebuffer的, Gnuboy要在該平臺下運行,必須提供對Framebuffer的支持。通過訪問/dev/ fb0來取得系統framebuffer中用于顯示圖像的數據和進行處理。在Gnuboy中調用游戲畫面的Framebuffer地址和掃描方法也需要作響應的修改。

  修改Framebuffer地址,也就是獲得游戲畫面的開始地址在內存中的位置。針對采用的LCD 的分辨率, 需要在Gnuboy中計算Framebuffer地址處做出相應修改。對于本平臺中采用的LCD, Gnuboy刷新處理方法是從第一行開始,逐行刷新,同時由于一個像素采用兩個字節,因此在逐行刷新時,每次寫兩個字節。

  數據存儲格式和字符串到64位整數轉換

  在ARM Linux下可配置成大數端或者小數端格式來保存和處理整數數值,在Gnuboy中與數值存儲字節順序有關的代碼需要與之對應。

  Linux明顯缺乏用來把整數字符串轉換為64位整數的函數,如果字符串參數突破32位的極限,就有可能出問題,因此在Gnuboy需要提供字符串到64位整數的的轉換函數。

  設置啟動模擬器路徑和編譯

  在用戶已經選擇好游戲Rom,點擊launch simulator按鈕觸發啟動模擬器,進入游戲功能,因此在Gnuboy代碼中需要獲得rom的絕對路徑,由于QT操作系統無法在代碼中直接運行qtop iagnuboy命令,因此需要給出該可執行文件的絕對路徑。

  源代碼修改好以后,在Makefile中設定交叉編譯器: CC= arm - linux - gcc, CXX = arm - linux - g + +。編譯時要用到針對ARM的函數庫可以把函數庫放在一個自己建的一個目錄,為了讓gcc 在搜索函數庫時到指定的目錄中尋找,可在Makefile的通過- L參數添加存放針對ARM函數庫的目錄。例如QTOP IA L IBS = - L $(QPED IR) / lib。

  經過交叉編譯后把得到的可執行文件qtop iagnuboy和qtop iagnuboyl燒到嵌入式系統中可以運行,然后不足之處是畫面速度有些慢,這正是下面優化要研究的問題。

  Gnuboy在ARM Linux下的優化

  優化概述

  如果說CISC的指導思想之一是為了減輕編譯的負擔,R ISC則向編譯提出了更高的要求,ARM作為一種R ISC體系結構,優化問題顯得非常重要。從圖4 的抽象層次可以知道,對Gnuboy的優化問題,概括來說是對它一些抽象代碼進行硬件相關代碼替代的過程,并且越是底層的代碼,速度越快,這里直接用ARM匯編語言來改寫一些原來的C函數。前面的移植運行結果已經顯示, Gnuboy的圖像顯示較慢。它的函數void lcd refreshline ( )的主要功能是使用已經解碼好的圖像數據來完成游戲畫面的顯示。對它的優化主要是對它里面調用的兩個用C語言所寫函數updatepatp ix ( )和bg scan color ( )函數的優化。

  本文采用了與機器相關優化的優化技術,與機器相關的優化這里主要是寄存器分配問題,一般寄存器分配算法是基于一種稱為圖著色技術的。給定一個無向圖G= (V , E ) ,V 是有限節點的集合,V = { v 1, v 2, ., v n} , E是邊的集合, E = { ( i, j ) | v i∈V , v j∈V , v i和v j相連} , 圖著色問題要求找到一個k盡量小的所有節點的賦值(也稱“完全賦值”) C: V — > {1.k } , 要求在該完全賦值中, 若( i,j ) ∈E , 則C ( v i) ≠C ( vj) 。

  簡化的圖著色技術應用

  針對本文的優化,第一階段是把C函數用偽ARM匯編指令(即用符號寄存器Ui替代真正ARM寄存器的ARM指令)改寫。

  第二階段對符號寄存器U1~Un ( n > 15)畫出相干圖并進行著色,所謂對圖進行著色是指給圖中的每個結點賦予一種顏色,而且所有相鄰的兩個結點都具有不同的顏色。這樣,每種顏色就對應于處理器中的一個實際的物理寄存器,如此著色保證了所有可能發生沖突的符號寄存器都被賦予不同的物理寄存器。

  假設n + 1個符號寄存器的相干圖如圖5 ( a)所示,其中結點是符號寄存器,而結點之間的弧線表示變量的生命周期有重疊,最少需要16種顏色才能避免相連結點顏色有重疊。由于ARM920T只有r0~r14等15個寄存器可用于存儲程序變量,小于16,也就是存在寄存器沖突問題,這個時候就可以通過選擇刪除一個結點(如圖中Un + 1) ,也就是把U6對應的數據存儲到存儲器中,以后再重裝入寄存器來達到對各寄存器進行釋放的目的,見圖5 ( b)所示,虛線圓圈表示符號寄存器U16對應的數據轉存到存儲器中。

  

 

  用上面介紹的方法對updatepatp ix和bg scan color函數進行處理,得到的ARM匯編函數,用它們替換掉gnuboy源代碼中原先的C函數并進行編譯生成可執行文件,可執行文件在構建的測試板上運行良好。下面對上面提到的優化來進行一些測試。

  測試評估

  用CodeWarrior forARM Developer Suite和AXD Debugger軟件測試優化前后函數的運行時間,結果如表1所示。圖著色技術強調實現活躍變量的100%分配,并且代碼需要寄存器數量越多,優化效果越明顯,這從updatapatp ix和bg scan color函數的優化中可以看出(前者代碼較后者復雜,需要存放的臨時變量也多) 。進一步優化gnuboy,可用類似的方法替換源代碼的另外一些影響速度較大的函數。

  

 

  總結

  本文構建了一個基于ARM920T嵌入式Linux" title="嵌入式Linux">嵌入式Linux的實驗平臺環境, gnuboy作為一種虛擬機,應用到這樣的嵌入式環境中遇到的問題具有一定的代表性,最需要解決的問題是速度問題,針對于此,本文實現了它在所構建的平臺上的移植和一些優化研究。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产日韩在线看| 一本色道久久综合亚洲精品高清| 日韩亚洲欧美精品| 免费观看亚洲视频大全| 欧美女主播在线| 欧美四级剧情无删版影片| 亚洲高清不卡| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲日本欧美天堂| 亚洲国产精品第一区二区| 亚洲精品影院在线观看| 亚洲国产一区二区三区a毛片| 亚洲精品日韩欧美| 亚洲三级观看| 亚洲高清电影| 国产欧美一区在线| 一区二区三区产品免费精品久久75| 久久久天天操| 国产精品自拍一区| 国产精品乱人伦一区二区| 亚洲国产另类精品专区| 欧美激情在线有限公司| 久久九九热re6这里有精品| 欧美日韩另类国产亚洲欧美一级| 久热国产精品视频| 国产精品亚洲综合一区在线观看| 久久国产精品一区二区| 麻豆av一区二区三区久久| 亚洲七七久久综合桃花剧情介绍| 玖玖玖免费嫩草在线影院一区| 亚洲电影av| 99国产成+人+综合+亚洲欧美| 亚洲一二三区视频在线观看| 免费在线播放第一区高清av| 国产精品乱码一区二区三区| 亚洲视频欧美在线| 欧美欧美全黄| 欧美日韩三级| 韩国v欧美v日本v亚洲v| 久久综合久久88| 国色天香一区二区| 国产香蕉久久精品综合网| 中文精品99久久国产香蕉| 国产精品免费网站| 国产精品亚洲综合一区在线观看| 日韩系列在线| 久久国内精品自在自线400部| 久久久国产一区二区三区| 亚洲性xxxx| 亚洲美女在线观看| 国产精品女人网站| 久久一日本道色综合久久| 一区二区三区在线视频观看| 亚洲女同精品视频| 亚洲精品精选| 欧美精品一区二区三区在线播放| 久久av一区二区三区漫画| 欧美精品久久99久久在免费线| 久久这里只精品最新地址| 最新国产成人av网站网址麻豆| 亚洲午夜女主播在线直播| 在线免费高清一区二区三区| 欧美成人高清视频| 久久久久国色av免费观看性色| 欧美日本亚洲| 亚洲第一精品电影| 欧美激情一区二区三区不卡| 亚洲精品一区二区三区av| 欧美日韩免费观看一区三区| 国产九九精品| 亚洲欧美另类综合偷拍| 亚洲——在线| 国产精品久久久久久福利一牛影视| 亚洲国产成人一区| 久久尤物视频| 精品盗摄一区二区三区| 欧美在线看片a免费观看| 在线播放日韩专区| 午夜精品影院| 久久蜜臀精品av| 欧美日韩在线一区二区三区| 亚洲香蕉视频| 国产欧美日韩综合精品二区| 欧美成年人在线观看| 亚洲片区在线| 久久久久久久欧美精品| 欧美精品高清视频| 另类欧美日韩国产在线| 欧美激情综合| 亚洲经典自拍| 国产精品成人免费精品自在线观看| 韩国精品在线观看| 亚洲一区二区三区激情| 亚洲免费中文字幕| 国产一区二区黄色| 欧美a级片一区| 欧美激情精品久久久久久蜜臀| 久久久久久网| 欧美精品一区二区三区在线播放| 国产午夜精品全部视频播放| 欧美在线视频免费播放| 一本色道久久88亚洲综合88| 亚洲天堂网站在线观看视频| 国产精品毛片一区二区三区| 蜜桃久久精品乱码一区二区| 欧美日韩亚洲高清| 亚洲精品一区二区在线| 在线亚洲一区观看| 久久精品视频在线播放| 夜夜爽99久久国产综合精品女不卡| 亚洲欧美日本另类| 亚洲精品一品区二品区三品区| 欧美国产精品一区| 黄色在线成人| 久久久久久尹人网香蕉| 欧美一区二区视频网站| 久久久久国产精品一区| 欧美日韩色一区| 久久精品一区蜜桃臀影院| 亚洲午夜精品视频| 国产日韩欧美综合| 在线观看视频日韩| 国产亚洲欧洲一区高清在线观看| 久久激情视频久久| 亚洲欧美日韩一区二区在线| 激情五月婷婷综合| 欧美日韩中文精品| 亚洲天天影视| 国产免费观看久久| 国产精品欧美一区二区三区奶水| 狠狠久久综合婷婷不卡| 91久久精品网| 在线不卡a资源高清| 欧美日韩在线影院| 国产伦精品一区二区三区照片91| 亚洲国产精品精华液2区45| 国产精品视频专区| 精品999在线播放| 欧美日本国产精品| 国产农村妇女毛片精品久久莱园子| 欧美日韩一区在线播放| 欧美一区深夜视频| 牛人盗摄一区二区三区视频| 美女视频黄免费的久久| 欧美日本国产在线| 国产日韩精品久久久| 亚洲一区二区3| 亚洲摸下面视频| 亚洲国产精品久久久久| 篠田优中文在线播放第一区| 欧美日韩精品免费观看视一区二区| 在线不卡中文字幕播放| 狠色狠色综合久久| 国产精品av久久久久久麻豆网| 亚洲欧美日韩国产综合精品二区| 裸体一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 久久99伊人| 国产一区二区三区观看| 亚洲一区二区免费| 国产一区二区三区黄| 嫩草成人www欧美| 一区二区亚洲| 老司机精品视频网站| 亚洲免费成人av电影| 欧美成人亚洲成人日韩成人| 一本色道久久综合亚洲二区三区| 国产精品视频xxx| 合欧美一区二区三区| 欧美精选午夜久久久乱码6080| 国产午夜精品理论片a级大结局| 免费人成网站在线观看欧美高清| 国产欧美日韩在线视频| 国产精品福利片| 国产乱码精品一区二区三区忘忧草| 伊伊综合在线| 久久综合九色综合欧美就去吻| 久久久久久黄| 欧美激情一二三区| 亚洲一区二区在线视频| 国内精品久久久久久久影视蜜臀| 欧美激情在线播放| 免费成人高清在线视频| 国产精品欧美日韩| 夜夜夜精品看看| 一区二区三区四区国产| 欧美日韩天堂| 国产亚洲精品综合一区91| 美女精品在线观看| 欧美一区二区免费观在线| 一区二区三区欧美日韩| 欧美日韩三级在线| 亚洲精品小视频在线观看| 久久精品国产久精国产爱| 亚洲制服丝袜在线| 国产三级欧美三级日产三级99| 欧美高清自拍一区| 久久久水蜜桃| 狠狠色综合播放一区二区| 91久久精品一区二区三区| 国产精品揄拍500视频| 一本大道久久a久久精二百| 久久精品在线视频| 亚洲在线中文字幕| 亚洲黄色片网站| 欧美精品国产一区二区| 亚洲一区二区三区四区在线观看| 久久久亚洲精品一区二区三区| 欧美成人免费在线视频| 国产精品视频自拍| 欧美日韩一区二区三区| 亚洲人精品午夜| 亚洲国产精品久久久久婷婷老年| 久久精品三级| 亚洲国产精品t66y| 麻豆成人精品| 欧美激情第1页| 这里只有精品视频在线| 国产精品日韩在线一区| 亚洲少妇中出一区| 亚洲人成毛片在线播放女女| 久久影院午夜片一区| 欧美日韩在线不卡| 最新国产成人av网站网址麻豆| 亚洲无限av看| 亚洲美女一区| 欧美三级在线播放| 1000精品久久久久久久久| 亚洲欧美在线一区二区| 国产亚洲成av人片在线观看桃| 国产一区在线视频| 久久精品在线观看| 国产精品伦子伦免费视频| 国外成人性视频| 欧美性猛交视频| 一本色道久久综合亚洲二区三区| 欧美极品aⅴ影院| 黄色精品免费| 一区二区三区四区五区在线| 久久精品免费观看| 99视频精品全部免费在线| 一区二区电影免费观看| 午夜精品一区二区三区在线播放| 亚洲在线国产日韩欧美| 亚洲国产精品一区在线观看不卡| 欧美日韩在线观看一区二区三区| 亚洲精品欧洲精品| 欧美激情精品久久久久久蜜臀| 亚洲一区二区三区四区视频| 麻豆久久久9性大片| 国产精品久久久91| 久久免费视频网站| 欧美日韩视频免费播放| 怡红院精品视频在线观看极品| 欧美激情欧美狂野欧美精品| 欧美日韩国内| 久久嫩草精品久久久精品一| 亚洲国产精品久久久| 国产亚洲午夜高清国产拍精品| 一区二区三区免费网站| 伊人色综合久久天天| 亚洲日本成人在线观看| 蜜臀久久99精品久久久画质超高清| 国产女人aaa级久久久级| 久久久国产亚洲精品| 国产伦精品一区二区三区视频黑人| 国产一区二区三区在线免费观看| 性xx色xx综合久久久xx| 浪潮色综合久久天堂| 国产精品日韩欧美一区| 午夜国产欧美理论在线播放| 欧美日韩伦理在线| 欧美jizzhd精品欧美巨大免费| 久久免费国产精品| 国产亚洲欧美色| 欧美激情1区2区| 精品动漫一区| 久久久精品一区二区三区| 久久综合亚州| 久久av一区二区三区漫画| 欧美性事免费在线观看| 国产婷婷色一区二区三区| 国内精品久久久久国产盗摄免费观看完整版| 国产三级精品三级| 91久久精品国产91性色| 欧美黄色aa电影| 国产精品国产三级国产aⅴ入口| 久久久久国内| 亚洲女人小视频在线观看| 国产精品嫩草影院一区二区| 国内视频一区| 中日韩在线视频| 欧美精品精品一区| 欧美一区二区三区在线免费观看| 国产精品网站在线播放| 亚洲精品久久久久久久久久久| 国精品一区二区三区| 欧美色道久久88综合亚洲精品| 亚洲无亚洲人成网站77777| 欧美性猛交xxxx免费看久久久| 亚洲一区不卡| 在线观看视频欧美| 欧美日韩高清在线一区| 欧美三区在线观看| 久久精品国产综合| 在线成人激情黄色| 国产精品久久久久久久7电影| 亚洲美女啪啪| 欧美日韩免费区域视频在线观看| 亚洲激情另类| 国产精品乱子乱xxxx| 欧美在线关看| 在线观看国产精品淫| 老鸭窝91久久精品色噜噜导演| 亚洲激情欧美激情| 欧美日韩三级| 18成人免费观看视频| 亚洲另类黄色| 欧美在线免费视频| 亚洲国产精品传媒在线观看| 亚洲精品少妇30p| 久久综合99re88久久爱| 国产精品欧美精品| 国产亚洲在线观看| 韩国三级在线一区| 美女爽到呻吟久久久久| 亚洲国产综合在线| 亚洲一区久久久|