ecos 自带的Microwindows中加入mwin的支持

开源GUI-Microwindows简介 作者:EasyWave 时间:2014.06.07 类别:开源GUI系统-Microwindows简介 声明:转载,请保留链接 一:Microwindows简介 Microwindows 是一个著名的开放式源码嵌入式GUI 软件,目的是把图形视窗环境引入到运行Linux 的小型设备和平台上。作为X Window 的替代品,Microwindows可以使用更少的RAM 和文件存储空间(100K-600K)提供与X Window 相似 阅读详情

本文原创,转载请注明出处 (rickleaf)

1. MWIN是什么啊

Microwindows 在发布之初,提供了两种API接口,WinAPI和Nano-X

之前本博客曾经讨论过如何应用ecos自带的Microwindows的Nano-X接口,并且应用了FLNX作为Nano-X下面轻量级的GUI库。

那么ecos下面的Microwindows的WINAPI支持吗?

 

2. MWIN的移植

参考了新版Microwindows的WINAPI对ecos是支持的,不过老板不的Microwindows采用的select函数和unix是共用的。

所以我稍微做了一次改动就可以在ecos上运行起来了。

首先是cdl,加入mwin的代码

cdl_component CYGBLD_MICROWINDOWS_MW {
        display   "Build the Windows-compatible API"
        default_value 0
        requires CYGPKG_KERNEL

        # NANO X
        compile                 /
            mwin/winclip.c /
            mwin/windefw.c /
            mwin/winevent.c /
            mwin/winexpos.c /
            mwin/winfont.c /
            mwin/wingdi.c /
            mwin/winmain.c /
            mwin/winrgn.c /
            mwin/winsbar.c /
            mwin/winuser.c      /
            mwin/bmp/microwin.c /
            mwin/bmp/penguin.c /
            mwin/winlib/draw3d.c /
            mwin/winlib/ptinsid.c /
            mwin/winlib/insetr.c /
            mwin/winlib/fastfill.c /
            mwin/winlib/graph3d.c /
            mwin/winlib/mwuser.c /
            mwin/winlib/button.c /
            mwin/winlib/edit.c /
            mwin/winlib/listbox.c /
            mwin/winlib/progbar.c /
            mwin/winlib/static.c /
            mwin/winlib/combobox.c /
            mwin/winlib/caret.c /
            mwin/winlib/scrlbar.c /
            ecos/ecos_winmain.c
       cdl_option CYGBLD_MICROWINDOWS_MW_DEMO {
            display  "Build complete eCos MicroWindows WAPI application"
            default_value 0
            make -priority 320 {
                <PREFIX>/bin/ecos_mwin.elf : $(PREFIX)/lib/target.ld $(PREFIX)/lib/vectors.o $(PREFIX)/lib/libtarget.a $(PREFIX)/lib/libextras.a $(REPOSITORY)/$(PACKAGE)/src/demos/mwin/mdemo.c
                        @sh -c "mkdir -p $(dir $@)"
                        $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -o $(PREFIX)/lib/mdemo.o $(REPOSITORY)/$(PACKAGE)/src/demos/mwin/mdemo.c
                        $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(PREFIX)/lib/mdemo.o
            }
        }
    }

要加入我们自己的ecos_winmain.c

#include <cyg/kernel/kapi.h>

#include <pkgconf/system.h>

extern void invoke_WinMain(int argc, char** argv);

#define STACK_SIZE (16*1024)

struct ecos_winmain_data
{
    cyg_thread thread;
    cyg_handle_t handle;
    char stack[STACK_SIZE] __attribute__ ((aligned(16)));
    int argc;
    char** argv;
};

static void winmain_mainloop(cyg_addrword_t data)
{
    struct ecos_winmain_data* winmain_data=(struct ecos_winmain_data*)data;
    invoke_WinMain(winmain_data->argc, winmain_data->argv);
}

void start_WinMain_thread(int priority, int argc, char** argv)
{
    static struct ecos_winmain_data winmain_data;
    winmain_data.argc=argc;
    winmain_data.argv=argv;

    cyg_thread_create(priority, winmain_mainloop, (cyg_addrword_t) &winmain_data,
              "winmain", (void *)  winmain_data.stack, STACK_SIZE,
              &winmain_data.handle, &winmain_data.thread);

    cyg_thread_resume(winmain_data.handle);
}

void start_WinMain(int argc, char** argv)
{
    invoke_WinMain(argc, argv);
}


#ifndef CYGPKG_LIBC_STARTUP

#include <cyg/infra/diag.h>


void exit(int status)
{
    diag_printf("exit(%d) was called !/n", status);
}

#endif
然后修改mdemo,让他能在ecos上运行

1. MWIN是什么啊

Microwindows 在发布之初,提供了两种API接口,WinAPI和Nano-X

之前本博客曾经讨论过如何应用ecos自带的Microwindows的Nano-X接口,并且应用了FLNX作为Nano-X下面轻量级的GUI库。

那么ecos下面的Microwindows的WINAPI支持吗?

 

2. MWIN的移植

参考了新版Microwindows的WINAPI对ecos是支持的,不过老板不的Microwindows采用的select函数和unix是共用的。

所以我稍微做了一次改动就可以在ecos上运行起来了。

首先是cdl,加入mwin的代码

cdl_component CYGBLD_MICROWINDOWS_MW {
        display   "Build the Windows-compatible API"
        default_value 0
        requires CYGPKG_KERNEL

        # NANO X
        compile                 /
            mwin/winclip.c /
            mwin/windefw.c /
            mwin/winevent.c /
            mwin/winexpos.c /
            mwin/winfont.c /
            mwin/wingdi.c /
            mwin/winmain.c /
            mwin/winrgn.c /
            mwin/winsbar.c /
            mwin/winuser.c      /
            mwin/bmp/microwin.c /
            mwin/bmp/penguin.c /
            mwin/winlib/draw3d.c /
            mwin/winlib/ptinsid.c /
            mwin/winlib/insetr.c /
            mwin/winlib/fastfill.c /
            mwin/winlib/graph3d.c /
            mwin/winlib/mwuser.c /
            mwin/winlib/button.c /
            mwin/winlib/edit.c /
            mwin/winlib/listbox.c /
            mwin/winlib/progbar.c /
            mwin/winlib/static.c /
            mwin/winlib/combobox.c /
            mwin/winlib/caret.c /
            mwin/winlib/scrlbar.c /
            ecos/ecos_winmain.c
       cdl_option CYGBLD_MICROWINDOWS_MW_DEMO {
            display  "Build complete eCos MicroWindows WAPI application"
            default_value 0
            make -priority 320 {
                <PREFIX>/bin/ecos_mwin.elf : $(PREFIX)/lib/target.ld $(PREFIX)/lib/vectors.o $(PREFIX)/lib/libtarget.a $(PREFIX)/lib/libextras.a $(REPOSITORY)/$(PACKAGE)/src/demos/mwin/mdemo.c
                        @sh -c "mkdir -p $(dir $@)"
                        $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -o $(PREFIX)/lib/mdemo.o $(REPOSITORY)/$(PACKAGE)/src/demos/mwin/mdemo.c
                        $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(PREFIX)/lib/mdemo.o
            }
        }
    }

要加入我们自己的ecos_winmain.c

#include <cyg/kernel/kapi.h>

#include <pkgconf/system.h>

extern void invoke_WinMain(int argc, char** argv);

#define STACK_SIZE (16*1024)

struct ecos_winmain_data
{
    cyg_thread thread;
    cyg_handle_t handle;
    char stack[STACK_SIZE] __attribute__ ((aligned(16)));
    int argc;
    char** argv;
};

static void winmain_mainloop(cyg_addrword_t data)
{
    struct ecos_winmain_data* winmain_data=(struct ecos_winmain_data*)data;
    invoke_WinMain(winmain_data->argc, winmain_data->argv);
}

void start_WinMain_thread(int priority, int argc, char** argv)
{
    static struct ecos_winmain_data winmain_data;
    winmain_data.argc=argc;
    winmain_data.argv=argv;

    cyg_thread_create(priority, winmain_mainloop, (cyg_addrword_t) &winmain_data,
              "winmain", (void *)  winmain_data.stack, STACK_SIZE,
              &winmain_data.handle, &winmain_data.thread);

    cyg_thread_resume(winmain_data.handle);
}

void start_WinMain(int argc, char** argv)
{
    invoke_WinMain(argc, argv);
}


#ifndef CYGPKG_LIBC_STARTUP

#include <cyg/infra/diag.h>


void exit(int status)
{
    diag_printf("exit(%d) was called !/n", status);
}

#endif
然后修改mdemo,让他能在ecos上运行

----------- packages/services/gfx/mw/current/src/demos/mwin/mdemo.c -----------
@@ -6,9 +6,10 @@
 #define MWINCLUDECOLORS
 #include "windows.h"
 #include "wintern.h"        /* for MwSetDesktopWallpaper*/
-
 #include "device.h"
-
+#if __ECOS
+#include "ecos_winmain.h"
+#endif
 #if DOS_TURBOC
 unsigned _stklen = 4096;
 #endif
@@ -486,3 +487,10 @@
     }
     return 0;
 }
+
+#if __ECOS
+void cyg_user_start(void)
+{
+    start_WinMain_thread(10,0,0);
+}
+#endif

 

本文原创,转载请注明出处 (rickleaf)

3. 重新配置ecos 选择MW的MWIN方式,去掉nano-x的支持,编译mdemo

Microwindows 0.91版本:嵌入式GUI系统详解 Microwindows是一个开源的、微内核的图形用户界面(GUI)系统,它提供了一种轻量级的方式,为嵌入式系统和小型设备提供窗口化操作界面。0.91版本是该系列中的一个里程碑,它在功能和性能上都有显著提升,为开发者提供了更为丰富的工具集和优化选项。 阅读详情

相关推荐

手把手拆解DGX GB200 NVL72:1个机柜如何塞进72块GPU?详解NVLink Switch铜缆背板设计

本文深度解析英伟达DGX GB200 NVL72系统如何通过NVLink Switch铜缆背板设计,在标准42U机柜中集成72块B200 GPU,实现1800GB/s的超高带宽。文章详细介绍了模块化架构、铜缆互连技术、液冷散热方案和高密度供电系统等核心创新,为AI算力需求提供突破性解决方案。

red88的博客 1578

microwindows位图解析

 第1章 microwinodows图形显示框架1.1 microwindows体系结构Microwindows 采用了分层结构设计方法,其层次结构如下图所示。同时, 这里也列出 Microwindows 源代码目录树下的主要目录结构,以便于对照参考。 microwindows --bin --Configsnano-X /win32 API --demos

bisword的专栏 2301

Android-音频配置文件详解

前言:   Android P 引入了一种新的音频政策配置文件格式 (XML),用于描述音频拓扑。新的 XML 文件支持定义输出输入流配置文件、可用于播放和捕获的设备以及音频属性的数量和类型。但是每个项目的代码里面都有很多音频配置文件,具体使用的是哪个文件呢?本文将详细讲述。 1. 查看运行时具体使用的xml adb shell dumpsys media.audio_policy | grep -iE "Config source:" 结果如下: Config source: /vendor

cheriyou_的博客 3945

ecos内存管理

    在嵌入式系统中,为了对内存资源进行很好地控制,避免发生不可预测的后果,一般建议使用静态内存分配。ecos是专门为实时嵌入式系统量身定做的操作系统,它的大多数系统调用在被使用时都要求将预先指定的由系统调用所产生的目标对象的内存地址传递给该系统调用(即对其进行静态内存分配)。如第一讲cyg_thread_create系统调用函数就要求传入句柄指针和线程数据结构体指针及堆栈起址,而这三个指针对应

aaaaatiger--寻路 4151

易灵思Ti60F100 FPGA的HyperRAM实战:从硬件连接到Native接口时序调试

本文详细介绍了易灵思Ti60F100 FPGA内置HyperRAM控制器的实战应用。文章从硬件设计要点(如400MHz+信号完整性、等长匹配)切入,重点解析了如何通过Interface Designer配置高效的Native接口,并分享了其时序详解与调试技巧,为开发者提供了一份从硬件连接到软件调试的深度指南。

weixin_29168153的博客 456

从零开始:TexLive(Latex)安装与配置全指南

本文提供了一份详尽的TexLive(Latex)安装与配置全指南,旨在帮助用户从零开始快速搭建LaTeX工作环境。内容涵盖从镜像下载、安装步骤详解、环境验证到高效编辑器(如VS Code)配置,并特别强调了中文排版支持与宏包管理,确保用户能顺利处理学术论文等专业文档的排版需求。

weixin_29284885的博客 903

MicroWindows介绍

   MicroWindows Open Source Project成立的宗旨是针对体积小的装置建立一套先进的视窗环境。在Linux桌面上通过交叉编译可以很容易地制作出MicroWindows的程序。MicroWindows能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示设备进行直接操作。因此,MicroWindows就显得十分小巧,便于移植到各种硬件和软件系统上。  然而Mi

冷雨 专栏 1394

PCB工艺-SI9000使用教程

本文介绍了阻抗计算工具SI9000的使用方法,重点讲解了微带线与带状线的区别、共面阻抗概念及参考面选择。通过USB差分走线实例,详细说明了如何选择计算模型、填写参数并确定线宽线距。文章还提供了层叠设计资料和工厂常规阻抗表格作为参考,建议制板时标注需控阻抗的线路供板厂调整。最后简单提及了嘉立创阻抗计算工具作为备选方案。

weixin_50120208的博客 2024

Microwindows安装与配置指南

Microwindows,也称为Nano-X Window System,是一个轻量级的图形窗口系统。它为Linux、Mac OS X、Android、EMSCRIPTEN等多种平台提供了Win32和Nano-X(类似X11)API,用于在窗口中执行剪裁图形绘制。它是一个开源项目,遵循Mozilla Public License协议。该项目主要使用C语言编写。 ## 2. 关键技术和框架 - ...

gitblog_00481的博客 1005

数理逻辑1 -- 命题演算1

一直对逻辑的东西很感兴趣,尤其最近做的东西和AI相关,因此下定决心系统地学习数理逻辑。这些笔记并不是严谨的描述,只是作为一些概念的快速参考,以及加入一些个人认为好玩的公式、定理和推导。 简单来说,数理逻辑系统是由一串“符号”组成的系统,基本元素是那一堆“符号”,由“符号”组成“式子”。逻辑系统并不关心“式子”是否对错,只关心“式子”是否存在,也即是假定存在某些“式子“,再确定”推导规则“(Rule

Jason渣神的专栏 1831

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1682

嵌入式系统下的Microwindows实现

前 言 目前,伴随着各种手持、无线及嵌入式设备的迅猛发展,相应的软硬件设计也发生了很大的变化。许多设备都使用了 Intel,MIPS,摩托罗拉的32位微处理器及大屏幕的液晶图形显示器。由于在过去10年中,桌面操作模式取得...

ciyi7513的博客 1283

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ (Java)

如果你收到的是双机位C卷考试通知,需要针对性地调整备考策略。自2025年11月19日起,华为OD机试已正式从双机位A卷切换至。复杂度明显提升,需要组合多个算法点。题面相对简单,直接考查编程基本功。考查问题分析、算法选择和优化能力。通常为1-2个核心算法点的应用。

算法大师! 165

eCos中的线程与同步

1.线程的创建 void cyg_thread_create(...),创建一个线程,处于挂起状态   2.线程的控制 void cyg_thread_yield (),使线程放弃对处理器的控制 void cyg_thread_delay (cyg_tick_count_t    delay),使线程挂起一定的时间 void cyg_thread_suspend (cyg_handle

4765

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux轻量级的图形库,基于Microwindows的嵌入式Linux轻量级图形应用库的设计

本文引用地址:http://www.eepw.com.cn/article/201809/388534.htm这里基于Linux2.4.19和Microwindows0.89进行讨论,主要难点:一是将Microwindows层次打乱后如何进行代码的重构,用最少的代码实现最有效的功能,二是提供中文显示和中文输入的支持。2.1 结构重构(1)底层驱动层整个系统的核心是键盘和屏幕数据结构,它们在Linu...

weixin_42522817的博客 443

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

用Microwindows(Nano-X)编写“hello world”

用Microwindows(Nano-X)编写“hello world” By: 吴垠 Date: 2008-05-09 Homepage:

吴垠的专栏 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Microwindows 介绍

Microwindows 介绍(The Nano-X Window System is an Open Source project aimed at bringing the features of modern graphical windowing environments to smaller devices and platforms. Nano-X allows applicati

ShorminHsu的专栏 1214

Microwindows(Nano-X)移植

Microwindows(Nano-X) Gui移植笔记 (2011-11-07 20:38) 分类: Gui 首先需要下载Microwindows的源文件以及依赖的库. 下载zlib包 http://www.zlib.net/zlib-1.2.3.tar.bz2 下载jpeg包 http://www.fmsoft.cn/uploads/minigui_org_

AMOVLAB(阿木实验室) 2376

Microwindows 及其 触摸屏驱动 在eCos MINI2440 上的实现

1. 修复MINI2440 QEMU的BUG2. 实现触摸屏驱动3. 修正eCos自带Microwindows的ecos_app错误。 同时简单讲述一下ecos的终端和字符设备的使用方法,给刚参与同人一个参考

嵌入式虚拟系统实验室 2047

Linux 下的图形库介绍

在进行Linux下的图形系统编程时,我们常常会遇到以下这些概念: Framebuffer,X11,SDL,DFB,miniGUI,OpenGL,QT,GTK,KDE,GNOME等等。 一、Linux图形领域的基础设施1.1XWindow XWindow从逻辑上分为三层:XServer、XClient和X协议。 最底层的XServer(X服务器)主要处理输...

weixin_34176694的博客 755

eCosBox搭建过程

这里记录了eCosBox的搭建过程,一方面做个记录免得自己忘记,另一方面给需要自己搭建eCos开发环境的同学做个参考。如果对VirtualBox不熟,请下载已经创建好的虚拟机映像,请阅读《eCosBox使用说明(1)——快速入门》 eCos官网:http://ecos.sourceware.org eCos中文技术网:http://www.52ecos.net eCos交流QQ群:144940...

zoomdy's blog 2611

Microwindows及其中文化方法

 [转帖]Microwindows及其中文化方法 嵌入式GUI系统是嵌入式系统中实现友好人机界面的关键技术,应用于嵌入式的GUI系统必须具备体积小、反应快、高可靠性、可移植性好以及可裁减等特点,对于实时系统还需要有时实方面的要求。目前,流行的嵌入式GUI系统有Microwindows、MiniGUI、Qt/Embedded等。基中Microwindows以其开放的源

bisword的专栏 1991

microwindows代码分析 (一)c/s模型的简化

转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/mimepp 作者联系方式:YU TAO microwindows代码分析 (一)c/s模型的简化 在microwin的运行模式中,nano-x通常的使用方式是c/s模型的,这是类似于x-windows的方式的,好处是某个client端的异常不会影响到server对其他client提供的服务。但是在很多嵌入

mimepp的专栏,这里都是原创 1950

【亲测免费】 Microwindows/Nano-X Window System 使用教程

Microwindows,也称为Nano-X Window System,是一个轻量级的图形窗口系统。它实现了Win32和Nano-X(类似X11)API,用于在Linux、Mac OS X、ELKS、EMSCRIPTEN、Android等多种平台上进行窗口中的图形绘制。它是开源的,并遵循Mozilla Public License。 该项目支持多种图形库和工具,如Nuklear即时模式GUI、...

gitblog_00829的博客 736

eCos读UART数据实例

eCos读UART数据实例

汽车以太网和SOA 3839
上一篇: flnx 在 mini2440 qemu ecos的nano-x上运行起来了
下一篇: RTEMS 在 Linux环境开发的小技巧
知秋一叶
博客等级 码龄19年 196粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值