实际上,目前存在多种嵌入式系统的定义,但是从比较广泛且官方的说法来看:
纵观嵌入式系统的发展,至今已有30余年的历史,但是这项系统并不只是包括为了解决特定问题而设计的硬件系统,同时也有控制系统的软件。从而,这对于嵌入式系统的开发人员而言,增添了新的挑战。
首先对于嵌入式软件的开发而言,主要的挑战源自于嵌入式开发需要掌握底层「硬件」领域的知识,一旦硬件的更改将会对软件开发带来重大影响。
此外,对于嵌入式的开发者而言,搞嵌入式系统的入门门槛较高,毕竟拥有软硬结合的能力,远远比单纯掌握某种程序开发语言更为艰难。
虽然入门困难,但是目前越来越多的开发者主动将自己的嵌入式软件开发开源出来了,分享给更多需要学习嵌入式的开发者们,从自己玩到大家一块玩,既能让更多的人使用开发者的开源软件,了解学习并交流嵌入式开发,从自己玩到大家一块玩,同时还将软件的价值最大化。
今天,我们就给大家介绍几款入门简单、轻量好用的嵌入式开源软件开发,让大家共同学习、交流,一起丰富嵌入式开发的生态环境。
01eventos-nano开源许可证:MIT
项目作者:EventOS(EventOS是一个RTOS项目)
项目地址:eventos-nano
项目地址:
推荐原因:eventos-nano是一个企业级的嵌入式开发框架。之所以叫Nano,是因为它真的非常轻量。最低占用,RAM172字节。核心技术是事件总线,支持Reactor和状态机两种模式,协作式内核,极度可靠。可深度裁剪,移植方便。
项目启动代码:除源码外,只需要实现三个代码,就可以使用EventOSNano来编写程序。
1.函数,初始化和启动EventOSNano。
/*include------------------------------------------------------------------*/include"event_"//事件主题的枚举include"eos_"//模块头文件include"event_"//事件定义头文件include""//用于初始化应用程序的线程voidinit(void*arg){//在这里完成外设和驱动初始化//并创建更多线程实现不同的功能//thread_create()}//空闲线程,只需调用kernel_idle即可voididle(void*arg){kernel_idle();}//C语言程序入口voidmain(void){staticuint8_theap[HEAP_SIZE];/*定义堆内存*/kernel_init(heap,sizeof(heap));/*系统初始化*/thread_create(idle,0,0);/*创建idle线程*/thread_create(init,0,0);/*创建init线程*/kernel_start();/*启动系统*/}03GuiLite开源许可证:
项目作者:idea4good
项目地址:
推荐原因:GuiLite是一款能运行在“Docker”上的轻量嵌入式UI框架,仅4千行C++代码,0依赖,单一头文件库(),单片机上也能流畅运行。
项目图层管理:
04python-simple-http-server开源许可证:MIT
项目作者:keijack
项目地址:
推荐原因:python-simple-http-server是一个超轻量级的HTTPServer,支持嵌入到WSGI标准中。
如何启动服务器:
importsimple_http_除了import外,还可以通过scan方法批量加载controller文件。("my_ctr_pkg",r".*controller.*")()if__name__=="__main__":main()05xboot开源许可证:MIT
项目作者:xboot
项目地址:
推荐原因:xboot是一款功能强大、可移植性强、代码复用率高的嵌入式系统bootloader,只需编写一次,即可在任何地方运行。
项目演示:
06nutzboot开源许可证:
项目作者:Nutz
项目地址:
推荐原因:nutzboot是一款开放的企业级微服务框架,提供自动配置,嵌入式web服务。
项目演示: