后台服务器高级架构设计,一款开源的裸机开发架构操作系统抽象层-OSAL
后台服务器高级架构设计,一款开源的裸机开发架构操作系统抽象层-OSAL创建普通任务图三,类系统的启动OSAL架构主要涉到的源文件和头文件:图二,架构涉及到的源码文件和接口文件启动类操作系统
OSAL(Operating System Abstraction Layer),即操作系统抽象层。OSAL最初的概念是由德州仪器TI在ZigBee的协议栈Z-Stack上开发的,是个类操作系统的开源系统架构,并不是正真的操作系统。但是对单片机裸机开发非常友好,是能显著提升编码水平的一套架构,它就是为了优雅而生。其API修改历史。
图一,API修订历史记录
事件event是这个框架的最小单位,多个事件组成一个任务task。
系统上电之后首先进行底层硬件和程序环境的初始化,然后对系统所有的任务进行注册等处理,然后启动 OSAL 操作系统进入任务轮询,不断查询每个任务是否有事件产生。如果有任务事件发生,则 执行相应的事件处理函数,如果没有,就查询下一个任务,如此往复。
OSAL架构主要涉到的源文件和头文件:
图二,架构涉及到的源码文件和接口文件
启动类操作系统
图三,类系统的启动
创建普通任务
图四,添加任务
创建定时任务
图五,添加定时任务
图六,任务初始化
一图学会如何使用该架构开发自己的裸机程序
图七,OSAL工作机制
其实在工作中,单片机裸机开发是非常多的,有了这么一款类操作系统之后,让逻辑开发更加高效且优雅,毕竟优雅永远不会过时的。学生党get到了精髓之后,走上工作岗位也能写出让职场老鸟都自觉惊艳的裸机代码,岂不快哉?
最后再增加一点彩蛋,以下是一些开源免费的架构以及库,感兴趣的不妨读读源码,对自己的能力水平补补钙,即使现在用不着,以后说不着就能用到,赶紧收藏起来吧。
MultiTimer :一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。
MultiButton:一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。
lw_oopc:是了高先生及其MISOO团队创作的lw_oopc宏,一个轻量级的C语言面向对象编程框架。
EEPROMfs : 基于EEPROM的简易类文件的数据读写库,方便做动态功能增减时参数管理。增减参数块类似增减文件,不会对已有数据存储带来影响。
EFSM (event finite state machine,事件驱动型有限状态机) : 是一个基于事件驱动的有限状态机,主要应用于嵌入式设备的软件系统中 EFSM的设计原则是:简单!
OpenBLT:主要用作STM32引导加载程序。它可以与几乎任何微控制器一起工作,并使用几乎任何类型的通信接口来执行固件更新。
EasyLogger:是一款超轻量级(ROM<1.6K RAM<0.3K)、高性能的 C/C 日志库,非常适合对资源敏感的软件项目,
EasyFlash:是一款开源的轻量级嵌入式Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。
SFUD:一款开源的串行 SPI Flash 通用驱动库。解决 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品带来的风险。
znfat :振南的znFAT是一套高效、完备、精简且具有高可移植性的嵌入式FAT32文件系统。
它们均可以在github,gitee等开源平台搜索查找到。