摘要:隨著嵌入式的飛速發展, 嵌入式Linux系統人機界面受到人們越來越多的關注, 如何開發出一套具有高可靠性、使用壽命長、可進行多線程、多任務實時性等性能成為現如今人機界面交互的研究重點。本文采用Power PC嵌入式平臺植入Linux操作系統, 使用Mini GUI圖形開發, 設計出具有實時性和高效性的人機界面。
關鍵詞:PowerPC; Linux; MiniGUI; 人機界面;
Abstract:With the rapid development of embedded system, the man-machine interface of embedded Linux system has received more and more attention. How to develop a set of high reliability, long service life, multi-threading, multi-task real-time performance, etc. Become the focus of research on human-machine interface interaction. This article adopts Power PC embedded platform to implant Linux operating system, use Mini GUI graphics development, and design a human-machine interface with real-time and high efficiency.
Keyword:PowerPC; Linux; MiniGUI; Human-machine Interface;
1、引言
如今, 嵌入式開發已經作為一個熱門話題, 涉及到各個領域。由于嵌入式的飛速發展, 嵌入式操作系統中的Linux系統具有功耗低、可靠性強、功能強大、性價比高、實時性強、支持多任務、占用空間小、效率高等特點, 得到了越來越多開發者的青睞, 本文采用了Power PC嵌入式平臺移植Linux操作系統進行人機界面的設計開發。
2、原理設計
2.1、Power PC平臺
本文所用到的powerpc平臺為南瑞自主研發的基于Linux系統的, powerpc通用平臺, 采用MPC8309處理器, 主頻達400 MHz;DDR2時鐘266 MHz;對外提供1個CAN網接口;提供8/16個RS-485串口, 最高速率38400;提供2個10M/100M自適應以太網口;基于Linux操作系統, 內核版本2.6以上。
圖1 Powerpc平臺框圖
2.2、Linux系統
Linux操作系統是UNIX操作系統的一種克隆系統, 它誕生于1991年的10月5日。Linux是一套免費使用和自由傳播的類Unix操作系統, 是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以絡為核心的設計思想, 是一個性能穩定的多用戶網絡操作系統。在嵌入式開發方面更是具有其它操作系統無可比擬的優勢。
2.3、人機界面軟件設計
圖2 系統軟件整理框架
從圖2中, 可得本文所設計的人機界面具有有參數配置, 數據實時顯示, 采集可控等功能, 系統采用Linux2.6.34版本, 通過系統接口調用來完成內部進程及外設的交互。主要包括:u-boot引導、kernel、ramdisk+ubifs文件系統及mini GUI庫, 以及相關驅動程序。通過啟動多進程顯示各個功能, 如啟動采集控制進程, 可進行共享內存建立、實時數據采集交互等功能;啟動數據告警進程, 可進行數據分析和告警條件判斷等功能;還可啟動外設通訊接口進程, 進行串口、以太網口及can網的通訊功能。
2.4、圖形界面開發
本文采用Mini GUI圖形系統進行界面顯示開發, Mini GUI具有可伸縮強、輕型、占用資源少、高性能、高可靠性、可配置性等特點, 所以本文嵌入式系統Mini GUI進行界面開發。
由于在目標板中調試Mini GUI較繁瑣, 需要頻繁的往目標板中下載程序, 所以通常, 我們先將Mini GUI安裝在PC機中, 在PC機開發調試, 最后進行交叉編譯后下載到目標板中。
本文將Mini GUI安裝在PC機中的Ubuntu10.04虛擬機中,F在虛擬機中安裝minigui的相關庫文件, 如libminiguigpl、libmgplus、Freetype、jpegsrc、libpng、qvfb、zlib等庫, 通過命令configure和make將這些庫安裝完成, 即可進行Mini GUI程序編寫工作。
3、Mini GUI的圖形界面開發
本文界面顯示流程圖如圖3所示。
圖3 本文界面顯示流程圖
3.1、Mini GUI程序開發頭文件
Mini GUI的應用程序中必須要包含<minigui/common.h>、<minigui/minigui.h>、<minigui/gdi.h>和<minigui/window.h>這四個頭文件。
common.h包括Mini GUI常用的宏以及數據類型的定義。
minigui.h包含了全局的和通用的接口函數以及某些雜項函數的定義。
gdi.h包含了Mini GUI繪圖函數的接口定義。
window.h包含了窗口有關的宏、數據類型、數據結構定義以及函數接口聲明。
使用預定義控件的Mini GUI應用程序還必須包括另外一個頭文件<minigui/control.h>;
control.h包含了libminigui中所有內建控件的接口定義。
所以一個minigui程序的開始通常都要包括以下的頭文件:
3.2、Mini GUI程序開發入口程序
一般Mini GUI程序的入口點為Mini GUIMain函數, 本文所使用的函數原型為:int Mini GUIMain (int argc, const char*argv[]) 。
因為main函數已經在Mini GUI的庫函數中定義, 該函數在進行一些Mini GUI的初始化工作后調用Mini GUIMain函數。所以每個M i n i G U I應用程序的入口點均為Mini GUIMain。參數argc和argv與C程序main函數的參數含義是一樣的, 分別為命令行參數個數和參數字符串數組指針。
3.3、Mini GUI界面程序
每個Mini GUI應用程序的初始界面一般都是一個主窗口, 通過調用Create Main Window函數來創建主窗口, 其參數是一個指向MAINWINCREATE結構的指針, 本文創建窗口函數為:
主窗口函數中定義Create Info為MAINWINCREATE結構;Create Info.dw Style=WS_VISIBLE|WS_BORDER;設置主窗口風格, 窗口設置為初始可見, 并具有邊框;Create Info.dw Ex Style=WS_EX_NONE;設置主窗口的擴展風格, 該窗口沒有擴展風格;Create Info.sp Caption=“標題”;設置窗口標題;Create Info對窗口屬性進行設置, 還設置了主窗口主菜單樣式、光標樣式、主窗口圖標、主窗口在屏幕上的位置、主窗口背景色、主窗口形式等。調用Show Window (h Main Wnd, SW_SHOWNORMAL) 函數將創建的窗口顯示到屏幕上, 第一個參數為要顯示的窗口句柄, 第二個參數為窗口顯示方式。
調用Show Window函數后, 主窗口會顯示到屏幕上, 然后進入消息循環。Mini GUI為每一個Mini GUI程序維護一個消息隊列。在發生事件之后, Mini GUI將事件轉換為一個消息, 并將消息放入目標程序的消息隊列之中。消息循環代碼如下:
只要從消息隊列中取出的消息不為MSG_QUIT, Get Message就返回一個非0值, 消息循環將持續下去。MSG_QUIT消息使Get Message返回0, 導致消息循環的終止。Translate Message函數把擊鍵消息轉換為MSG_CHAR消息, 然后直接發送到窗口過程函數。Dispatch Message函數最終將把消息發往該消息的目標窗口的窗口過程, 讓它進行處理。本文中的窗口過程函數為Logo Win Proc, 函數代碼如下:
本文所使用個消息有MSG_CREATE窗口創建消息, MSG_PAINT窗口繪制消息, MSG_ERASEBKGND窗口繪制背景消息, MSG_KEYDOWN鍵盤消息, MSG_TIMER系統消息定時器, MSG_CLOSE系統關閉消息。當點擊關閉按鈕時, 窗口過程函數將收到一個MSG_CLOSE消息, 應該程序收到MSG_CLOSE消息時調Destroy Main Window函數銷毀主窗口, 程序最后調用Main Window Thread Cleanup清除主窗口所使用的消息隊列等系統資源并最終由Mini GUIMain返回。
3.4、目標板環境移植及程序下載
將minigui相關的庫通過Power PC工具編譯鏈交叉編譯, 安裝到Linux系統文件的lib庫中, 并將安裝好的Linux系統移植到目標板中, 這樣目標板環境移植完成。然后將寫好的應用程序通過Power PC工具編譯鏈交叉編譯, 生成的目標程序下載到目標板中, 運行該目標程序。
3.5、顯示效果
本文powerpc平臺采用VGA液晶顯示, 需要在Mini GUI.cfg中配置gal_engine=fbcon, defaultmode=800x600-16bpp, 顯示效果分別如圖4、圖5所示。
圖4 實時顯示界面
圖5 參數配置界面
4、結束語
本文所介紹的Power PC平臺移植Linux系統進行的人機界面開發已經用于實際工程中, 具有多線程、多任務、響應及時的特點, 為今后的嵌入式系統人機界面的開發工作起到了一定的借鑒作用。
參考文獻
[1]北京飛漫軟件.Mini GUI移植指南[M].北京:飛漫軟件技術有限公司, 2006.