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_engine和ial_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”中对JPG和PNG的support去掉; 将“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上看到运行结果了。
上一篇:远程多路数据采集系统方案及硬件详解
下一篇:基于ARM核的音频解码器单芯片系统研究
推荐阅读最新更新时间:2024-10-29 23:15
设计资源 培训 开发板 精华推荐
- 显示 A8510 LED 驱动器计算值的典型应用
- AZ1117E 1.0A LOW DROPOUT LINEAR REGULATOR 3.3V输出典型应用
- DC933A,使用 LT5512 HF/VHF/UHF 下变频混频器的演示板
- 使用 STMicroelectronics 的 TDA7294 的参考设计
- AVR2037,使用ADXL335加速度计的按键遥控(Key Remote)板
- 使用 LTC6905HS5-100 振荡器驱动 DIV 引脚的典型应用电路,无需三态缓冲器
- AM3G-0515SH30Z 15V 3瓦直流转直流转换器的典型应用
- GDF330CBT6验证板
- 使用 Analog Devices 的 LT1021DIN8-10 的参考设计
- 使用 Analog Devices 的 AD9683BCPZ-250 的参考设计