flnx 在 mini2440 qemu ecos的nano-x上运行起来了

(失败)尝试将eCOS移植到stm32h743vi上 目录背景过程感受 背景 我的学长在一家有名的AI公司上班,他们希望能将OpenCV移植到一款低成本的CPU上,但他们对于硬件完全不懂,于是学长希望我尝试一下(虽然我那时也还不懂操作系统和CPU间的关系)。选择stm32h743vi这个型号的单片机首先当然是因为他与arm contex-a内核的CPU相比很便宜啦,其次他有DMA2D控制器,说是“专用于图像处理的专业 DMA”,然后片上ROM和RAM都还比较大,就选它了。后来看手册的时候,才发现这个所谓的DMA2D仅仅只能实现对图像的像素点进行修改值操作,并没 阅读详情

(源代码会在整理以后上传到实验室,emboslab的ecos仓库,请留意我的置顶)

 

本帖原创,转载请注明出处,谢谢。(rickleaf)

1. 什么是flnx, 为什么要做flnx到ecos的移植

提及flnx的时候首先要了解一下fltk,fltk是 Fast Light Toolkit 的缩写,他是一个跨平台的GUI开发库。

FLTK在设计之初就考虑了,如何能应用在不同的窗口管理架构之下。而且,FLTK有着自己独到的事件处理方法。

如果您在Linux的系统下,还可以用FLUID作为图形开发的工具,方便的生成可视化UI。

下图就是ubuntu 10.04下面的FLUID

 

 

说到这里大家可能会开始对FLTK感兴趣了,那就去他的官方网站看看吧

http://www.fltk.org/

 

到现在为止我没还没有谈到FLNX, 既然FLTK能运行在很多窗口管理架构之下,当然也能运行在Nano-X之下。

之前我们已经花了很多经历把ecos的Nano-X在mini2440 QEMU平台下面运行起来了,那么FLNX也可以运行在ecos下面吗?

我在网上搜索了一下,还是有成功案例的,但是可能是推广等多种问题这部分用的人并不是很多。

 

对于系统而言,无论那种UI方案,如果在性能允许的情况下,大家都希望能应用方便,我也一样。

我们后面来看看如果把FLNX模块化的放入ecos的packages仓库中

2. FLNX的移植,把FLNX放入ecos的packages中

首先我们要仿照其他的services下面的gfx的模块建立一个flnx的目录(尽量小写吧,这个也是不多的coding style之一)

先看看我建立的flnx目录

ricky@ricky-laptop:services$ pwd
/opt/ecos/ecos-hg/packages/services
ricky@ricky-laptop:services$ ls -l gfx/
总用量 36
drwxr-xr-x 3 ricky ricky 4096 2011-03-17 17:15 emwin
drwxrwxr-x 3 ricky ricky 4096 2011-04-04 19:41 flnx
drwxr-xr-x 3 ricky ricky 4096 2011-02-12 10:05 jpeg-6b
drwxr-xr-x 3 ricky ricky 4096 2011-02-21 17:18 microwin
drwx------ 3 ricky ricky 4096 2011-01-30 15:24 minigui
drwxr-xr-x 3 ricky ricky 4096 2010-04-23 14:38 mw
drwxr-xr-x 3 ricky ricky 4096 2011-02-12 10:05 png
drwxr-xr-x 3 ricky ricky 4096 2011-02-22 17:16 pw
drwxr-xr-x 3 ricky ricky 4096 2011-02-12 10:05 qvfb
ricky@ricky-laptop:services$ ls -l gfx/flnx/
总用量 4
drwxr-xr-x 7 ricky ricky 4096 2011-04-04 19:40 current

 

然后我们把原始的flnx拷贝进来,把flnx的src目录拷贝到current下,把test目录拷贝为current下面的tests

然后建立一个cdl目录,放置makefile需要的配置文件

 

ricky@ricky-laptop:services$ ls -l gfx/flnx/current/
总用量 20
drwx------  2 ricky ricky 4096 2011-04-04 19:34 cdl
drwxr-xr-x 12 ricky ricky 4096 2011-04-03 14:09 flnx
drwxr-xr-x  3 ricky ricky 4096 2011-04-03 13:40 include
drwxrwxr-x  2 ricky ricky 4096 2011-04-04 21:02 src
drwxrwxr-x  2 ricky ricky 4096 2011-04-04 21:02 tests

 

后面我们要花些经历把需要编译的cxx文件写到flnx的cdl文件中(我命名这个packages的cdl文件名为flnx.cdl)

 

######DESCRIPTIONBEGIN####
#
# Author(s):      Ricky Wu
# Original data:  Ricky Wu
# Contributors:
# Date:           2011-04-04
#
#####DESCRIPTIONEND####
#
# ====================================================================

cdl_package CYGPKG_FLNX {
    display       "flnx"
    requires      CYGPKG_POSIX
    requires      CYGPKG_ISOINFRA
    requires      CYGINT_ISO_C_TIME_TYPES
    requires      CYGINT_ISO_STRERROR
    requires      CYGINT_ISO_ERRNO
    requires      CYGINT_ISO_ERRNO_CODES
    requires      CYGINT_ISO_MALLOC
    requires      CYGINT_ISO_STRING_BSD_FUNCS
    requires      CYGPKG_IO_FILEIO
    description   "flnx"

    # Note: separating the stack implementation from the common support leads
    # to some rather incestious config file relationships.
    define_proc {
    }

    compile                             /
        src/cmap.cxx                /
        src/dump_compose.c        /
        src/Fl_abort.cxx        /
        src/Fl_add_idle.cxx        /
        src/Fl_Adjuster.cxx        /
        src/Fl_Animator.cxx        /
        src/fl_arc.cxx                /
        src/fl_arci.cxx                /
        src/Fl_arg.cxx                /
        src/fl_ask.cxx                /
        src/Fl_Bitmap.cxx        /
        src/Fl_Box.cxx                /
        src/fl_boxtype.cxx        /
        src/Fl_Browser_.cxx        /
        src/Fl_Browser.cxx        /
        src/Fl_Browser_load.cxx            /
        src/Fl_Button.cxx        /
        src/fl_call_main.c        /
        src/Fl_Chart.cxx        /
        src/Fl_Check_Button.cxx            /
        src/Fl_Choice.cxx        /
        src/Fl_Clock.cxx        /
        src/Fl_Color_Chooser.cxx    /
        src/fl_color.cxx        /
        src/Fl_Counter.cxx        /
        src/fl_cursor.cxx        /
        src/fl_curve.cxx        /
        ... ...

    cdl_component CYGPKG_FLNX_OPTIONS {

有几点需要注意,H文件和资源文件是不能参与编译的。

 

cdl_option CYGPKG_FLNX_CFLAGS_ADD {
            display "Additional compiler flags"
            flavor  data
            no_define
            default_value { "-I$(PREFIX)/include/FL -I$(REPOSITORY)/$(PACKAGE)/src -D__FLNX_LIB__ -DNANO_X -D__ECOS -Dlint" }
            description   "
                This option modifies the set of compiler flags for
                building the flnx package.
                These flags are used in addition to the set of global flags."
        }

 

cdl中要实现之前flnx makefile中的第一的一些宏,不如既然我们要用在nano-x就要定一个 NANO-X

然后,我们要在ecos.db中加入我们package的信息,如下

 

package CYGPKG_FLNX {
        alias           { "flnx" flnx }
        directory       services/gfx/flnx
        script          flnx.cdl
        description     "FLNX"
}

 

这样我们的flnx就建成了。

 

我们在应用的时候先要

ecosconfig add mw  配置好nano-x的ecos支持

然后

ecosconfig add flnx

这样我们编译的系统就会有flnx的库文件了,在编译过程中会碰到一些错误,一般都是头文件缺失造成的。

iostream这个头直接注释掉就可以了,

如果friend class出错,就要在class之外现定义一个class

3.如何应用FLNX

如果您想引用flnx,必须对nano-x在ecos的应用有所了解,这是必须的。


在ecos中开始nano-x的支持,实际上就是一个thread作为nano-x的服务,一个之前fltk的引用程序必须作为一个thread来用。

有个这个信息,可以稍微写一个简单的应用。

 

下面的两个例子一个是hello,一个是form。

 

 

eCos移植到mini2440的详细步骤 eCos移植到mini2440的详细步骤,可以用MDK开发 立即下载

相关推荐

deepfacelab下载安装及训练(小白篇),以及导出SAEHD为dfm文件,解决broken pipe问题

其中如果用的是RTX30系列显卡的话,需要把WIN10升级到20H4或更新版本,然后打开硬件加速,不然会出现训练时一直卡在第一个迭代不动了,我的服务器版本为22H2,符合。支持WIN10,win11,WIN7,LINUX,不支持mac(因为mac不支持NVIDIA显卡)

caoyongsheng的博客 3885

STM32移植ECOS(转载)

转载至:http://bbs.21ic.com/icview-520412-1-1.html 经过一段时间折腾,让redboot和eCos在stm32上跑起来了,这也算是第一段的目标。仅管还有这样那样的问题,也有一些自己尚未弄懂的问题,但初步达到了自己想要的结果。 在每个移植步骤中,我都把它详细记录成文章发表在我的个人独立域名博客中。由于内容过多,所以在这里我以链接的形式呈现给

davidlinux的专栏 1585

Open3D 教程学习指南 (持续整理)

Open3D 是一个开源库,旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护,支持多种 3D 数据处理任务,如点云处理、3D 重建、几何处理和可视化等。

Chase Blog 5925

ecos usb驱动开发

摘要 eCos是一个优秀的嵌入式实时操作系统。eCos的体系结构是一种分层结构,硬件抽象层将操作系统与硬件隔离开,这为把eCos移植到不同的硬件 平台提供了便捷的方法,抽象层就像软件与硬件之间的桥梁。主要的移植思想是,按照eCos的模块化设计,完成硬件抽象层。 关键词 eCos 移植 硬件抽象层 嵌入式 可配置操作系统 引言   目前,嵌入式操作系统的种类较多,其中比较流行的有VxW

ConceptCon 1442

谷歌倾斜摄影数据获取以及转换3DTiles介绍

解析谷歌倾斜模型数据,再一键设置无人值守的情况下,快速将谷歌倾斜摄影模型数据转成3DTiles数据,并在Cesium上进行流畅漫游缩放显示,效果优于官方3DTiiles格式数据

cyber_room的博客 5335

Android14到Android16源码移植中的Bluetooth模块规范适配指南

本文详细解析了从Android14到Android16源码移植过程中Bluetooth模块的规范适配挑战,重点介绍了Android.bp配置差异及常见编译报错解决方案。针对代码规范检查、final字段声明、静态方法优化等核心问题提供实用修复方法,帮助开发者高效完成版本升级适配工作。

fire9的博客 254

qemu+ubuntu安装MiniGUI笔记

  (未完成,待修改)     $ wget http://sourceforge.net/projects/minigui/files/minigui/GPL-V1.6.10/libminigui-1.6.10.tar.gz $ wget http://sourceforge.net/projects/minigui/files/minigui/GPL-V1.6.10/minigui...

weimingtom的待宵草 316

OneNET物模型实战:如何用NB-IOT模块上传JSON数据并解析

本文详细介绍了如何利用NB-IOT模块将传感器数据上传至中国移动OneNET物联网平台,并利用其物模型功能实现JSON数据的自动解析。文章从理解OneNET物模型与OneJson协议入手,逐步讲解了平台侧物模型创建、设备注册,以及设备端数据构造、HEX编码与NB-IOT模块AT指令上报的全流程,并提供了关键的调试技巧与常见问题排查方法,为物联网开发者提供了完整的实战指南。

sugar的博客 680

ecos(redboot)移植剖析

说明:虽然是转载但已找不到原作的地址,也经过了我的一些加工修改。ecos(redboot)移植剖析(redboot)移植不同平台之间的移植(CPU相同,硬件平台不同)    mypath是ecos的安装目录,mypath/ecos/package/ecos.db记录了现有的包(package)和目标板(target)描述。一个target包含若干的package,target的描述会出现在conf...

gioc的专栏 467

Matlab实战:用DQN算法让机器人学会自主避障(附完整代码)

本文详细介绍了如何使用Matlab实现DQN(深度Q网络)算法,使机器人在复杂环境中学会自主避障。通过环境建模、网络架构设计、奖励函数优化及实战调试,提供了完整的代码实现和训练策略,帮助开发者快速应用于机器人路径规划项目。

t8u9v0w1x的博客 232

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 626

翻译ecos 手册----移植指南

Introduction eCos has been designed to be fairly easy to port to new targets. A target is a specific platform (board) using a given architecture (CPU type). The porting is facilitated by the hierar

囊萤之光 1720

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3533

MIPS32->MIPS16E

As a 32-bit Instruction Set Architecture, the code density of MIPS32 is not as high as that of MIPS16E. Our practice has shown that if a program is built with MIPS16E instead of MIPS32, the code size

sxx1728的专栏 1377

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ecos移植准备

参考: http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d8d8b492c93cf13d9735b361b31a5a660794613d3b37f6504ad4a57ebfb2172415876a09bbe8949d6ba922a2d9f27432a5ad91f069644ef9d497...

dianrenchun4670的博客 222

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

嵌入式实时操作系统ECOS在S3C2510上的移植实现(转)

作者:华南理工大学电子与信息学院 赵楚莹 尹俊勋  来源:电子设计应用  发布时间:2006-4-25 下午 10:51:39 摘    要: 本文介绍了实时操作系统ECOS的特点及基本结构,并具体研究了ECOS在三星公司以ARM940T为内核的S3C2510嵌入式芯片上的移植方法。文章 着重讨论了移植过程中的重点与难点部分:ECOS的硬件抽象层(HAL)移植。该移植方案已经过实际测试,系统稳...

paofan 242

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

eCos在华邦w90n740芯片上的移植的分析与指导

http://mcuos.com/redirect.php?tid=2651&goto=lastpost(原文) 关于ecos内核移植的部分内容: 一、 根据硬件平台修改代码 我们要针对740的芯片和板子情况来具体修改一些代码,主要文件放置位置及其功能如下: 1、修改平台的io宏定义 *********************************...

weixin_30369087的博客 189

Viewml编译

本阶段是进行Viewml开源浏览器的编译工作,从不了解到知道一些,中间经历了一段段时间,不知不觉时间就已经过去了,这里将工作情况陈述如下:Microwindows:包括底层的鼠标、键盘的驱动以及一些最基本的绘图函数,Fltk(flnx):一个简单灵活的GUI工具箱也就是基于底层绘图函数建立的图形库,供上层调用。(针对Microwindows引擎的FLTK的Linux版本被称为flnx)。

beny610的专栏 1655

eCos官方请求 mini2440 QEMU补丁,申请FSF成功,组织内的ecos代码已经了证书

组织内的ecos代码已经了证书 eCos官方已经许可了我们重新发布的eCos代码,谢谢大家的支持

嵌入式虚拟系统实验室 1348

qemu虚拟开发板

虚拟开发板From armuxJump to: navigation, search如果你想拥有一块开发板,而又不想花钱,那你就可以自己做一个虚拟开发板。虚拟开发板是用QEMU模拟出来的一块板子,实际上就是一个虚拟机。Contents[hide]1 调试模式1.1 QEMU1.1.1 下载QEMU1.1.2 安装QEM

孤独小剑的专栏 2192

qemu mips来运行与调试eCos内核/协议栈

前言:12年7月份用eCos实时内核来实现一个二层交换的板子(mips),所以先用虚拟机了了解eCos中断处理,内核调度,协议栈等,并写了文章《如何通过gxemul来运行eCos》简单记录当时的过程。实际上用gxemul不久,就改用qemu来运行eCos了。今年有一个朋友在博客问我关于gxemul来运行eCos的问题,所以现在更新一下用qemu运行eCos的操作过程。 用qemu的优点...

483

MINI2440 QEMU 的 eCos 启动分析

1.总览一下eCos的启动方式eCos目前默认的启动方式有三种,RAM,ROM,ROMRAM。RAM启动的意思就是直接在RAM中运行,这种方式一般用于调试,不做必要的硬件初始化。ROM启动方式的意思是在ROM中直接运行,当然一定要支持XIP的NORFLASH才可以。ROMRAM的启动方式的意思是,ROM中开始运行然后把所有的代码复制到RAM中继续运行。2.Mini2440 QEMU的启动方式的选择MINI2440中目前还没有实现NOR和NAND Flash,(虽然NAND的代码加了,但是里面注名工作不是很正

嵌入式虚拟系统实验室 2274

如何编译第一个eCos应用程序

这是一个给eCos初学者的简单说明,放在这里方便大家在下载和编译好eCos的库文件以后知道如何开始自己的eCos之旅。 (本文原创转载请注明出处) 环境配置 指定eCos repository和所需编译器的路径(其实这个也是要编译eCos库文件必须做的一个步骤) PA

嵌入式虚拟系统实验室 4337

GUI 在 MINI2440 QEMU 的ecos 上的移植

经历了redboot, kernel测试,网卡驱动,web server的测试,很自然的我们想到了UI。(本帖系原创,转载请注明出处)这不仅仅是移植一个GUI, 更重要的让MINI2440 QEMU的ecos仿真平台更加完整话。对emwin的移植,需要两个部分,老生常谈了网上到处都是。(本移植也只是针对学习和测试,并非商业用途)1. LCD的驱动这个请网上搜索,MINI2440 LCD Driver就可以。2. GUI的OS接口探究emwin的OS接口部分,我们需要利用ecos的两个同步资源cyg_sema

嵌入式虚拟系统实验室 2823
上一篇: PW graphic library 测试
下一篇: ecos 自带的Microwindows中加入mwin的支持
知秋一叶
博客等级 码龄19年 196粉丝 68原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值