microwindows

 http://linux.chinaunix.net/bbs/viewthread.php?tid=1042929  关于microwindows

 

http://blog.chinaunix.net/u2/84216/article_98658.html  关minigui Qtembedded

 

 

官方網站:
http://www.microwindow.org

SDK 手冊:
http://embedded.centurysoftware.com/docs/nx/

入門文件 (Getting Started):
http://home.twcny.rr.com/embedded/microwin/install/index.html

下載 (原始碼):
ftp://microwindows.org/pub/microwindows/microwindows-0.89.tar.gz

下載 (字型, 含中文字型):
ftp://microwindows.org/pub/microwindows/microwindows-fonts-0.89.tar.gz

Microwindows 簡介
分層式架構 (Layered Design)
Microwindows 是採用 3 層式架構設計,共分為 3 層:

  • lowest level - 螢幕, mouse/touchpad, keyboard 與其它硬體的 driver.
  • mid level - 可移植 (portable) 與 device-independent 的繪圖引擎 (graphics engine).
  • upper level - 提供給 programmer 的 API, 我們的程式只能呼叫 Microwindows 的 API 來繪圖.
    我們所要學的就是最上層的 API, 本專欄的主要目的就是在介紹 Microwindows API 的使用方法。
    Microwindows 的 Linux Driver 支援
    在螢幕方面,Microwindows 支援 Linux 2.2.x 的 framebuffer,在 16-bit Embedded Linux kernel (ELKS) 也可運作。
    在滑鼠方面,Microwindows 支援 GPM 與 serial port 滑鼠;另外也有 touch panel 的軀動程式。
    在鍵盤方面,Microwindows 支援 tty 鍵盤讀取,在 Linux 與 ELKS 都可運作。
    Hardware Device
    Driver
    Linux 2.2.x framebuffer
    scr_fb.c fb.c fblin[1248].c
    GPM Mouse
    mou_gpm.c
    Serial Mouse
    mou_ser.c
    Touch Panel
    mou_tp.c
    tty keyboard
    kbd_tty.c
    Microwindows 的 API
    Microwindows 有 2 種不同的 API:

    • Microwindows API
    • Nano-X API

    Microwindows API 與 Microsoft Win32 和 WinCE GDI 相容,因此使用 Microwindows API 的視窗系統為 message-based 的架構 (也就是 message-passing system 的視窗系統)。
    Nano-X API 可以概略的比喻為小型的 X server 系統,Nano-X API 是依據 Xlib API 來設計。因此可以很直覺的了解到,利用 Nano-X API 所設計的視窗系統為 client/server 架構。
    Microwindows 的優點
    1. 在 PC 上支援 X,易於測試發展。
    2. 針對 Embedded System 支援 framebuffer。
    3. 系統小。
    4. API 簡單易學。
    5. 支援 TrueType fonts 字型處理。
    6. 支援 ARM/MIPS/ELKS。
    * ELKS 是 16-bit 的 Linux kernel
    安裝 Microwindows
    Microwindows 不但可以在 framebuffer 上跑,也可以在 X 上跑。一開始學 Microwindows 時,我們會先在 X 上測試,所以沒有特別說明的話之後的 Microwindows 程式都是在 X Window System 上跑 。
    要讓 Microwindows 在 X 上執行,編譯前要先做一些設定:
    1. 先下載 microwindows 並解開。
    2. 執行 X Window System,進入圖形環境;到 microwin-0.89/src/ 執行 xconfigure。(圖 1)

    圖 1:Microwindows 設定介面
    3. 然後選取下面幾個項目:
    Compiling options -> Optimize
    Platform -> Linux (native)
    Platform -> Linux (native) -> Options -> Screen driver -> X11 (再點 options 可設定解析度)
    Platform -> Linux (native) -> Options -> Mouse driver -> GPM mouse (視您的滑鼠而訂)
    Platform -> Linux (native) -> Options -> Keyboard driver -> TTY
    I/O -> Have File I/O
    I/O -> Have bmp support
    I/O -> Have jpeg support
    I/O -> Have freetype support (truetype fonts) (再點 options 設定路徑, 請使用 Free Type 1, Red Hat Linux 7.x 以後的使用者應設定 include dir 為 /usr/include/freetype1, 因為筆者會講到中文字型, 所以請勾選 freetype 支援)
    Libraries to compile -> NanoX (本文只講 NanoX, 所以 Microwindows 不用選)
    Libraries to compile -> Libraries to Shared libs (可選可不 選, 因為現階段還不會 porting 到 Embedded System, 沒什麼關係!)
    Libraries to compile -> NanoX -> Options -> Enable shared mem support
    Libraries to compile -> NanoX -> Options -> Compile demos (不想編譯範例的話可以不選)
    4. 設定好後在 microwin-0.89/src/ 下執行 make 開始編譯。
    5. 編譯好後打 make install 安裝。因為我們有勾選 shared libraries,所以可以把下面這幾個檔案殺掉 (不殺也行!):
    /usr/lib/libmwdrivers.a
    /usr/lib/libmwengine.a
    /usr/lib/libmwfonts.a
    /usr/lib/libmwobjects.a
    /usr/lib/libnano-X.a
    /usr/lib/libvncauth.a
    6. 然後到 microwin-0.89/src/bin/ 下執行範例:
    $ ./nano-X & sleep 1 (執行 Microwindows 的 nano X server)
    $ ./nanowm & sleep 1 (執行 anao X server 的 Window Manager)
    $ ./demo & (執行展示程式)
    7. 如果可以看到這個畫面,表示 Microwindows 安裝成功。接下來就可以開始寫第一個程式了!
    Nano-X API 入門 - Hello World
    * 本專欄以 Nano-X API 為主,對 Microwindows API 有興趣的網友可參考官方網站的文件。
    #include
    #include
    GR_WINDOW_ID wid;
    GR_GC_ID gc;
    void event_handler (GR_EVENT *event);
    int main (void)
    {
       if (GrOpen() type)
       {
          case GR_EVENT_TYPE_EXPOSURE:
               GrText(wid, gc, 50, 50, "Hello World", -1, GR_TFASCII);
        break;
          case GR_EVENT_TYPE_CLOSE_REQ:
        GrClose();
               exit (0);
          default: break;
       }
    }
    這是一個 Microwindows 的 Hello World 程式,編譯時要連結 nano-X 程式庫:
    gcc -o hello hello.c -lnano-X
    利用這個程式我們就可以測試是否能順利編譯並執行 Microwindows 系統,在執行程式前,別忘了跑 nano-X 跟nanowm 喔!

    圖 2:Hello World
    下一期我們將開始解說這個程式的內容,與更多的 Microwindows 程式設計。
    注記
    2007.01.05: 改標題,以搭配整體專欄。
    jollen
    發表於 August 11, 2004 10:56 AM |
    全文
    |
    評論 (1)
    |
    引用通告 (0)

    -->
    建立 Cross GNU Toolchains for ARM
    作者/陳俊宏
    Copyright (c) 2004 www.jollen.org
    Last date: 2004/08/11
    1. 下載以下套件:
    gcc-3.4.1.tar.bz2
    newlib-1.12.0.tar.gz
    binutils-2.15.tar.bz2
    2. 解開套件:
    # bzip2 -dc gcc-3.4.1.tar.bz2 | tar xf -
    # tar zxvf newlib-1.12.0.tar.gz
    # bzip3 -dc binutils-2.15.tar.bz2 | tar xf -
    3. 建立編譯用目錄:
    # mkdir build-gcc build-binutils
    4. 首先編譯GNU binutils套件:
    # cd build-binutils
    # ../binutils-2.15/configure --srcdir=../binutils-2.15 --target=arm-elf --prefix=/usr/local/gnu-3.4.1 --enable-softfloat –-enable-shared
    # make all
    # make install
    - ARM7TDMI 與 ARM9TDMI 不支援硬體浮點運算。
    - 筆者使用的 target device (KS8695P) 是 ARM9TDMI 的裝置,ARM9TDMI並沒有DSP,因此必須建立啟用軟體浮點運算功能。
    - 編譯完成後可以在 /usr/local/gnu-3.4.1 目錄下找到執行檔。
    5. 編譯GCC與Newlib:
    一開始必須先將 newlib 放到 gcc 原始碼目錄下,才能和gcc一併編譯.
    # cd gcc-3.4.1
    # ln -s ../newlib-1.12.0 newlib
    接著設定GCC.
    # cd ..
    # cd build-gcc
    # ../gcc-3.4.1/configure --srcdir=../gcc-3.4.1 --target=arm-elf --prefix=/usr/local/gnu-3.4.1 --with-cpu=arm9 --with-newlib --enable-threads --with-float=soft --without-headers –-enable-languages=c
    GCC 3.4 必須在編譯設定時加上 “--with-float=soft|hard” 來指定要使用軟體或硬體浮點運算,在這裡我們必須指定使用軟體浮點運算。GCC 3.4 針對 ”arm-elf” 的 cross toolchains 改用由 Nicolas Pitre 所設計的ARM軟體浮點運算功能,這個新的ARM軟體浮點運算實作不但體積小而且比原來的C版本速度更快,因此請務必將target設定成arm-elf,GCC預設才會去使用新的軟體浮點運算。
    執行編譯並安裝:
    # make all
    # make install
    6. 最後可以在 /usr/local/gnu-3.4.1 目錄下取得完整的 Cross GNU toolchains for ARM。得到 cross toolchain 後,下一步則是要cross-compiling uClibc 或 glibc,取得C程式庫後才能開始cross-compiling應用程式。


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84216/showart_1359365.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值