a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

淺談MiniGUI的VxWorks環境移植

發布時間:  2012/9/12 17:33:14

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

1. Cygwin環境安裝

這個就不多說了,windows上很有名的模擬linux平臺的工具軟件。可以很方便的下載到。安裝的時候注意安裝make, vim兩個東西即可。

2. 在cygwin上交叉編譯MiniGUI的產品

由于我這里的目標板是mips的核,那我就以mips為例:

MiniGUI源代碼中編譯文件:

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

這個文件中有幾個定義需要注意:

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

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

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

我們需要注意修改的地方有兩個

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

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

上面的內容都設置好了之后,我們還需要根據板子不同需要做一些代碼定制,如下:關閉鼠標,關閉png,jpeg,commlcd(為了排除問題,只打開dummy 引擎);打開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"};

下面我們就可以進行交叉編譯了:

交叉編譯時,必須使用cygwin內置的make命令來編譯。所以輸入如下

$/bin/make -f makefile.ng clean

$/bin/make -f makefile.ng

$/bin/make -f makefile.ng install

編譯完成后,就可以在已經定義好的目錄下找到編譯好的libMiniGUI.a文件和MiniGUI相關的頭文件.

3. tornado產品上運行編譯出來的MiniGUI示例

還記得上個文章說到怎么創建項目吧。那我們新創建一個項目,這里有幾點需要注意

◆如果我們是對一個已經編譯好內核的板子來說。我們需要準備好這個內核文件,方便 我們寫好的程序downloading到板子上

◆如果是一個已經編譯好內核的板子,我們就只需要建立一個downloadable的應用程序就可以了。

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

toolchain的設置


先給出一個MiniGUI的helloworld實例

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 = "歡迎來到 MiniGUI 的世界! 如果您能看到該文本, 則說明 MiniGUI Version %d.%d.%d 可在該硬件上運行!";
38     }
39     else if (strcmp (sys_charset, FONT_CHARSET_BIG5) == 0) {
40         format = "歡迎來到 MiniGUI 的世界! 如果您能看到該文本, 則說明 MiniGUI Version %d.%d.%d 可在該硬件上運行!";
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

 

 

把這個實例添加到新建的tornado項目中,假設命名為helloworld.c文件,接下來,就需要把MiniGUI的頭文件路徑和庫文件給鏈接到tornado的項目中.
打開tornado的workspace窗口中的build標簽,我們在這里面設置MiniGUI的頭文件和鏈接文件

1)雙擊demo builds下面的MIPS64gnule。

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

這里有tornado在編譯的時候使用的參數,

首先我們要刪除-ansi, MiniGUI在開發的過程中,一些代碼中沒有按照ansi標準,所以我們需要先刪除這個參數。

然后, 我們可以像使用gcc編譯選項的參數一樣加入我們的頭文件路徑,或者通過下面的“Include path...”按鈕來添加

-IC:/cross/mipse/include

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

打開PRJ_LIBS宏,把庫文件路徑復制到value值里,然后按“add/set...”按鈕

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

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

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

4)設置目標板

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

然后在target server中填入本機的ip地址, 在target name/IP address里面填入目標板的ip地址,確認。這時主界面的toolbar中的combobox里面就可以選擇當前的這個配置了。選中當前的配置后,就可以嘗試啟動鏈接了

5)讓我們的MiniGUI程序跑起來

目標板設置完成之后,我們可以把編譯好的download到目標機器上,啟動windsh,敲入MiniGUI_entry,就可以把剛才燒入的helloworld跑起來了~


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    天天拍夜夜添久久精品| 粉嫩av观看成人网站| 玩弄漂亮少妇高潮大叫| 麻豆╳╳╳乱女另类| 国产成人无码18禁午夜福利免费 | 特级毛片爽WWW免费版| 雷神ちゃんが人気の原因| 国产精品久久久久精品综合| 97久章草在线视频播放 | 久久久久亚洲AV无码专区体验| 伽罗ちゃんが腿法| 中文无码一区二区不卡ΑV| 午夜福利1000集合集92| 欧美性受XXXX人人本视频| 激情无码人妻又粗又大| 成人片黄网站色大片免费观看| 一区二区精品视频日本| 无码吃奶揉捏奶头高潮视频| 欧美精产国品一二三类产品| 精品国产A∨无码一区二区三区 | 国产精品一线二线三线有什么区别| 99精品国产兔费观看久久| 亚洲国产最大AV| 上面一个奶下面一个顶是什么字| 蜜臀AV无码精品人妻色欲| 国产一区二区三区不卡AV | 亚洲熟妇色XXXXX欧美老妇| 四川老妇山边性对白| 孽火(硬汉)今又| 精品国产福利在线观看| 国产 麻豆 日韩 欧美 久久| 77777欧美毛片777777| 亚洲精品AV中文字幕在线| 少妇伦子伦精品无吗| 妺妺窝人体色WWW在线观看婚闹 | FREE性玩弄妇女HD| 亚洲熟悉妇女XXX妇女AV| 无码国产成人午夜在线观看| 欧美人与性动交α欧美精品| 精品少妇人妻AV无码久久| 公咬着小娇乳H边走边欢视频| 18禁又污又黄又爽的网站不卡| 亚洲国产AV一区二区三区| 首页 动漫 亚洲 欧美 日韩| 欧美肥胖老太大喷水| 九月婷婷亚洲综合成人| 国产精品白浆无码流出视频| 阿娇被躁120分钟视频| 伊人丁香狠狠色综合久久| 性少妇JEALOUSVUE成熟| 日韩精品视频一区二区| 妺妺窝人体色聚窝窝www偷窥| 激情爆乳一区二区三区| 国产成人精品视频网站| VR成品在线网站| 在线观看韩国电影| 亚洲丰满性熟妇PⅩXXOO| 天堂影院一区二区三区四区| 欧日韩无套内射变态| 浪潮国产AV一区二区熟女| 好男人电影在线观看| 国产AⅤ无码专区亚洲AV琪琪| JAVAPARSER乱偷| 影音先锋亚洲成AⅤ人在| 亚洲AV无码成人精品区欧洲| 少妇特黄Av一区二区三区| 欧美中日韩免费观看网站| 旧番无码熟肉动漫在线观看| 激情综合一区二区迷情校园 | 东北往事之黑道风云20年| 91人妻人人爽人人澡人人精品| 亚洲日韩中文无码久久| 亚洲AVSSS在线观看| 熟妇的荡欲BD高清| 人人妻人人爽人人澡AV| 免费无码AⅤ片在线观看| 久久99精品国产麻豆不卡| 国产影片AV级毛片特别刺激| 国产AV露脸一线国语对白| СЕКС日本ВИДЕ视频| 中文字幕人妻熟在线影院| 亚洲无AV码一区二区三区| 亚洲AV色噜噜男人的天堂| 调教小奴高潮惩罚PLAY道具| 日本高清乱理伦片中文字幕| 男人猛戳女人30分钟视频大全 | 女M羞辱调教视频网站| 久久久久久精品免费不卡| 国精产品W灬源码1688伊在| 国产成年无码AⅤ片在线观看| 被按摩的人妻中文字幕BD| 2021国产麻豆剧传媒在线| 一本色道久久综合狠狠躁| 亚洲国产综合无码一区二区BT下| 西西人体444WWW大胆无码视频 | 精品国产综合区久久久久久| 国产无套粉嫩白浆在线观看| 国产成人综合亚洲AV| 成熟交BGMBGMBGM的价格| JAZZJAZZ国产精品| 97色伦综合在线欧美视频| 在线精品一区二区三区| 亚洲综合成人婷婷五月网址| 亚洲成AV人无码综合在线观看| 午夜私人电影院在线观看| 同学要做吗PO爱喝花茶的小酥肉| 日日摸夜夜添夜夜添无码免费视频 | 国产精品成人免费视频网站| 粗大的内捧猛烈进出视频嘿嘿视频 | 超碰97人人做人人爱少妇| 9L国产精品久久久久麻豆| 柚子猫原神甘雨视内射频| 亚洲熟妇丰满多毛XXXX| 亚洲精品国产成人| 亚洲成AV人片在线观看| 亚洲AV无码成人精品区狼人影院| 午夜131美女爱做视频| 透过校服的乳尖 揉捏| 私密按摩高潮熟女啪啪| 少妇荡乳情欲办公室456视频| 日本爆乳片手机在线播放| 全部免费毛片在线播放| 欧美乱妇高清无乱码免费| 免费一本色道久久一区| 美美哒免费高清影院| 久久无码专区国产精品S| 久久精品国产欧美日韩| 九九九影视电影高清全集观看| 教室停电了校草挺进我体内| 好吊妞人成视频在线观看强行| 国产亚洲欧美另类一区二区三区| 国产麻花豆剧传媒精品免费| 国产精品乱码久久久久软件| 国产精品XXX大片免费观看| 国产成人人人97超碰超爽8| 夫妻二人体验交换夫妻的后果| 绯色AV一区二区三区蜜臀| 粉嫩被粗大进进出出视频| 丰满的人妻HD高清日本| 丰满少妇猛烈进入无码人妻| 丰满多毛的大隂户BEST| 肥熟老熟妇500部视频| 丰满多毛的大隂户BEST| 疯狂做受XXXX高潮欧美日本| 丰满人妻AV无码一区二区三区| 丰满大屁股熟女偷拍内射| 丰满少妇女人A毛片视频| 夫妇联欢会回不去的夜晚9集| 公又粗又大又长挺进我的| 国产AV麻豆MAG剧集| 国产成人精品一区二三区在线观看| 国产AⅤ爽AV久久久久成人精品| 国产ΑV在线ΑV天堂AⅤ国产| 国产成人久久精品二区三区| 国产精品国产三级在线专区 | 一边摸一边抽搐一进一出视频| 一区二区av在线| 中国VODAFONEWIFI粗| 综合激情五月综合激情五月激情1| 2020亚洲无码| BT天堂网WWW天堂在线资源| MM131极品尤物美女| 锕锕锕锕锕锕锕好疼视频真人| 波多野结衣av电影在线观看| 成人AV片在线观看免费| 多毛freeoprn熟妇多毛y| 隔壁人妻偷人BD中字| 国产成人猛男69精品视频| 国产精品亚洲一区二区Z| 国精产品999国精产品官网| 娇妻丁字裤公交车被在线观看| 精品久久无码中文字幕| 久久精品无码专区免费| 裸体美女扒开下部无遮挡网站免费| 蜜桃AV麻豆AV天美AV| 欧美成人精品一区二区| 人妻系列无码专区免费视频 | 无码人妻一区二区三区一| 性无码免费一区二区三区在线| 亚洲AV无码成人精品网站| 亚洲精品国产AV成拍色拍婷婷| 野花ぶるだいあり~しすWWW| 中国女人内谢69XXXX免费视| 99精品国产一区二区三区| 宝贝腿开大一点你真湿H | JAPANESEMATURE亲| 差差差不多视频30分钟轮滑| 东北老熟女疯狂作爱视频| 国产精品Ⅴ无码大片在线看| 国产免费无遮挡吸奶头视频| 好爽…又高潮了毛片喷水| 九九电影网午夜理论片| 久无码久无码AV无码| 欧美成人精品第一区| 日本XXXX色视频在线观看免费,| 十八禁啪啪污污网站免费下载| 香蕉久久久久久久AV网站| 亚洲成人无码一区二区三区| 亚洲综合激情另类小说区| 性欧美一区二区三区|