亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 移植minigui1.33手記.txt

?? 移植MiniGUI1.33到S3C2440上手記
?? TXT
字號:
在移植Minigui到遠峰的YFDVK-2440-I板的過程中遇到很多問題,在網上的資料又找不能一個完整一點的。故移植后把移植的過程總結一下,希望對大家有點幫助。MiniGUI1.33版本可以有編譯成兩種形式,Lite和Threads,按我的理解是Lite方式適用于同時運行多個MiniGUI程序,而 Threads適用于目標系統只需要運行單一的MiniGUI程序。mde我理解成桌面管理模塊。由于我只需要在目標系統上運行單一的一個程序,所以編譯成 Threads的方式,也沒有編譯mde模塊。MiniGUI是一組動態鏈接庫,可以理解成 Windows的動態鏈接庫,移植MiniGUI的過程相當于在宿主機上交叉編譯目標機上的庫文件。
   宿主機平臺使用Red hat Linux9,安裝arm-linux-gcc到/usr/local/arm/2.95.3下面。并修改/etc/profile加入pathmunge /usr/local/arm/2.95.3/bin
在飛漫公司下載libminigui-1.3.3.tar.tar、minigui-res-1.3.3.tar.tar。假定保存在~/minigui下面。
1、釋放libminigui-1.3.3.tar.tar,并將文件夾重命名為minigui
cd ~/mingui
tar -zxvf libminigui-1.3.3.tar.tar
mv libminigui-1.3.3 minigui
cd minigui
2、配置minigui選項。
make menuconfig
system wide options中取消Build MiniGUI-Lite,Use incore (built-in) resource選項。
Gal engine options 圖形引擎根據目標機的顯示方式確認,我用三星的S3C2410只勾選了 NEWGal engine on Linux FrameBuffer console,其它的不選。
Ial engine options  輸入引擎我可用觸摸屏所以只選了SMDK2410 Touch Screen。
Font Options 中取消選擇Var bitmap font ,可能是因為為Bug的原因,當選擇了該選項后,編譯測試例子的時候總是提示vbfcon …錯誤。
Image options 我只選擇了Includes SaveBitmap-related functions。其它圖形格式我沒有選擇。
Development environment options 我使用Linux平臺,arm-linux-gcc編譯器,安裝路徑設置在~/mingui/target
退出配置界面,提示是否保存配置,選是。
3、編譯minigui
make
make install
如果編譯成功,將在目標文件夾~/mingui/target下面生成include、lib、etc三個文件夾。
4、編譯測試例子guitest.c,代碼如下
#include <stdio.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#ifndef _LITE_VERSION
#include <minigui/dti.c>
#endif
static int TestWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
switch (message)
{
case MSG_PAINT:
hdc = BeginPaint (hWnd);
TextOut(hdc,100,100,"hello\n!");
EndPaint(hWnd,hdc);
return 0;
case MSG_CLOSE:
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
void InitCreateInfo(MAINWINCREATE * pCreateInfo)
{
pCreateInfo->dwstyle = WS_CAPTION|WS_VISIBLE;
pCreateInfo->dwExstyle = WS_EX_NONE;
pCreateInfo->spCaption = "Hello world!";
pCreateInfo->hMenu = 0;
pCreateInfo->hCursor = GetSystemCursor(0);
pCreateInfo->hIcon = 0;
pCreateInfo->MainWindowProc = TestWinProc;
pCreateInfo->lx = 0;
pCreateInfo->ty = 0;
pCreateInfo->rx = 319;
pCreateInfo->by = 239;
pCreateInfo->iBkColor = PIXEL_lightwhite;
pCreateInfo->dwAddData = 0;
pCreateInfo->hHosting = HWND_DESKTOP;
}
int MiniGUIMain (int argc, const char* argv[])
{
MSG Msg;
HWND hMainWnd;
MAINWINCREATE CreateInfo;
#ifdef _LITE_VERSION
SetDesktopRect(0, 0, 240, 320);
#endif
InitCreateInfo(&CreateInfo);
hMainWnd = CreateMainWindow (&CreateInfo);
printf ("The main window created.\n");
if (hMainWnd == HWND_INVALID)
return -1;
ShowWindow(hMainWnd, SW_SHOWNORMAL);
printf ("The main window showed.\n");
while (GetMessage(&Msg, hMainWnd)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup (hMainWnd);
return 0;
}

arm-linux-gcc -o guitest guitest.c -I/usr/local/arm/2.95.3/arm-linux/include -lminigui -lpthread –I~/mingui/target/include -L~/mingui/target/lib

5、調整~/mingui/target/etc/MiniGUI.cfg配置文件。我的如下
[system]
# GAL engine
gal_engine=fbcon

# IAL engine
ial_engine=SMDK2410

mdev==/dev/touchscreen/0raw
mtype=none
上面/dev/touchscreen/0raw是觸摸屏的驅動,mtype是鍵盤驅動,我沒有使用。

6、將~/mingui/target/lib 下面的MiniGUI庫文件復制到目標平臺的/lib下面,把~/mingui/target/etc下面的MiniGUI.cfg復制到目標平臺的/etc下面。安裝MiniGUI 資源
tar –zxvf minigui-res-1.3.3.tar.gz然后將這些資源文件安裝到目標平臺的/usr/local/lib/minigui/res 目錄下,MiniGUI就算是在目標機上安裝好了。
7、其它問題。
由于我使用的7”液晶屏是800X480,而1.33版本的MiniGUI不支持這一分辨率。需要修改~/minigui/mingui/src/newgal/fbcon/fbvideo.c文件,加入這個分辨率。
static const GAL_Rect checkres[] = {
   {  0, 0, 1600, 1200 },        /* 16 bpp: 0x11E, or 286 */
   {  0, 0, 1408, 1056 },        /* 16 bpp: 0x19A, or 410 */
   {  0, 0, 1280, 1024 },        /* 16 bpp: 0x11A, or 282 */
   {  0, 0, 1152,  864 },        /* 16 bpp: 0x192, or 402 */
   {  0, 0, 1024,  768 },        /* 16 bpp: 0x117, or 279 */
   {  0, 0,  960,  720 },        /* 16 bpp: 0x18A, or 394 */
   {  0, 0,  800,  600 },        /* 16 bpp: 0x114, or 276 */
   {  0, 0,  800,  480 },        /* 新添加的800X480 */
   {  0, 0,  768,  576 },        /* 16 bpp: 0x182, or 386 */
   {  0, 0,  640,  480 },        /* 16 bpp: 0x111, or 273 */
   {  0, 0,  640,  400 },        /*  8 bpp: 0x100, or 256 */
   {  0, 0,  512,  384 },
   {  0, 0,  320,  240 },
   {  0, 0,  320,  200 },
   {  0, 0,  240,  320 },
   {  0, 0,  160,  160 },
   {  0, 0,  60,  60 }
};
static const struct {
   int xres;
   int yres;
   int pixclock;
   int left;
   int right;
   int upper;
   int lower;
   int hslen;
   int vslen;
   int sync;
   int vmode;
} vesa_timings[] = {
#ifdef USE_VESA_TIMINGS    /* Only tested on Matrox Millenium I */
   {  640,  400, 39771,  48, 16, 39,  8,  96, 2, 2, 0 },    /* 70 Hz */
   {  640,  480, 39683,  48, 16, 33, 10,  96, 2, 0, 0 },    /* 60 Hz */
   {  768,  576, 26101, 144, 16, 28,  6, 112, 4, 0, 0 },    /* 60 Hz */
   {  800,  600, 24038, 144, 24, 28,  8, 112, 6, 0, 0 },    /* 60 Hz */
   {  960,  720, 17686, 144, 24, 28,  8, 112, 4, 0, 0 },    /* 60 Hz */
   { 1024,  768, 15386, 160, 32, 30,  4, 128, 4, 0, 0 },    /* 60 Hz */
   { 1152,  864, 12286, 192, 32, 30,  4, 128, 4, 0, 0 },    /* 60 Hz */
   { 1280, 1024,  9369, 224, 32, 32,  4, 136, 4, 0, 0 },    /* 60 Hz */
   { 1408, 1056,  8214, 256, 40, 32,  5, 144, 5, 0, 0 },    /* 60 Hz */
   { 1600, 1200,/*?*/0, 272, 48, 32,  5, 152, 5, 0, 0 },    /* 60 Hz */
#else
   /* You can generate these timings from your XF86Config file using
      the 'modeline2fb' perl script included with the fbset package.
      These timings were generated for Matrox Millenium I, 15" monitor.
   */
   {  320,  200, 79440,  16, 16, 20,  4,  48, 1, 0, 2 },    /* 70 Hz */
   {  320,  240, 63492,  16, 16, 16,  4,  48, 2, 0, 2 },    /* 72 Hz */
   {  512,  384, 49603,  48, 16, 16,  1,  64, 3, 0, 0 },    /* 78 Hz */
   {  640,  400, 31746,  96, 32, 41,  1,  64, 3, 2, 0 },    /* 85 Hz */
   {  640,  480, 31746, 120, 16, 16,  1,  64, 3, 0, 0 },    /* 75 Hz */
   {  768,  576, 26101, 144, 16, 28,  6, 112, 4, 0, 0 },    /* 60 Hz */
   {  800,  480, 39721,  64, 56, 23, 37, 120, 6, 3, 0 },    /*新添加的800X480  39721 是顯示每像素時鐘*/
{  800,  600, 20000,  64, 56, 23, 37, 120, 6, 3, 0 },    /* 72 Hz */

像素時鐘請參考顯示驅動程序,遠峰的顯示驅動文件是drivers/video/s3c2440fb.c文件。

MiniGUI 的觸摸屏驅動可能也需要調整。我是用MiniGUI1.62版下面遠峰帶embest2410.c和embest2410.h拷貝到 ~/minigui/mingui/src/ial,將替換掉原2410.c和2410.h文件并對2410.c進行修改。如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "common.h"

#ifdef _SMDK2410_IAL

#include <unistd.h>
#include <fcntl.h>

#define TS_DEVICE   "/dev/touchscreen/0raw"

#include <sys/select.h>

#include "ial.h"
#include "2410.h"

/* for data reading from /dev/keyboard/0raw */
typedef struct {
   short b;
   short x;
   short y;
   short pad;
} POS;

static int ts = -1;
static int btn_fd = -1;

static unsigned char state[NR_KEYS];
static unsigned char btn_state=0;
static unsigned char keycode_scancode[MAX_KEYPAD_CODE + 1];
static int numlock = 0;

static int mousex = 0;
static int mousey = 0;
static POS pos;

#undef _DEBUG

/************************  Low Level Input Operations **********************/
/*
*  Mouse operations -- Event
*/

static int mouse_update(void)
{
   return 1;
}

static void mouse_getxy(int *x, int* y)
{
   *x = mousex;
   *y = mousey;
}

static int mouse_getbutton(void)
{
   return pos.b;
}


#ifdef _LITE_VERSION
static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except,
               struct timeval *timeout)
#else
static int wait_event (int which, fd_set *in, fd_set *out, fd_set *except,
               struct timeval *timeout)
#endif
{
   fd_set rfds;
   int    retvalue = 0;
   int    e;

   if (!in) {
       in = &rfds;
       FD_ZERO (in);
   }

   if ((which & IAL_MOUSEEVENT) && ts >= 0) {
       FD_SET (ts, in);
#ifdef _LITE_VERSION
       if (ts > maxfd) maxfd = ts;
#endif
   }

#ifdef _LITE_VERSION
   e = select (maxfd + 1, in, out, except, timeout) ;
#else
   e = select (FD_SETSIZE, in, out, except, timeout) ;
#endif

   if (e > 0) {
       if (ts >= 0 && FD_ISSET (ts, in)) {
           short data [4];

           FD_CLR (ts, in);
           read (ts, data, sizeof (data));
           if (data[0]) {
               pos.x = data[1];
               pos.y = data[2];
printf ("posx = %d, posy = %d\n", pos.x, pos.y);
               mousex = (pos.x - 100) * 800 / (931 - 100);
               mousey = (pos.y - 835) * 480 / (191 - 835);/*這里是修正,說明見下*/
          }

#ifdef _DEBUG
           if (data[0]) {
               printf ("mouse down: pos.x = %d, pos.y = %d\n", pos.x, pos.y);
           }
#endif

           pos.b = (data[0] ? 4 : 0);
           retvalue |= IAL_MOUSEEVENT;
       }

   } else if (e < 0) {
       return -1;
   }

   return retvalue;
}

BOOL Init2410Input (INPUT* input, const char* mdev, const char* mtype)
{
   ts = open (TS_DEVICE, O_RDONLY | O_NONBLOCK);
   if (ts < 0) {
       fprintf (stderr, "EMBEST2410: Can not open touch screen!\n");
       return FALSE;
   }

   input->update_mouse = mouse_update;
   input->get_mouse_xy = mouse_getxy;
   input->set_mouse_xy = NULL;
   input->get_mouse_button = mouse_getbutton;
   input->set_mouse_range = NULL;

   input->wait_event = wait_event;
   mousex = 0;
   mousey = 0;
   pos.x = pos.y = pos.b = 0;
   
   return TRUE;
}

void Term2410Input (void)
{
   if (ts >= 0)
       close(ts);
   if (btn_fd >= 0)
       close(btn_fd);
}

#endif /* _EMBEST2410_IAL */

坐標修正值可以打開MiniGUI的調試取得,在Make menuconfig時,system wide options里有打開調試信息的選項。

                                                   關尚明
                                            2006年2月16日

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频中文字幕| 国产激情偷乱视频一区二区三区| 国产婷婷色一区二区三区四区| 欧美精品日日鲁夜夜添| 在线观看日产精品| 在线观看日韩毛片| 91久久精品一区二区三区| 色综合久久66| 欧美日韩性生活| 国产精品嫩草99a| 中文字幕在线不卡一区二区三区| 国产精品家庭影院| 亚洲女人小视频在线观看| 亚洲男女毛片无遮挡| 亚洲狼人国产精品| 亚洲国产aⅴ天堂久久| 视频在线观看91| 久久av中文字幕片| 国产成人精品aa毛片| 99久久婷婷国产| 欧美精品vⅰdeose4hd| 日韩精品在线看片z| 国产欧美精品在线观看| 亚洲欧美另类久久久精品2019| 一区二区三区视频在线看| 日韩黄色片在线观看| 国产高清精品网站| 91在线精品一区二区| 欧美一级高清片在线观看| 国产色一区二区| 亚洲国产人成综合网站| 久草这里只有精品视频| 成人国产精品免费观看动漫| 欧美日韩在线播| 国产三级欧美三级| 午夜精品久久久久久久| 国产99久久久久| 欧美精品在线一区二区三区| 国产免费成人在线视频| 日韩中文字幕av电影| 成人小视频在线观看| 欧美一区二区三区在线视频| 国产精品国产三级国产aⅴ入口 | 欧美一二三在线| 亚洲欧洲美洲综合色网| 久久国产精品第一页| 色综合一区二区三区| 久久久综合精品| 午夜精品成人在线| 色综合色综合色综合色综合色综合| 56国语精品自产拍在线观看| 国产精品二区一区二区aⅴ污介绍| 蜜臀av国产精品久久久久| 色久优优欧美色久优优| 国产拍揄自揄精品视频麻豆| 日韩激情一二三区| 精品视频在线看| 亚洲美腿欧美偷拍| 99久久亚洲一区二区三区青草| 精品久久一区二区三区| 三级久久三级久久| 色综合色狠狠天天综合色| 国产精品入口麻豆原神| 国产精品一区在线观看你懂的| 欧美精品vⅰdeose4hd| 亚洲国产乱码最新视频| 欧洲精品中文字幕| 一区二区三区在线视频免费观看| 成人午夜av在线| 日本一区二区三区dvd视频在线| 精品一区二区免费视频| 精品国免费一区二区三区| 日韩一区精品视频| 欧美一卡2卡三卡4卡5免费| 水蜜桃久久夜色精品一区的特点| 在线精品视频小说1| 亚洲欧美日韩在线不卡| 色偷偷久久人人79超碰人人澡| 国产精品福利电影一区二区三区四区| 国产成人在线视频网站| 国产欧美视频一区二区三区| 国产成人免费视频网站| 日本一区二区综合亚洲| 播五月开心婷婷综合| 国产精品乱子久久久久| 91在线视频观看| 依依成人综合视频| 4hu四虎永久在线影院成人| 日本系列欧美系列| 久久影视一区二区| 不卡视频在线看| 亚洲一级在线观看| 日韩美女视频一区二区在线观看| 国产做a爰片久久毛片| 国产免费成人在线视频| 日本韩国精品在线| 免费在线观看不卡| 日本一区二区高清| 在线观看视频一区二区 | 久久奇米777| 成人性生交大片免费看中文| 亚洲免费三区一区二区| 欧美日韩你懂得| 国产麻豆精品一区二区| 亚洲色图欧美在线| 欧美一区二区三区四区久久| 国产精品自拍网站| 一区二区三区精品视频| 日韩亚洲欧美一区| www..com久久爱| 午夜精品成人在线视频| 久久久综合精品| 欧美日韩亚洲综合在线| 国产福利一区二区三区视频在线| 亚洲人成网站色在线观看| 5566中文字幕一区二区电影| 成人毛片视频在线观看| 午夜不卡av免费| 国产精品免费免费| 91精品国产福利在线观看 | 日本强好片久久久久久aaa| 国产亚洲人成网站| 69成人精品免费视频| jlzzjlzz国产精品久久| 日韩黄色一级片| 尤物av一区二区| 国产欧美一区视频| 欧美大片在线观看一区二区| 色诱亚洲精品久久久久久| 国产在线国偷精品免费看| 亚洲成人av在线电影| 国产精品拍天天在线| 精品福利一区二区三区| 91麻豆精品91久久久久久清纯| av一区二区三区| 国产福利一区二区三区在线视频| 日本美女一区二区三区| 亚洲国产精品久久一线不卡| 国产精品日韩精品欧美在线| ww久久中文字幕| 日韩一区二区不卡| 91精品国产品国语在线不卡| 欧美优质美女网站| 色偷偷久久一区二区三区| 成av人片一区二区| 91一区一区三区| 99综合电影在线视频| 成人精品免费网站| 国产99精品视频| 国产高清不卡二三区| 国产成人综合亚洲91猫咪| 国产在线播放一区三区四| 久久精品国产99国产| 麻豆国产精品视频| 国产一区二区三区国产| 国产一区二区三区综合| 国内不卡的二区三区中文字幕| 蜜臀久久久久久久| 蜜臀国产一区二区三区在线播放| 日本在线不卡一区| 美女爽到高潮91| 国产一区91精品张津瑜| 丁香五精品蜜臀久久久久99网站| 从欧美一区二区三区| www.久久久久久久久| 91网上在线视频| 欧美乱妇15p| 欧美xfplay| 中文av字幕一区| 亚洲男同性恋视频| 日韩不卡一区二区三区| 色av一区二区| 日韩三级在线观看| 国产喷白浆一区二区三区| 亚洲欧洲另类国产综合| 亚洲成人免费影院| 国产一区二区三区久久悠悠色av| 顶级嫩模精品视频在线看| 色猫猫国产区一区二在线视频| 欧美专区在线观看一区| 欧美大片一区二区三区| 亚洲国产精华液网站w | 欧美一区欧美二区| 久久精品一级爱片| 亚洲欧美国产高清| 久久精品国产澳门| 色网站国产精品| 26uuu色噜噜精品一区二区| 亚洲人成人一区二区在线观看 | 欧美四级电影网| 精品国产欧美一区二区| 亚洲欧洲另类国产综合| 蜜臀av一区二区在线观看 | 欧美性xxxxxxxx| 久久综合五月天婷婷伊人| 亚洲在线视频网站| 国产精品夜夜嗨| 欧美日韩高清一区| 国产精品美日韩| 久久99久久精品|