MiniGUI1.33开源版在ARMSYS2410-B上的移植

发 布 时 间 : 2008-11-19 来 源 : 立宇泰论坛 作 者 : ctaer 浏 览 :

MiniGUI1.33开源版在ARMSYS2410-B上的移植

0 。准备

(a) 建立如下目录:

minigui

|--build_x86 /建立PC上运行的MiniGUI

|--build_arm /建立ARM上运行的MiniGUI

|--tarball /所有的包资源存放点

(b) download MiniGUI

www.minigui.com下载libminigui-1.3.3.tar.gz minigui-res-1.3.3.tar.gz并且放

tarball目录

(起始目录:minigui)

#cd build_x86

#tar zxvf ../tarball/libminigui-1.3.3.tar.gz

#tar zxvf ../tarball/minigui-res-1.3.3.tar.gz

#cd ../build_arm

#tar zxvf ../tarball/libminigui-1.3.3.tar.gz

#cd ..

(c) download and install qvfb

www.minigui.com下载qvfb-1.0.tar.gz,放入tarball目录

#cd build_x86

#tar zxvf ../tarball/qvfb-1.0.tar.gz

#cd qvfb-1.0

#./configure

#make

#make install

#cd ..

(d) 建立范例程序:

test.c

--------------------------------------------------------------------------test.c begin

#include

#include

#include

#include

#include


 

#define MWINDOW_LX 10

#define MWINDOW_TY 50

#define MWINDOW_RX 230

#define MWINDOW_BY 180

 

 

static char * hello_str = "HelloMiniGUI!";

 

 

HWND hMainWnd;

 

 

static int WinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

RECT rc;

 

 

switch (message)

{

case MSG_PAINT :

hdc = BeginPaint(hWnd);

GetClientRect(hWnd, &rc);

DrawText(hdc, hello_str, -1, &rc, DT_LEFT);

EndPaint(hWnd, hdc);

break;

case MSG_CLOSE :

DestroyMainWindow(hWnd);

PostQuitMessage(hWnd);

break;

default :

return(DefaultMainWinProc(hWnd, message, wParam, lParam));

}

return(0);

}

 

 

int InitMainWindow(void)

{

MAINWINCREATE window_info;

 

 

window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;

window_info.dwExStyle = WS_EX_NONE;

window_info.spCaption = "MiniGUI";

window_info.hMenu = 0;

window_info.hCursor = GetSystemCursor(0);

window_info.hIcon = 0;

window_info.MainWindowProc = WinProc;

window_info.lx = MWINDOW_LX;

window_info.ty = MWINDOW_TY;

window_info.rx = MWINDOW_RX;

window_info.by = MWINDOW_BY;

window_info.iBkColor = COLOR_lightwhite;

window_info.dwAddData = 0;

window_info.hHosting = HWND_DESKTOP;

hMainWnd = CreateMainWindow(&window_info);

if (hMainWnd == HWND_INVALID)

return(0);

else

return(1);

}

 

 

int MiniGUIMain (int argc, const char ** argv)

{

MSG Msg;

 

 

#ifdef _LITE_VERSION

SetDesktopRect(0, 0, 800, 600);

#endif

 

 

InitMainWindow();

ShowWindow(hMainWnd, SW_SHOWNORMAL);

 

 

while (GetMessage(&Msg, hMainWnd))

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

MainWindowThreadCleanup(hMainWnd);

return(0);

}

 

 

#ifndef _LITE_VERSION

#include

#endif

--------------------------------------------------------------------------test.c end

 

 

1. Build MiniGUI for PC

(a) build lib

#Cd build_x86

#Cd libminigui-1.3.3

#./configure

#make

#make install

#cd ..

(b) install resource

#cd minigui-res-1.3.3

#make install

#cd ..

(资源被安装到/usr/local/lib/minigui/)

(c) build and run test

#gcc –o test test.c –lpthread –lminigui –ljpeg –lpng –lz –lttf

/usr/local/etc/MiniGUI.cfg[system]组的gal_engineial_engine的值都改成qvfb

#qvfb –width 640 –height 480 –depth 16 &

#./test

#cd ..

 

 

2. Build MiniGUI for ARM

(a) build lib

#cd build_arm

#cd libminigui-1.3.3

#make menuconfig

在默认的设置下

将“GAL engine options”中的“NEWGAL”改成“OLDGAL”;

将“Font options”中的最后三项保留,其余全部不选;

将“Image options”中对JPGPNGsupport去掉;

将“Development environment options”中“Compiler”设置成“arm-linux-gcc”,“Path prefix”设置成“/usr/local/arm/2.95.3/arm-linux(假设交叉编译环境安装在/usr/local/arm)。其余选项全部取默认值。保存修改并退出menuconfig

#make

#make install

#cd ..

(b) build test.c

#arm-linux-gcc –o test test.c –lpthread –lminigui

这样就会产生一个名为test的文件。

(c) 设置root file system

假设已经有一个可以用的root file system

把先前安装在/usr/local/arm/2.95.3/arm-linux/lib下的库文件复制到目标文件系统的/lib目录下。如果分不清楚那个目录下哪些是需要复制的库文件,可以重复一次2.(a)的过程,并且把其中“Path prefix”的值改成你事先建立的一个空的目录的路径。比如,我建立了一个新的目录/root/need,并且把“Path prefix”的值改成了“/root/need”, 那么在执行完2.(a)后,/root/need/lib目录下的所有文件就是我们所需要复制的MiniGUI库文件。(这个办法很冗余-_-)

/usr/local/etc/MiniGUI.cfg文件复制到目标文件系统的/usr/local/etc/目录下,并且修改该文件,将[system]组中的gal_engine的值改成“fbcon ial_engine的值改成“console mdev的值改成“/dev/mouse mtype的值改成“PS2”,将[fbcon]组中的defaultmode改成“640x480-16bpp(根据实际情况而定)

/usr/local/lib/minigui/res整个目录复制到目标文件系统的/usr/local/lib/minigui中。

最后把刚才编译好的test文件复制到目标文件系统的/bin下面。

(d) 设置鼠标

我的LCD没有带触摸屏,所以要设置鼠标,我的鼠标是USB口的。

修改文件系统的/etc/init.d/rcS,添加一行:“ln /dev/input/mice /dev/mouse

(e) run

给板子上电,通过minicom执行:

#test &

就能在LCD上看到运行结果了。


上一篇:[转帖]MIZI-Linux启动图标DIY(定制logo的方法) 下一篇:s3c2410的Bootloader(Vivi)源代码分析