教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

Minigui移植uClinux(2)

来源:网络收集 时间:2026-08-29
导读: 保存,退出。 OK ,你的板子上的系统也搭建完毕了,现在来让真正的图形界面跑起来!:) 注意:你Build 你的 嵌入式 Linux 内核时,在 Console 中一定要先上 FrameBuffer ,从4位色一直到 16 位色的支持,全选上吧

保存,退出。 OK ,你的板子上的系统也搭建完毕了,现在来让真正的图形界面跑起来!:)

注意:你Build 你的 嵌入式 Linux 内核时,在 Console 中一定要先上 FrameBuffer ,从4位色一直到 16 位色的支持,全选上吧,同时把 VGA TextOut 选项勾掉,不要选它!!!!!!!!!!

内核启动时就要激活 FrameBuffer ,不然 minigui 没法启动起来,激活的方法就是给它传内核参数 vga=xxx 之类的。

3.启动你的 MiniGUI 的图形界面

看看你的 Windows 操作系统,左下方是一个 [开始] 按钮,然后是 任务条 ,MiniGUI 也提供了类似的界面,这就是一个叫 mginit 的程序,它启动后就跟widnows的界面很像了,它就在 mde 包里面,还记得最初让你下载的那个程序包吗?? 现在我们就来安装它!!:)

[user]# tar zxf mde-1.3.0.tar.gz [user]# cd mde-1.3.0

//我们先对 mginit 程序做一点小修改,呵

[user]# cd mginit ; vi mginit.c

在 297 行处,把下面代码注释掉

/*************** AboutMiniGUI (); AboutMDE (); **************/ 保存,退出即可。

因为我们没有 触摸屏 现在,没法点它的 确认 按钮,所以把这些 About 信息去掉:)

好了,现在来编译吧,在mde-1.3.0 目录里

[user]# ./configure --prefix=/opt/rootfs/usr/local --host=arm-linux [user]# make

如果你发现 mginit 目录下的程序没有被编译,那就说明你的 libminigui 配置不正确,记住,你必须是配置为 Lite 模式,这个程序才会被编译

[user]# make install

事实上证明,make install,根本没用,它什么都没做,do nothing 所以还是我们自己动手来做吧,呵

[Root]# mkdir –p /opt/rootfs/usr/local/lib/shared/miniguiapps //建立了一个我们自己的目录,好长,呵

[Root]# cp –r –a mde-1.3.0/* /opt/rootfs/usr/local/lib/shared/miniguiapps

直接全部拷过去,然后到 /opt/rootfs/usr/local/lib/shared/miniguiapps 的各个程序目录下去,比如 mginit , bomb , painter 之类的,把不用的 .c .h .o Makefile 之类的全删除掉,保留 可执行文件和相应的 res 目录下的资源

注意,保持目录的结构,mginit.rc 文件不要删了,这个对mginit 程序很重要

OK,最后一步了,修改配置文件

[Root]# vi /opt/rootfs/linuxrc 文件

一般你配置嵌入式系统的时候都会有这个文件,用来执行一些系统的初始化工作,如果没有,就在你相应的初始化脚本(例如 etc/inittab)中加入下面的语句

mknod /dev/ttyp5 c 3 5 mknod /dev/ptyp5 c 2 5

cd /usr/local/lib/shared/miniguiapps/mginit ./mginit

注意:最后执行 mginit 命令的方式,先进入到它所在的目录,然后再执行,千万不要只写成

/usr/local/lib/shared/miniguiapps/mginit/mginit

因为 mginit 执行时在“当前目录”的res文件夹下搜索显示的资源,这种写法则“当前目录”为 / 根目录,所以会找不到 res 文件夹,于是显示错误 “ Can not create taskbar! ” 就退出了!

如果运行时显示没有 mknod 命令,请检查一下你的 busybox 的配置 :)

切记切记!

好了,一切成功了,现在放到你的板子上去试试吧:)

[Root]# cd /opt

[Root]# mkcramfs rootfs root.cramfs 制作根文件系统镜像,把 root.cramfs 烧到你的板子里面就OK了,启动,就可以看到 minigui 的图形界面启动了 :)

注意: 因为你的 minigui 是按 Lite 模式编译的,如果必须 mginit 首先运行起来,你其它的程序(比如 bomb ,或是 helloword)才能执行,如果 mginit 没有运行起来你就执行 helloword 的话,就会显示错误

“ Can not attach shared resource ! ”

4.为 minigui 开发程序

环境配好了,现在是开发自己的程序了,呵呵,写个简单的 Helloword 程序 /*

** $Id: helloworld.c,v 1.7 2003/06/13 07:15:49 weiym Exp $ **

** Listing 2.1 **

** helloworld.c: Sample program for MiniGUI Programming Guide ** The first MiniGUI application. **

** Copyright (C) 2003 Feynman Software. **

** License: GPL */

#include

#include #include #include #include

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

HDC hdc;

switch (message) { case MSG_PAINT:

hdc = BeginPaint (hWnd);

TextOut (hdc, 100, 100, \ EndPaint (hWnd, hdc); return 0;

case MSG_CLOSE:

DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; }

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

int MiniGUIMain (int argc, const char* argv[]) {

MSG Msg;

HWND hMainWnd;

MAINWINCREATE CreateInfo;

#ifdef _LITE_VERSION

SetDesktopRect(0, 0, 1024, 768); #endif

CreateInfo.dwstyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; CreateInfo.dwExstyle = WS_EX_NONE; CreateInfo.spCaption = \ CreateInfo.hMenu = 0;

CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0;

CreateInfo.MainWindowProc = HelloWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 320; CreateInfo.by = 240;

CreateInfo.iBkColor = COLOR_lightwhite; CreateInfo.dwAddData = 0;

CreateInfo.hHosting = HWND_DESKTOP;

hMainWnd = CreateMainWindow (&CreateInfo);

if (hMainWnd == HWND_INVALID) return -1;

ShowWindow(hMainWnd, SW_SHOWNORMAL);

while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }

MainWindowThreadCleanup (hMainWnd);

return 0; }

#ifndef _LITE_VERSION #include #endif

首先在 PC 上编译,验证通过!

[user]# gcc -o helloword helloword.c -lminigui –lmgext

如果没有错误,运行 qvfb ,按前面说的设置好,然后执行 [user]# ./helloword

一切正常,没有错误,现在就要把它放到我们的 板子上去跑了

[user]# arm-linux-gcc –O2 –o helloword helloword.c –lminigui –lmgext

编译完后,把它烧到板子的某个目录下,就可以在 板子上跑了!

所以这里就是说,minigui 提供了让你在 PC 上就可以调试和运 …… 此处隐藏:2296字,全部文档内容请下载后查看。喜欢就下载吧 ……

Minigui移植uClinux(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/435707.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)