Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> 組み込みLinux環境でのMiniGUIの研究と移植

組み込みLinux環境でのMiniGUIの研究と移植

  

近年、組み込み機器と市場の需要の広範な組み合わせにより、携帯電話、PDA、およびその他の製品のアプリケーションは、視覚的操作インターフェースの単純さと利便性に対するより高い要求を提示しました。これをサポートするには、安定した信頼性の高い高性能GUIシステムが必要です。グラフィックユーザーインタフェース(GUI)の人気は今日のコンピュータ技術の重要な功績の1つであり、それは非専門家ユーザーの使用を大いに促進し、そして人々はウィンドウとメニューを通して容易に操作することができます。 GUIに対する組み込みシステムの基本要件には、軽量、低リソース消費、高性能、高信頼性、および構成可能性が含まれます。 MiniGUIは、最も一般的に使用されているGUIシステムの1つですが、他のGUIと比較して、MiniGUIの最も注目すべき機能は、軽量でリソース消費量が少ないことです。多くの製品やプロジェクトが実用化されています。

1 MiniGUIの機能とアーキテクチャ

1. MiniGUIの機能

MiniGUIは、清華大学の元教師であるWei Yongmingによって開発された軽量グラフィックシステムです。組込みシステムまたはリアルタイムシステム用のグラフィカルユーザインタフェースサポートシステム。それはGPLの慣習に従い、SVGALibとLinuxThreadライブラリに基づくマルチウィンドウGUIサポートシステムです。主にLinuxおよびPOSIXスレッドをサポートするすべてのPOSIX互換システム(一般的な組み込みLinux、eCos、uC /OS-II、VxWorksおよびその他のシステムを含む)で稼働するさまざまなオペレーティングシステムにまたがることができます。フリーソフトウェアの一つ。

MiniGUIの主な機能は、(1)GPL用語に準拠した純粋なフリーソフトウェア、(2)完全なマルチウィンドウメカニズムの提供、(3)マルチキャラクタセットおよびマルチフォントのサポート、現在ISO8859-1のサポートです。 GB2312、Big5、その他の文字セット、さまざまなラスターフォント、TrueType、Type1、その他のベクターフォント、(4)フルスペル、5ストローク、その他の中国語入力方式のサポート、(5)BMP、GIF、JPEG、PCXおよびその他の一般的な画像サポート、(6)ビットマップ、アイコン、カーソル、キャレット、タイマー、アクセラレータキーなどのWindows
リソースファイルのサポート、(7)移植性の良さ。

1.2 MiniGUIのアーキテクチャ

1.2.1マルチスレッドの階層設計

全体的な構造から、MiniGUIは階層設計であり、その構造は図1に示されています。見せる。一番下には、GAL(グラフィック抽象化層)とIAL(入力抽象化層)とマウスとキーボードのドライバがあり、中間層はウィンドウシステムに必要なさまざまなモジュールを含むMiniGUIのコア層、最上位層はAPI、つまりプログラミングインタフェースです。 。 GALとIALは、基礎となるLinuxコンソールまたはMiniGUI用のX WindowのGUIインタフェースと入力インタフェースを提供します。Pthreadは、カーネルレベルのスレッドでサポートされるC関数ライブラリを提供するために使用されます。 GALとIALを使用すると、MiniGUIの移植性が大幅に向上し、プログラムの開発とデバッグが容易になります。

MiniGUI自体はマルチスレッドモードで動作し、そのモジュールの多くは別々のスレッドとして動作しますが、同時にMiniGUIもスレッドを使用して複数のウィンドウをサポートします。基本的に、各スレッドにはメッセージキューがあります。これは、スレッドデータの交換と同期を実装する重要なデータ構造です。 1つのスレッドがメッセージキューにメッセージを送信し、別のスレッドがこのメッセージキューからメッセージを取得します同じスレッド内に作成されたウィンドウは同じメッセージキューを共有できます。 1つのスレッドがメッセージキューにメッセージを送信し、別のスレッドがこのメッセージキューからメッセージを取得します同じスレッド内に作成されたウィンドウは同じメッセージキューを共有できます。メッセージキューとマルチスレッドの間の同期メカニズムを使用して、以下に説明するマイクロクライアント/サーバーメカニズムを実装できます。


1.2.2マイクロクライアント/サーバーアーキテクチャ

マルチスレッド環境では、マルチプロセス間の通信メカニズムと同様に、スレッド間の対話と同期も必要です。 。たとえば、ウィンドウの管理に使用されるスレッドはグローバルウィンドウリストを維持しますが、他のスレッドはこれらのグローバルデータ構造を直接変更することはできません。代わりに、「先着順」の原則に従って各スレッドの要求を順番に処理する必要があります。一般的なクライアント/サーバーモデル。 MiniGUIは、スレッド間の同期操作を使用して、クライアントスレッドとサーバースレッド間のマイクロクライアント/サーバーメカニズムを実装します。

2開発環境

H2410EB開発ボードは、北京Hengyi Hi-Tech Co.、Ltdによって設計および開発されました。サムソンのS3C2410A20組み込みARMプロセッサをベースにしています。 S3C2410A20は、ARM920TコアにフルパフォーマンスのMMUを内蔵しており、高性能、低消費電力、低コスト、小型など、ハンドヘルド機器、自動車などの分野に適しています。

大容量のSDRAMとフラッシュに加えて、H2410EBはRS-232Cシリアルインターフェース、10Mbpsイーサネットインターフェース、タッチスクリーンインターフェース、オーディオ入出力インターフェース、USBホスト、USBスレーブ、UARTインターフェースも拡張しています。 、IICインターフェース、ユーザー定義キーボード、LCDディスプレイ、ユーザーフレンドリーおよびリファレンスデザイン。ユーザーのニーズに応じて特定のソフトウェアやデバイスドライバを開発しながら、組み込みLinuxオペレーティングシステムの操作をサポートし、MP3 /MPEG再生、GUI、Webサービスおよびその他のサービスをサポートします。

オペレーティングシステムは縮小版のLinuxを採用し、Linuxカーネルのバージョンはv2.4.18です。システムで使用されているクロスコンパイラはarm-Linux-gccです。さらに、ドライバのソースコードやテストプログラムのソースコードなどのコードモジュールがあります。

3 MiniGUIの移植

この記事で使用されているホストシステムはRed Hat Linux 9.0、移植のターゲットシステムはLinux2.4.18、そしてMiniGUIのバージョンは1.6.9です。ホスト上のMiniGUIリンクライブラリをクロスコンパイルしてから、ターゲットマシン用にコンパイルされたライブラリファイルをルートファイルシステムとともにターゲットボードのRAMスペースに焼き付け、次にターゲットボード上で実行されているグラフィカルユーザーインターフェイスをライブラリに直接リンクします。ホストから独立して実行します。

3.1 Linuxクロスコンパイラ環境の構築

GUIのコンパイルは通常PC上で実行されます。つまり、生成されたソースコードをコンパイルしながら、コンパイラ自体をPC上で実行できます。バイナリファイルはターゲットマシン上で実行可能でなければならず、そのようなコンパイラはしばしばクロスコンパイラと呼ばれます。 ARMプラットフォームでは、cross-arm-binutils-2.10-1.i386.rpm、cross-arm-gcc-2.95.3-2.i386.rpm、cross-arm-glibc-2.1.3-2.i386をインストールしました。 .rpmこれら3つのパッケージこれらのパッケージはオンラインで無料で入手できます。 arm-binutilsパッケージには、通常、arm-strip、arm-arなど、ARMプラットフォーム用のバイナリツールがいくつか含まれています。arm-glibcパッケージには、ARMバージョンの標準C関数ライブラリとそれに対応するヘッダファイルが含まれています。 arm-gccに含まれているのは、ARMプラットフォームコードを生成するx86上のクロスコンパイラです。 rpmコマンドを実行してこれらのパッケージをPCにインストールしますシステムのデフォルトの検索ディレクトリにいない場合は、コンパイルするたびにシステムがコンパイラを検出できるように、インストールディレクトリをシステムのPATH環境変数に追加する必要があります。

rootユーザーとしてLinuxシステムにログインし、ホスト上でrpmコマンドを使用してクロスコンパイラツールをインストールしますArm-linux-gccは/usr/local/arm/2.95.3/にインストールされます。この時点で、gccは/usr/local/arm/2.95.3/bin/arm-linux-gccであり、インクルードは/usr/local/arm/2.95.3/arm-linux/includeです。対応するlibは/usr/local/arm/2.95.3

- /arm-linux /lib。それから、bashrcに環境変数を追加してください。最後の行がパスに追加されます:export PATH = $ PATH:/usr/local/arm/2.95.3/bin保存して終了したら、source .bashrcを実行します。

コンパイル時に使用されるライブラリのバージョンは、ターゲットバージョンで実行されるときに使用されるライブラリのバージョンと同じである必要があります。上記のステップの後、クロスコンパイル環境が確立されました。次のステップは、MiniGUIの設定とクロスコンパイルです。

3.2 MiniGUIの設定とクロスコンパイル

MiniGUI-1.6.9リソースファイル圧縮パッケージは、インターネット(http://www.minigui.com/download)から無料で入手できます(MiniGUI1)。 libminigui-1.6.9.tar.gz-MiniGUIライブラリのソースコード、miniguires-1.6.9.tar.gz-MiniGUIのリソース(基本フォント、アイコンなど)ビットマップ、入力方法など; mde-1.6.9.tar.gz-MiniGUI統合デモプログラム。zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved