附近约学生一晚上100块软件-免费风楼阁全国约,附近一百元三个小时,100块钱3小时上门二维码

      Gitee 官方博客
      • 产品动态
      • 企业案例
      • 项目推荐
      • 关于开源
      • 发现更多
      • 回到 Gitee
      • 产品动态
      • 企业案例
      • 项目推荐
      • 关于开源
      • 发现更多
      • 回到 Gitee

      入门简单、轻量好用的嵌入式开发开源项目

      Gitee
      3 年前发布在 项目推荐
      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客
      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客

      前言

      从现实生活来看,使用嵌入式的产品比比皆是。譬如常使用的手机、平板电脑、智能家居、智能汽车、物联网以及航天航空设备等??梢运?,嵌入式系统的市场前景是相当巨大的。 尤其是当前随着物联网上升为国家战略后,造芯片成为各类科技企业发展必修课之后,作为芯片的底层技术————嵌入式系统也渐渐从后台走到前台。

      实际上,目前存在多种嵌入式系统的定义,但是从比较广泛且官方的说法来看:

      嵌入式系统是什么?

      “嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统?!?/strong>

      纵观嵌入式系统的发展,至今已有30余年的历史,但是这项系统并不只是包括为了解决特定问题而设计的硬件系统,同时也有控制系统的软件。从而,这对于嵌入式系统的开发人员而言,增添了新的挑战。

      首先对于嵌入式软件的开发而言,主要的挑战源自于嵌入式开发需要掌握底层「硬件」领域的知识,一旦硬件的更改将会对软件开发带来重大影响。

      此外,对于嵌入式的开发者而言,搞嵌入式系统的入门门槛较高,毕竟拥有软硬结合的能力,远远比单纯掌握某种程序开发语言更为艰难。

      虽然入门困难,但是目前越来越多的开发者主动将自己的嵌入式软件开发开源出来了,分享给更多需要学习嵌入式的开发者们,从自己玩到大家一块玩,既能让更多的人使用开发者的开源软件,了解学习并交流嵌入式开发,从自己玩到大家一块玩,同时还将软件的价值最大化。

      今天,我们就给大家介绍几款入门简单、轻量好用的嵌入式开源软件开发,让大家共同学习、交流,一起丰富嵌入式开发的生态环境。


      eventos-nano

      开源许可证: MIT

      项目作者: EventOS( EventOS 是一个 RTOS 项目)

      项目地址: eventos-nano

      项目地址: https://gitee.com/event-os/eventos-nano

      推荐原因:  eventos-nano 是一个企业级的嵌入式开发框架。之所以叫 Nano ,是因为它真的非常轻量。最低占用 ROM 1.5KB,RAM 172 字节。核心技术是事件总线,支持 Reactor 和状态机两种模式,协作式内核,极度可靠。可深度裁剪,移植方便。

      项目启动代码: 除源码外,只需要实现三个代码,就可以使用EventOS Nano来编写程序。

      1. main.c main 函数,初始化和启动 EventOS Nano 。

      /* include ------------------------------------------------------------------ */
      #include "eventos.h"                                // EventOS Nano头文件
      #include "event_def.h"                              // 事件主题的枚举
      #include "eos_led.h"                                // LED灯闪烁状态机
      
      /* define ------------------------------------------------------------------- */
      static eos_u32_t eos_sub_table[Event_Max];          // 订阅表数据空间
      static eos_u8_t eos_heap_memory[1024];              // 事件池空间
      
      /* main function ------------------------------------------------------------ */
      int main(void)
      {
          // EventOS Nano的初始化
          eos_init();                                     // EventOS初始化
          eos_sub_init(eos_sub_table);                    // 订阅表初始化
          eos_event_pool_init(eos_heap_memory, 1024);     // 事件池初始化
      
          // 状态机??榈某跏蓟?    eos_led_init();                                 // LED状态机初始化
      
          // 启动EventOS Nano。
          eos_run();                                      // EventOS启动并运行
      
          return 0;
      }

      2. eos_port.c 如 EventOS 在特定平台上的接口实现,也就是 EventOS Nano 移植的相关代码。

      可前往在《 UM-02-002 EventOS Nano 移植文档》查看详细说明。

      3. .ceos_led.c LED 的闪烁状态机。LED灯闪烁,就是单片机界的 Hello World 。

      /* include ------------------------------------------------------------------ */
      #include "eos_led.h"                    // ??橥肺募?#include "eventos.h"                    // EventOS头文件
      #include "event_def.h"                  // 事件定义头文件
      #include <stdio.h>                      // 标准输入输出库
      
      /* data structure ----------------------------------------------------------- */
      typedef struct eos_led_tag {            // LED类
          eos_sm_t super;
      
          eos_bool_t status;
      } eos_led_t;
      
      static eos_led_t led;                   // led对象,单例模式
      
      /* static state function ---------------------------------------------------- */
      // 初始状态
      static eos_ret_t state_init(eos_led_t * const me, eos_event_t const * const e);
      // Led的ON状态
      static eos_ret_t state_on(eos_led_t * const me, eos_event_t const * const e);
      // Led的Off状态
      static eos_ret_t state_off(eos_led_t * const me, eos_event_t const * const e);
      
      /* api ---------------------------------------------------- */
      void eos_led_init(void)
      {
          static eos_u32_t queue[32];                 // 事件队列
          eos_sm_init(&led.super, 1, queue, 32);      // 状态机初始化
                                                      // 状态机启动,以state_init作为初始状态。
          eos_sm_start(&led.super, EOS_STATE_CAST(state_init));
      
          led.status = 0;
      }
      
      /* static state function ---------------------------------------------------- */
      static eos_ret_t state_init(eos_led_t * const me, eos_event_t const * const e)
      {
          // 订阅事件Event_Time_500ms
          EOS_EVENT_SUB(Event_Time_500ms);
          // 使事件Event_Time_500ms,每隔500ms就被发送一次。
          eos_event_pub_period(Event_Time_500ms, 500);
      
          return EOS_TRAN(state_off);
      }
      
      static eos_ret_t state_on(eos_led_t * const me, eos_event_t const * const e)
      {
          switch (e->topic) {
              case Event_Enter:                           // 状态state_on的进入事件
                  printf("State On!\n");
                  me->status = 1;
                  return EOS_Ret_Handled;
      
              case Event_Time_500ms:                      // 收到Event_Time_500ms,跳转到state_off
                  return EOS_TRAN(state_off);
      
              default:
                  return EOS_SUPER(eos_state_top);
          }
      }
      
      static eos_ret_t state_off(eos_led_t * const me, eos_event_t const * const e)
      {
          switch (e->topic) {
              case Event_Enter:                           // 状态state_on的进入事件
                  printf("State Off!\n");
                  me->status = 0;
                  return EOS_Ret_Handled;
      
              case Event_Time_500ms:                      // 收到Event_Time_500ms,跳转到state_on
                  return EOS_TRAN(state_on);
      
              default:
                  return EOS_SUPER(eos_state_top);
          }
      }

      klite

      开源许可证: MIT

      项目作者: jiangxiaogang

      项目地址: https://gitee.com/kerndev/klite

      项目简介: KLite 的定位是一款入门级的嵌入式实时操作系统内核,以简洁易用为设计目标,旨在降低嵌入式 RTOS 的入门难度。

      项目操作准备:

      //只需要包含这一个头文件
      #include "kernel.h"
      
      //用于初始化应用程序的线程
      void init(void *arg)
      {
      	//在这里完成外设和驱动初始化
      	//并创建更多线程实现不同的功能
      	//thread_create(...)
      }
      
      //空闲线程,只需调用kernel_idle即可
      void idle(void *arg)
      {
      	kernel_idle();
      }
      
      //C语言程序入口
      void main(void)
      {
      	static uint8_t heap[HEAP_SIZE]; /* 定义堆内存 */
      	kernel_init(heap, sizeof(heap)); /* 系统初始化 */
      	thread_create(idle, 0, 0); /* 创建idle线程 */
      	thread_create(init, 0, 0); /* 创建init线程 */
      	kernel_start(); /* 启动系统 */
      }

      GuiLite

      开源许可证: Apache-2.0

      项目作者: idea4good

      项目地址: https://gitee.com/idea4good/GuiLite

      推荐原因: GuiLite 是一款能运行在“ Docker ”上的轻量嵌入式UI框架,仅 4 千行 C++ 代码, 0 依赖,单一头文件库( GuiLite.h ),单片机上也能流畅运行。

      项目图层管理:

      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客
      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客

      python-simple-http-server

      开源许可证: MIT

      项目作者: keijack

      项目地址: https://gitee.com/keijack/python-simple-http-server

      推荐原因: python-simple-http-server 是一个超轻量级的 HTTP Server,支持嵌入到 WSGI 标准中。

      如何启动服务器:

      
      import simple_http_server.server as server
      # 如果你的控制器代码(处理请求的函数)放在别的文件中,那么在你的 main.py 中,你必须将他都 import 进来。
      import my_test_ctrl
      
      
      def main(*args):
          # 除了 import 外,还可以通过 scan 方法批量加载 controller 文件。
          server.scan("my_ctr_pkg", r".*controller.*")
          server.start()
      
      if __name__ == "__main__":
          main()

      xboot

      开源许可证: MIT

      项目作者: xboot

      项目地址: https://gitee.com/xboot/xboot

      推荐原因: xboot 是一款功能强大、可移植性强、代码复用率高的嵌入式系统 bootloader ,只需编写一次,即可在任何地方运行。

      项目演示:

      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客

      nutzboot

      开源许可证: Apache-2.0

      项目作者: Nutz

      项目地址: https://gitee.com/nutz/nutzboot

      推荐原因: nutzboot 是一款开放的企业级微服务框架,提供自动配置,嵌入式web服务。

      项目演示:

      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客

      入门简单、轻量好用的嵌入式开发开源项目-Gitee 官方博客
      Gitee开源项目

      本文系作者 @Gitee 原创发布在 Gitee 官方博客。未经许可,禁止转载。

      关于纸质专用发票暂停邮寄的通知
      上一篇
      热门开源Web开发框架推荐
      下一篇
      近期文章
      • 启航 AI 新航道!Gitee 双十一与你共享智能新未来
      • 《中国DevOps现状调查报告(2023)》发布,Gitee 领跑国产平台
      • 研运一体化之下,Gitee 如何精准赋能银行实施大规模敏捷
      • 对数字「祛魅」,中大型规模企业如何进行有效的研发效能度量?
      • 从混乱到卓越,Gitee Code 如何治好 IT 部门的精神内耗
      • 科技赋能,Gitee 助力国家海关总署实现重大业务改革
      • 科大讯飞选择Gitee旗舰版,完成研发协作平台国产化替代
      • 用脑图做测试用例,高效到家了!
      • 信创驶入快车道,中国赛宝实验室选择 Gitee 搭建高效研发协作平台
      • 金融人怎么写出安全可靠的代码?知名证券企业这样做
      相关文章
      研运一体化之下,Gitee 如何精准赋能银行实施大规模敏捷
      对数字「祛魅」,中大型规模企业如何进行有效的研发效能度量?
      从混乱到卓越,Gitee Code 如何治好 IT 部门的精神内耗
      科技赋能,Gitee 助力国家海关总署实现重大业务改革
      关于我们

      Gitee(gitee.com)是 OSCHINA.NET 推出的代码托管·协作开发平台,支持 Git 和 SVN,提供免费的私有仓库托管。目前已有超过 1200 万的开发者选择 Gitee。

      品牌内容
      开源软件 GVP计划 Gitee 封面人物 CopyCat 代码克隆检测
      友情链接
      开源中国 Gitee Gitee 高校版 Gitee 企业版
      Copyright ? 2013-2025 Gitee 官方博客. Designed by nicetheme.
      • 产品动态
      • 企业案例
      • 项目推荐
      • 关于开源
      • 发现更多
      • 回到 Gitee
      热门搜索
      • Gitee
      • gitee 企业版
      • 码云
      • 开源项目
      • 码云Gitee
      • GVP
      • Git
      • 开源
      • 码云企业版
      • 码云周刊
      • 码云 gitee
      • DevOps
      • gitee企业版
      • 内源
      • 内部开源
      • innersource
      • 小程序
      • 企业版
      Gitee
      Top

      感谢您访问我们的网站,您可能还对以下资源感兴趣:

      附近约学生一晚上100块软件
      100元5小时上门服务内容 全国凤楼小姐兼职同城网站 2024全国各城市凤楼信息 全国空降同城微信电话号码 附近找小组联系方式