对于stm32这类cpu来说,没有MMU意味着不能使用linux,即使勉强上ulinux也非常吃力。目前的现状是各个cpu系列的编程区别甚大,另一个问题就是代码复用率太低了。基本上每做一个项目或工程都需要重新移植驱动代码,或多或少的都得重新做驱动适配等重复性工作,况且,此类情况带来的另一个严重问题是代码接口前后不统一,试想,很多人对于同一个外围器件比如最简单的DS18B20,在不同的CPU上写出了几个版本的驱动程序,由此带来的问题是,产品的业务代码将会变得难以维护,因为驱动层的访问接口不统一,导致业务层代码的复用率就更加的低下了。

再者,对于Linux系统之所以代码利用率非常高(有非常丰富的系统库和三方库)就是因为其系统具有层的概念,各层之间相互协调工作,通过系统提供的层间接口统一访问不同层之间的代码,如:应用层操作硬件的时候面向的是驱动层,并不直接操作具体的硬件寄存器等。即可做到很好的层间代码解耦。应用层程序员甚至不需要具体的硬件型号是什么,只需要遵守系统或框架提供的层间访问接口即可轻松的完成硬件操作。

但是,目前在STM32之类的cpu中并没有一个合适的类似Linux的系统或框架来支撑我们的产品快速迭代和开发,以此来降低产品开发的难度和提高代码利用率降低时间成本。

鉴于以上情况,本人在参考linux一些理论的情况下编写出嵌入式VFS异步事件框架,具有以下特点:

1.多平台适配,可以经过适配不同的RTOS和不同的CPU。目前支持STM32全系列,其他的不爱搞。

2.提供一个异步事件驱动框架,通过注册事件,将会以线程级异步回调注册事件的回调。

3.提供常用的内核定时器驱动,信号驱动,延时信号驱动,SIM800驱动,IIC核心,SPI核心,串口驱动,多线程日志输出等。

4.提供统一的应用层访问接口,框架向上屏蔽硬件细节,向下屏蔽cpu差异。

5.框架内核运行时异常和错误捕捉

6.集成丰富的三方库,TEA加密,BASE64,YMODEM,VSPI,NANOPB,BOOTLOADER,通用数据传输流协议WDATA等。

7.提供统一的片内FLASH访问系统。

8.提供功能强大的SHELL交互式接口

9.提供一个内置的动态代码载入器,简单说就是可以像安卓一样安装APP,运行多个APP,也可随时关闭APP。

。。。。。。还有很多,上图看看代码例子吧!!

RTC访问:

此代码是SHELL系统中RTC异步调回,用于从基于串口的SHELL系统操作RTC....

SHELL交互式系统:

暂时就这些了,不爱写了,玩去......

linux异步事件框架,基于Cortex-M系列CPU的异步事件驱动中间件相关推荐

  1. Linux下V4L2框架基于SDL库本地USB摄像头监控

    Linux下V4L2框架基于SDL库本地USB摄像头监控 1.摄像头框架编程步骤 (1)打开摄像头设备(/dev/video0 ./dev/video1 ) (2)设置图像格式:VIDIOC_S_FM ...

  2. AliOS Things异步事件框架Yloop

    摘要: Yloop概要 Yloop是AliOS Things的异步事件框架.Yloop借鉴了,libiuv及嵌入式业界常见的event loop,综合考虑使用复杂性,性能,及footprint,实现了 ...

  3. Spring5源码解析-Spring中的异步事件

    上一篇 Spring框架中的事件和监听器并未对Spring框架中的异步事件涉及太多,所以本篇是对其一个补充. 同步事件有一个主要缺点:它们在所调用线程的本地执行(也就是将所调用线程看成主线程的话,就是 ...

  4. python爬虫文本去重_Python微型异步爬虫框架

    Amipy Python微型异步爬虫框架(A micro asynchronous Python website crawler framework) 基于Python 3.5 + 的异步async- ...

  5. 【Rust 日报】2022-10-23 tachyonix:一个高性能异步计算框架

    tachyonix:异步多生产单消费有界通道 这个库是 Asynchronix 的一个分支,它持续努力地构建用于系统仿真的高性能异步计算框架. 这是一个简洁的异步通道,以快速著称,但也不会在正确性和质 ...

  6. Promise处理前端异步事件

    一:理解两种类型的回调函数 1,同步回调函数:立即执行,完全执行完才结束,不会放入回调队列中.例如:数组遍历相关的回调函数/Promise的excutor函数2,异步回调函数:不会立即执行,会放入回调 ...

  7. 【转】1.7异步编程:基于事件的异步编程模式(EAP)

    传送门:异步编程系列目录-- 上一篇,我给大家介绍了".NET1.0 IAsyncResult异步编程模型(APM)",通过Begin*** 开启操作并返回IAsyncResult ...

  8. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

  9. Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架

    Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...

  10. java 协程框架_GitHub - yaozhang0105/dactor: Dactor是基于Java的轻量级同步异步统一处理框架,基于协程思想构建...

    DActor Introduction DActor框架基于协程思想设计,可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发.无阻塞和同步代码的易读 ...

最新文章

  1. php专周总结,【嘉兴东臣php】HTML5、CSS3学习周总结
  2. 拯救者linux无法正常关机,Ubuntu无法关机解决办法
  3. 两种设置安卓背景图片的方法
  4. 皖西学院计算机科学与技术分数线,2017年皖西学院艺术类本科专业录取分数线...
  5. properties配置文件在idea中默认utf-8编码可能会乱码的解决
  6. qt 如何 指针 自动 释放内存_要是面试官再问你智能指针的问题,就拿这篇文章“盘他”!!!...
  7. 解决 elementUI 在IE下 table 表格宽度不是100%的问题
  8. 巴斯克维尔字体标本案例研究
  9. 开源开放 | OpenKG发布cnSchema重构版本
  10. 传统3D游戏引擎的Web化
  11. deficit记忆_背单词:不要让“捷径”欺骗你的记忆
  12. PeopleSoft介绍
  13. 解决vim不能使用方向键和退格键问题
  14. 电脑右下角图标不显示
  15. 视频格式转换器哪个好?怎样使用?
  16. 【线性代数】6-7:SVD分解(Singular Value Decomposition-SVD)
  17. Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始
  18. HTML5斯诺克桌球俱乐部【译】
  19. 【老姐学PHP】PHP框架lavarel之Artisan命令
  20. 教育专家李彦良谈双减后的素质教育和智慧教育

热门文章

  1. JAVA地址连接状态检测工具类
  2. reactJS -- 14 Router 概念
  3. Yii2的redis扩展
  4. gdb 的使用 problem solution
  5. hibernate 映射错误
  6. 如何在Global.asax文件中实现定时采集新闻
  7. 用Winhex软件定位NTFS文件系统的不明白之处
  8. linux去除内容重复行,实例详细说明linux下去除重复行命令uniq
  9. 【转】nodejs 压缩文件 zip-local
  10. How is NGINX Unit different from Apache?