【2023RT-Thread全球技术峰会】一套全新的物联网多应用框架xiotman,助你解决多应用的难题

news2024/11/23 18:36:50

screenshot_image.png

写在前面

就在上周,我作为讲师参与了2023RT-Thread全球技术峰会的主题演讲,我给大家带来了一套全新的解决物联网终端应用多样化的软件架构解决方案,在这里我再次以图文的形式介绍一下给社区的小伙伴,希望借此机会找到更多的同频小伙伴。

如果你也对此项目感兴趣,欢迎加我VX:721317716,一起深入探讨物联网应用的乐趣。

简介

xiotman,它是一套致力于解决物联网终端应用多样化挑战的软件架构解决方案。详见 github仓库 或 gitee仓库 。

xiotman的架构

screenshot_image.png

xiotman的特点

  • 应用的多样性:支持多应用开发
  • 组件的多样性:支持多组件解耦
  • RTOS的多样性:支持多RTOS
  • MCU的多样性:支持多MCU

xiotman的目录结构

screenshot_image.png

screenshot_image.png

资源文档

硬件支持

  • qemu-vexpress-a9
  • RA2E1
  • RA2L1
  • RA4M2
  • RA6M4

更多的硬件芯片支持中 …

实时操作系统支持

  • FreeRTOS
    • V9.0.x (待支持
    • V10.4.x (待支持
  • RT-Thread
    • V3.1.x (待支持
    • V4.1.x (待支持
    • V5.0.x (已支持
    • nano (待支持
    • rt-smart (待支持

更多的操作系统(版本)支持中 …

开发环境支持

  • Windows下:env + scons +gcc (已验证
  • Linux下:(待验证
  • MacOS下:(待验证

文档

待进一步补充。。。

例程

目前默认的仓库代码下,主要支持了 app_uart_debug 应用,和 app_smart_room 应用(基于RA4M2),其他demo应用还在进一步完善中。

其他 app_uart_debug 应用如下:

int app_main_entry(void *arg)
{
	uint32_t cnt = 0;

    rt_kprintf("\nHello XIoTMan@RT-Thread !\n");
    
    while (1)
    {
        rt_thread_mdelay(1000);
        rt_kprintf("cnt ---> === 666666 ...... %d\r\n", ++cnt);
    }

    return 0;
}

快速上手

xiotman 中支持选用 qemu-vexpress-a9 这块MCU,与QEMU硬件模拟,快速地调试和使用xiotman框架。

QEMU 入门指南(Windows)

QEMU 入门指南(Ubuntu)

以下操作步骤可以帮助你,快速在PC环境模拟运行,以Windows为例:

  1. 安装好env环境和scons工具;
  2. 启动env环境,进入到 xiotman/build 目录;
  3. 执行 scons --list_app 查看当前选择编译的应用、MCU、RTOS版本等信息;

screenshot_image.png

  1. 执行 scons --menuconfig=build 选择对应的应用、MCU及RTOS版本,默认的情况下,选择的是 app_uart_debug应用、qemu-vexpress-a9、rt-thread-v5.0.x版本;

screenshot_image.png

  1. 执行 scons --clean 清除当前选择的应用的中间编译输出;

screenshot_image.png

  1. 执行 scons 开始编译当前应用;

screenshot_image.png

  1. 成功完成编译后,在 xiotman/out/app_uart_debug(qemu-vexpress-a9)/ 目录可以看到对应的固件文件输出;

screenshot_image.png

  1. 执行编译输出的固件;进入到 xiotman/out/app_uart_debug(qemu-vexpress-a9)/ 目录,执行 ./qemu-nographic.bat 即可运行;

screenshot_image.png

这里的运行与 app_uart_debug 的应用逻辑是一致的:

int app_main_entry(void *arg)
{
	uint32_t cnt = 0;

    rt_kprintf("\nHello XIoTMan@RT-Thread !\n");
    
    while (1)
    {
        rt_thread_mdelay(1000);
        rt_kprintf("cnt ---> === 666666 ...... %d\r\n", ++cnt);
    }

    return 0;
}

至此,已经完成了xiotman在PC环境的验证,如果需要编译其他应用或其他MCU平台的代码,只需要回到build目录,执行 scons --menuconfig=build 即可选择;同时xiotman还保留了原生的 RTOS 的配置,执行 scons --menuconfig=rtos 即可进入配置:

screenshot_image.png

screenshot_image.png

演示视频

参见B站视频:【xiotman 基础功能演示】

screenshot_image.png

许可协议

xiotman 系统完全开源,遵循 Apache License 2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码,没有潜在商业风险。

社区支持

本项目由 架构师李肯 的独家个人社区(架构师李肯带你学嵌入式)进行维护,欢迎加入我们的社区,了解更多。

screenshot_image.png

贡献代码

如果您对 xiotman 感兴趣,并希望参与 xiotman 的开发并成为代码贡献者,请关注同名公众号:架构师李肯或加我VX: 721317716,与我取得联系。

号外

感谢大家的关注,如果大家对嵌入式的技术讨论感兴趣也欢迎与我联系,我们每天都会开展热议话题讨论:职场、技术、人生、面试、晋升;你感兴趣的话题也许都在里面。我们的口号是:在扯淡中放松自己,在摸鱼中学点东西

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/617195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx优化、Nginx+Tomcat实现负载均衡、动静分离集群部署

Nginx优化、NginxTomcat实现负载均衡、动静分离集群部署 一、Tomcat 优化二、Tomcat多实例部署1、安装好jdk2、安装tomcat3、配置tomcat环境变量4、修改tomcat2中的server.xml文件,要求各tomcat实例配置不能有重复的端口号5、修改各tomcat实例中的startup.sh和shutd…

ARM--$2$驱动模块

目录 1.驱动模块(驱动程序的框架) 2.内核中的打印函数(编写第一个驱动程序) Source Insight 使用: 打印函数编写 分析 3.驱动的多文件编译 4.模块传递参数 安装好驱动之后如何传参? 多驱动之间调用…

js内存管理与闭包

JavaScript内存管理 ◼ 不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存, 某些编程语言会可以自动帮助我们管理内存: ◼ 不管以什么样的方式来管理内存&#xf…

扩展系统功能——装饰模式(二)

装饰模式概述 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能&…

安装Unity Hub和Unity Editor

1、首先下载UnityHub的安装包: https://unity.com/cn/download 开始您的创意项目并下载 Unity Hub | Unity 2、运行安装包 3、运行Unity Hub 第一次运行Unity Hub会默认弹出登录Unity提示,正常登录就可以了,登录后会在浏览器提示打开 Unity…

nginx+lua(openresty) 安装及使用(一)

前言 OpenResty —— 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台。 OpenResty(也称为 ngx_openresty)是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超…

全志V3S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于一些设备,人们是希望从屏幕上面获取结果信息的,这样也显得更直观一些。另外,也有一些设备,它本…

阿里云OSS实现图片上传(后端接口)

文章目录 1、阿里云oss服务开通2、java操作阿里云oss,上传文件到阿里云oss1. 创建操作阿里云oss许可证2. 安装SDK3.修改配置文件4.创建常量类,读取配置文件中的内容5、OssController6、OssService7、OssServiceImpl8、改进1. 多次上传相同名称文件&#…

Segment Anything学习小结

论文地址:Segment Anything 项目地址:https://github.com/facebookresearch/segment-anything 在线Demo: https://segment-anything.com/demo 前言 近日,MetaAI团队开源了一个用于分割的10亿个masks,1100w张图片数…

测试新手如何晋升为月入过万的软件测试工程师?“我“的测试之路不简单...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试工程师这个岗…

记一次binlog恢复Mysql某张表数据的过程

1、备份数据库,非常重要 2、要用户不能操作(如果不能停止,可以新建一个库,所有的binlog执行操作在新库执行)。 3、登录服务器; 4、获取Mysql数据路径 cat /etc/my.cnf.d/mysql-server.cnf5、进入当前目录…

【SpinalHDL快速入门】4.2、基本类型之Bits

文章目录 1.1、描述1.2、声明1.3、运算符1.3.1、逻辑运算(Logic)1.3.2、比较(Comparison)1.3.3、类型转换(Type cast)1.3.4、部分赋值/提取操作符(Bit extraction)1.3.5、杂项&#…

Redis的使用规范小建议

Redis 核心技术与实战 笔记 作者: 蒋德钧 毕竟,高性能和节省内存,是我们的两个目标,只有规范地使用Redis,才能真正实现这两个目标。如果说之前的内容教会了你怎么用,那么今天的内容,就是帮助你用…

ChatGPT的学习过程【分析ChatGPT原理】+如何高效使用GPT

ChatGPT的学习过程【分析ChatGPT原理】如何高效使用GPT 此处借鉴:台湾大学李宏毅老师的讲解 资料:pan.baidu.com/s/1Jk1phne3ArfOERYNTPL12Q?pwd1111 GPTGenerative Pre-trained Transformer生成式预训练转换模型 ChatGPT共有四个学习阶段 学习文字接龙…

Java性能权威指南-总结7

Java性能权威指南-总结7 垃圾收集算法理解Throughput收集器堆大小的自适应调整和静态调整理解CMS收集器 垃圾收集算法 理解Throughput收集器 Throughput收集器有两个基本的操作;其一是回收新生代的垃圾,其二是回收老年代的垃圾。 下图展示了堆在新生代…

Python配置MySQL数据库使用

创建配置文件 config.ini [MySQL] host 172.xxx.xxx.xxx port 3306 user root password ****** db bgp_routing charset utf8创建读取配置文件 readConfig.py import configparser from pathlib import Pathclass ReadConfig():def __init__(self):configDir Path.cwd…

【学习日记2023.6.6】之 Linux环境下部署Java项目

文章目录 5. 项目部署5.1 手动部署项目5.2 基于Shell脚本自动部署5.2.1 介绍5.2.2 推送代码到远程5.2.3 Git操作5.2.4 Maven安装5.2.5 Shell脚本准备5.2.6 Linux权限5.2.7 授权并执行脚本5.2.8 设置静态IP 5. 项目部署 开发的项目绝大部分情况下都需要部署在Linux系统中。下面通…

springboot+vue多维的知识分类管理系统

随着国内市场经济这几十年来的蓬勃发展,突然遇到了从国外传入国内的互联网技术,互联网产业从开始的群众不信任,到现在的离不开,中间经历了很多挫折。本次开发的多维分类的知识管理系统有管理员和用户两个角色。管理员可以管理用户…

Dozzle-解决通过命令方式查看Docker 日志的神器

对于程序员们来说,Docker 一定是不陌生了。Docker 为我们的工作带来的巨大的便利,你可以使用它快速部署和扩展应用程序,并保证隔离性和可移植性,使应用程序在容器内独立运行,而且可以轻松地在不同的主机和操作系统上移…

bpmn是什么?bpmn.js的简单使用

文章目录 一、bpmn.js是什么?二、使用步骤1.引入bpmn2.使用bpmn3.引入bpmn-左侧工具栏4.引入bpmn-左侧工具栏5.引入bpmn数据导出6.数据导出为svg格式7.监听modeler并绑定事件7.监听element点击……8.自定义左侧工具栏图标9.自定义左侧工具栏完整效果 总结 一、bpmn.…