精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

淺談MiniGUI的VxWorks環(huán)境移植

發(fā)布時(shí)間:  2012/9/12 17:33:14

首先,需要準(zhǔn)備好MiniGUI1.6.10的庫(kù)文件,和一些示例文件,可以到MiniGUI.org上下載.(可能我機(jī)器上的版本和下載的開(kāi)源版本不一樣,但是這個(gè)文章寫出來(lái)就是為了備忘的。所以以我自己的版本為主介紹)

1. Cygwin環(huán)境安裝

這個(gè)就不多說(shuō)了,windows上很有名的模擬linux平臺(tái)的工具軟件。可以很方便的下載到。安裝的時(shí)候注意安裝make, vim兩個(gè)東西即可。

2. 在cygwin上交叉編譯MiniGUI的產(chǎn)品

由于我這里的目標(biāo)板是mips的核,那我就以mips為例:

MiniGUI源代碼中編譯文件:

makefile.ng是用來(lái)VxWorks的編譯的文件.打開(kāi)這個(gè)文件可以看到include rules.make,打開(kāi)rules.make文件,可以看到這個(gè)文件中做了一些相關(guān)的設(shè)置。注意第一句TARGET_RULES=build/rules-mipse.vxworks。看來(lái)用的定義是放在這個(gè)build/rules-mipse.vxworks文件中的,那我再打開(kāi)這個(gè)文件。
 

這個(gè)文件中有幾個(gè)定義需要注意:

1.PREFIX:這個(gè)地方定義了編譯好的MiniGUI庫(kù)文件和頭文件放置的位置

2.TARGET_DIR:這個(gè)地方定義了tornado工具安裝的路徑,方便尋找vxworks的庫(kù)文件和交叉編譯鏈工具

3.CFLAGS:定義了MiniGUI編譯時(shí)候的參數(shù),有類似下面的參數(shù)
-g -mips3 -EL -D__LITTLE_ENDIAN__ -Wall -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -DMIPSEL -DCPU=MIPS64 -D__mips__ -D__MIPSEL__
 

我們需要注意修改的地方有兩個(gè)

-D__LITTLE_ENDIAN__    大小端,根據(jù)不同的客戶機(jī)有不同的要求,可能是__BIG__ENDIAN__ __LITTLE_ENDIAN__

-DCPU=MIPS64    cpu類型:也需要根據(jù)不同的客戶機(jī)的要求,MIPS64 MIPS32等

上面的內(nèi)容都設(shè)置好了之后,我們還需要根據(jù)板子不同需要做一些代碼定制,如下:關(guān)閉鼠標(biāo),關(guān)閉png,jpeg,commlcd(為了排除問(wèn)題,只打開(kāi)dummy 引擎);打開(kāi)DUMMY引擎。

也就是注釋掉:……_CURSOR_SUPPORT    1……

……_PNG_FILE_SUPPORT    1……

……_JEPG_FILE_SUPPORT    1……

修改配置

vim src/sysres/mgetc-vxi386.c

修改為:

static char *SYSTEM_VALUES[]={"dummy","dummy","/dev/ts","none"};

下面我們就可以進(jìn)行交叉編譯了:

交叉編譯時(shí),必須使用cygwin內(nèi)置的make命令來(lái)編譯。所以輸入如下

$/bin/make -f makefile.ng clean

$/bin/make -f makefile.ng

$/bin/make -f makefile.ng install

編譯完成后,就可以在已經(jīng)定義好的目錄下找到編譯好的libMiniGUI.a文件和MiniGUI相關(guān)的頭文件.

3. tornado產(chǎn)品上運(yùn)行編譯出來(lái)的MiniGUI示例

還記得上個(gè)文章說(shuō)到怎么創(chuàng)建項(xiàng)目吧。那我們新創(chuàng)建一個(gè)項(xiàng)目,這里有幾點(diǎn)需要注意

◆如果我們是對(duì)一個(gè)已經(jīng)編譯好內(nèi)核的板子來(lái)說(shuō)。我們需要準(zhǔn)備好這個(gè)內(nèi)核文件,方便 我們寫好的程序downloading到板子上

◆如果是一個(gè)已經(jīng)編譯好內(nèi)核的板子,我們就只需要建立一個(gè)downloadable的應(yīng)用程序就可以了。

◆我們?cè)谶x擇toolchain的設(shè)置的時(shí)候(如圖),需要按照不同的板子環(huán)境設(shè)置不同的toolchain,這里必須注意的是剛才編譯MiniGUI設(shè)置的CPU和大小端的內(nèi)容,必須和這里選擇的一樣。
 

toolchain的設(shè)置


先給出一個(gè)MiniGUI的helloworld實(shí)例

Code
 

 

 1 /* 
2 ** $Id: helloworld.c,v 1.38 2007-10-25 07:56:45 weiym Exp $
3 **
4 ** Listing 2.1
5 **
6 ** helloworld.c: Sample program for MiniGUI Programming Guide
7 **      The first MiniGUI application.
8 **
9 ** Copyright (C) 2004 ~ 2007 Feynman Software.
10 **
11 ** License: GPL
12 */
13 #include <stdio.h>
14 #include <string.h>
15 #include <MiniGUI/common.h>
16 #include <MiniGUI/MiniGUI.h>
17 #include <MiniGUI/gdi.h>
18 #include <MiniGUI/window.h>
19 #include <MiniGUI/mywindows.h>
20 static char welcome_text [512];
21 static char msg_text [256];
22 static RECT welcome_rc = {10, 100, 600, 400};
23 static RECT msg_rc = {10, 100, 600, 400};
24 static const char* syskey = "";
25 static int last_key = -1;
26 static int last_key_count = 0;
27 static void make_welcome_text (void)
28 {
29     const char* sys_charset = GetSysCharset (TRUE);
30     const char* format;
31     if (sys_charset == NULL)
32         sys_charset = GetSysCharset (FALSE);
33     SetRect (&welcome_rc,  10, 10, g_rcScr.right - 10, g_rcScr.bottom / 2 - 10);
34     SetRect (&msg_rc, 10, welcome_rc.bottom + 10, g_rcScr.right - 10, g_rcScr.bottom - 20);
35     if (strcmp (sys_charset, FONT_CHARSET_GB2312_0) == 0
36             || strcmp (sys_charset, FONT_CHARSET_GBK) == 0) {
37         format = "歡迎來(lái)到 MiniGUI 的世界! 如果您能看到該文本, 則說(shuō)明 MiniGUI Version %d.%d.%d 可在該硬件上運(yùn)行!";
38     }
39     else if (strcmp (sys_charset, FONT_CHARSET_BIG5) == 0) {
40         format = "歡迎來(lái)到 MiniGUI 的世界! 如果您能看到該文本, 則說(shuō)明 MiniGUI Version %d.%d.%d 可在該硬件上運(yùn)行!";
41     }
42     else {
43         format = "Welcome to the world of MiniGUI. \nIf you can see this text, MiniGUI Version %d.%d.%d can run on this hardware board.";
44     }
45     sprintf (welcome_text, format, MiniGUI_MAJOR_VERSION, MiniGUI_MINOR_VERSION, MiniGUI_MICRO_VERSION);
46     strcpy (msg_text, "No message so far.");
47 }
48 static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
49 {
50     HDC hdc;
51     syskey = "";
52     switch (message) {
53         case MSG_CREATE:
54             make_welcome_text ();
55             SetTimer (hWnd, 100, 200);
56             break;
57         case MSG_TIMER:
58             sprintf (msg_text, "Timer expired, current tick count: %ul.",
59                             GetTickCount ());
60             InvalidateRect (hWnd, &msg_rc, TRUE);
61          printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
62             break;
63            
64         case MSG_LBUTTONDOWN:
65             strcpy (msg_text, "The left button pressed.");
66             InvalidateRect (hWnd, &msg_rc, TRUE);
67             break;
68         case MSG_LBUTTONUP:
69             strcpy (msg_text, "The left button released.");
70             InvalidateRect (hWnd, &msg_rc, TRUE);
71             break;
72         case MSG_RBUTTONDOWN:
73             strcpy (msg_text, "The right button pressed.");
74             InvalidateRect (hWnd, &msg_rc, TRUE);
75             break;
76         case MSG_RBUTTONUP:
77             strcpy (msg_text, "The right button released.");
78             InvalidateRect (hWnd, &msg_rc, TRUE);
79             break;
80         case MSG_PAINT:
81             hdc = BeginPaint (hWnd);
82             DrawText (hdc, welcome_text, -1, &welcome_rc, DT_LEFT | DT_WORDBREAK);
83             DrawText (hdc, msg_text, -1, &msg_rc, DT_LEFT | DT_WORDBREAK);
84             EndPaint (hWnd, hdc);
85             return 0;
86         case MSG_SYSKEYDOWN:
87             syskey = "sys";
88         case MSG_KEYDOWN:
89             if(last_key == wParam)
90                 last_key_count++;
91             else
92             {
93                 last_key = wParam;
94                 last_key_count = 1;
95             }
96             sprintf (msg_text, "The %d %skey pressed %d times",
97                             wParam - 1, syskey, last_key_count);
98             InvalidateRect (hWnd, &msg_rc, TRUE);
99             return 0;
100         case MSG_KEYLONGPRESS:
101             sprintf (msg_text, "=======The %d key pressed over a long term", wParam);
102             InvalidateRect (hWnd, &msg_rc, TRUE);
103             break;
104         case MSG_KEYALWAYSPRESS:
105             sprintf (msg_text, "=======The %d key pressed always", wParam);
106             InvalidateRect (hWnd, &msg_rc, TRUE);
107             break;
108         case MSG_KEYUP:
109             sprintf (msg_text, "The %d key released", wParam - 1);
110             InvalidateRect (hWnd, &msg_rc, TRUE);
111             return 0;
112         case MSG_CLOSE:
113             KillTimer (hWnd, 100);
114             DestroyMainWindow (hWnd);
115             PostQuitMessage (hWnd);
116             return 0;
117     }
118     return DefaultMainWinProc(hWnd, message, wParam, lParam);
119 }
120 int MiniGUIMain (int argc, const char* argv[])
121 {
122     MSG Msg;
123     HWND hMainWnd;
124     MAINWINCREATE CreateInfo;
125 #ifdef _MGRM_PROCESSES
126     JoinLayer(NAME_DEF_LAYER , "helloworld" , 0 , 0);
127 #endif
128     CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
129     CreateInfo.dwExStyle = WS_EX_NONE;
130     CreateInfo.spCaption = "Hello, world!";
131     CreateInfo.hMenu = 0;
132     CreateInfo.hCursor = GetSystemCursor(0);
133     CreateInfo.hIcon = 0;
134     CreateInfo.MainWindowProc = HelloWinProc;
135     CreateInfo.lx = 0;
136     CreateInfo.ty = 0;
137     CreateInfo.rx = g_rcScr.right;
138     CreateInfo.by = g_rcScr.bottom;
139     CreateInfo.iBkColor = COLOR_lightwhite;
140     CreateInfo.dwAddData = 0;
141     CreateInfo.hHosting = HWND_DESKTOP;
142    
143     hMainWnd = CreateMainWindow (&CreateInfo);
144    
145     if (hMainWnd == HWND_INVALID)
146         return -1;
147     ShowWindow(hMainWnd, SW_SHOWNORMAL);
148     while (GetMessage(&Msg, hMainWnd)) {
149         TranslateMessage(&Msg);
150         DispatchMessage(&Msg);
151     }
152     MainWindowThreadCleanup (hMainWnd);
153     return 0;
154 }
155 #ifndef _LITE_VERSION
156 #include <MiniGUI/dti.c>
157 #endif
158

 

 

把這個(gè)實(shí)例添加到新建的tornado項(xiàng)目中,假設(shè)命名為helloworld.c文件,接下來(lái),就需要把MiniGUI的頭文件路徑和庫(kù)文件給鏈接到tornado的項(xiàng)目中.
打開(kāi)tornado的workspace窗口中的build標(biāo)簽,我們?cè)谶@里面設(shè)置MiniGUI的頭文件和鏈接文件

1)雙擊demo builds下面的MIPS64gnule。

2)在打開(kāi)的窗口中選擇c/c++ compile tag

這里有tornado在編譯的時(shí)候使用的參數(shù),

首先我們要?jiǎng)h除-ansi, MiniGUI在開(kāi)發(fā)的過(guò)程中,一些代碼中沒(méi)有按照ansi標(biāo)準(zhǔn),所以我們需要先刪除這個(gè)參數(shù)。

然后, 我們可以像使用gcc編譯選項(xiàng)的參數(shù)一樣加入我們的頭文件路徑,或者通過(guò)下面的“Include path...”按鈕來(lái)添加

-IC:/cross/mipse/include

3)添加鏈接,這里注意不是在link標(biāo)簽下,是在Macro宏標(biāo)簽下添加

打開(kāi)PRJ_LIBS宏,把庫(kù)文件路徑復(fù)制到value值里,然后按“add/set...”按鈕

C:/cross/mipse/lib/libMiniGUI.a

這樣,我們就把MiniGUI的庫(kù)文件鏈接上了,而且也加好了MiniGUI的頭文件路徑.

下面,我們就可以編譯我們剛寫的MiniGUI的helloworld程序了。

4)設(shè)置目標(biāo)板

現(xiàn)在我們需要連接上我們的目標(biāo)版上的vxworks系統(tǒng),把我們編譯好的程序燒上去了。首先,在菜單tools->target server...的選項(xiàng)中選擇configure,新建一個(gè)configuration,修改了configuration默認(rèn)的名稱后,選擇target server properties下拉菜單,選擇core file and symbols,然后指定file路徑,這個(gè)所說(shuō)的file就是前面提醒大家準(zhǔn)備好的vxworks的內(nèi)核文件"vxWorks"

然后在target server中填入本機(jī)的ip地址, 在target name/IP address里面填入目標(biāo)板的ip地址,確認(rèn)。這時(shí)主界面的toolbar中的combobox里面就可以選擇當(dāng)前的這個(gè)配置了。選中當(dāng)前的配置后,就可以嘗試啟動(dòng)鏈接了

5)讓我們的MiniGUI程序跑起來(lái)

目標(biāo)板設(shè)置完成之后,我們可以把編譯好的download到目標(biāo)機(jī)器上,啟動(dòng)windsh,敲入MiniGUI_entry,就可以把剛才燒入的helloworld跑起來(lái)了~


本文出自:億恩科技【www.zuiquanben.com】

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1-20183354
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 網(wǎng)絡(luò)版權(quán)侵權(quán)舉報(bào)電話:0371-60135995
  • 警情提示:注意防范電信網(wǎng)絡(luò)詐騙
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2026 ENKJ All Rights Reserved 地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師  B1-20183354   京公網(wǎng)安備41019702002023號(hào) 
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線

     
     
    精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费
    日韩视频免费| 日韩黄色免费网站| 日韩av网站在线免费观看| 青青国产91久久久久久| 欧美精品高清| 97se亚洲| 国产videos久久| 少妇精品久久久一区二区| 婷婷激情一区| 日韩av一区二区在线影视| 韩国精品主播一区二区在线观看 | 亚洲人成亚洲精品| 国产欧美一区二区三区米奇| 日韩免费福利视频| 在线看片日韩| 成人羞羞在线观看网站| 日韩精品一区二区三区免费视频 | 欧美国产免费| 丝袜a∨在线一区二区三区不卡| 伊伊综合在线| 久久精品国产免费| 美女日韩在线中文字幕| 亚洲人成在线网站| 国产精品久久久久久久久久齐齐 | 国产欧美日韩一级| 日韩不卡一区| 欧美国产三级| 日韩国产精品久久久| 亚洲精品女人| 日韩精品电影一区亚洲| 午夜视频一区二区在线观看| 亚洲先锋成人| 999在线观看精品免费不卡网站| 中国字幕a在线看韩国电影| 亚洲尤物在线| 日韩1区在线| 国产精品久久久久久久久免费高清 | 亚洲性视频在线| 午夜精品网站| 视频一区二区三区中文字幕| 亚洲午夜91| 1000部精品久久久久久久久| 久久精品国产精品亚洲毛片| 中文字幕在线高清| 亚洲一区日韩| 久久精品 人人爱| 另类专区亚洲| 亚洲国产成人精品女人| 视频精品一区二区| 国产美女久久| 日韩一区二区三区免费视频| 美女视频网站久久| 国产精品视区| 伊人久久大香伊蕉在人线观看热v| 久久午夜精品一区二区| 国产免费久久| 99久久久久| 日韩高清一区在线| 日本少妇一区| 久久精品 人人爱| 日韩精品免费一区二区在线观看 | 91九色精品| 欧美久久亚洲| 日韩精品看片| 日本色综合中文字幕| 色偷偷色偷偷色偷偷在线视频| 亚洲男女av一区二区| 麻豆精品视频在线| 日韩激情网站| 美国三级日本三级久久99| 久久激情中文| 国产精品白丝av嫩草影院| 中文字幕亚洲在线观看| 一区在线免费观看| 麻豆免费精品视频| 免费在线观看视频一区| 亚洲精品福利| 亚洲一区二区动漫| 国产一区二区色噜噜| 999国产精品永久免费视频app| 久久亚洲在线| 国产精品qvod| 青青久久av| 国语对白精品一区二区| 欧美午夜三级| 巨乳诱惑日韩免费av| 精品国产一级| 久久久久.com| 亚洲免费激情| 国产精品久久久久av蜜臀| 日韩高清欧美激情| 亚洲一区日韩在线| 青青草视频一区| 欧美激情日韩| 福利视频一区| 国模大尺度视频一区二区| 国产精品igao视频网网址不卡日韩| 国产精品久久久久久久久久妞妞| 国产视频一区二| 老司机免费视频一区二区| 久久精品国产99国产| 蜜臀久久99精品久久久久宅男| 日韩精品午夜视频| 久久久久99| 欧美午夜精品一区二区三区电影| 色老板在线视频一区二区| 国产精品密蕾丝视频下载| 国产精品a级| 日韩专区视频网站| 日韩av电影一区| 911亚洲精品| 国产精品丝袜在线播放| 美女在线视频一区| 国产高潮在线| 青青青免费在线视频| 久久一级电影| 国产精品婷婷| 亚洲免费观看高清完整版在线观| 香蕉久久夜色精品国产| 日本在线不卡视频一二三区| 国产情侣久久| 捆绑调教美女网站视频一区| 免费污视频在线一区| 亚洲免费成人| 婷婷亚洲成人| 国产一区二区三区不卡视频网站 | 国产一精品一av一免费爽爽| 日本亚洲最大的色成网站www| 日韩一区二区三区免费播放| 999国产精品| 欧美中文一区| 日韩中文字幕91| 一区二区亚洲精品| 日韩中文一区二区| 国产精品免费看| 亚洲www啪成人一区二区| 欧美日韩一区二区三区不卡视频 | 丝袜诱惑制服诱惑色一区在线观看| 亚洲作爱视频| 国产精品亚洲片在线播放| 欧美国产极品| 欧美亚洲国产激情| 六月丁香综合在线视频| 在线 亚洲欧美在线综合一区| 青青国产精品| 欧美 日韩 国产精品免费观看| 日韩avvvv在线播放| 日韩精品免费一区二区三区| 久久不射网站| 精精国产xxxx视频在线野外| 国产精品高清一区二区| 好吊视频一区二区三区四区| 亚洲欧洲专区| 99久久亚洲精品| 国产精品.xx视频.xxtv| 国产亚洲一级| 精品日韩视频| 国产精品激情| 亚洲精品一级| 色婷婷狠狠五月综合天色拍| 欧美一区二区三区免费看| 亚洲一区二区日韩| 日韩伦理在线一区| 国产精品中文字幕制服诱惑| 在线一区电影| 深夜视频一区二区| 免费日韩成人| 91成人网在线观看| 国产成人精品免费视| 国产精品v亚洲精品v日韩精品| 午夜一级久久| 国产午夜精品一区二区三区欧美| 日本免费久久| 久久久久久免费视频| 日韩精品中文字幕第1页| 欧美一区不卡| 国产精品红桃| 精品久久99| 免费看av不卡| 欧美日韩色图| 日韩精品免费一区二区三区| 中文字幕人成乱码在线观看| 国产欧美日韩亚洲一区二区三区| 石原莉奈在线亚洲二区| 亚洲一区欧美二区| 久久亚洲视频| 日韩超碰人人爽人人做人人添| 影音先锋久久精品| 免费成人在线影院| 婷婷综合一区| 国产精品xxx在线观看| 国产黄色精品| 岛国精品一区| 岛国av在线播放| 久久精品观看| 欧美日韩国产免费观看视频| 国产农村妇女精品一区二区| 亚洲一区二区成人| 欧美www视频在线观看| 福利片在线一区二区|