最近项目有点多,总结一下目前接触的软件架构中的几个分类,个人拙见,大家可以相互学习。
1. 分层设计
分层设计,就是把整个流程要做的事情按照模块化各自的特征,进行功能的分层,是和硬件寄存器打交道的,还是完全脱离硬件和业务打交道的。
一般来说,个人总结有几个原则:接口是上下级调用,很少跨层调用。即第4层的代码一般不会直接去第1/2层调用接口,非要用的话,就从第3层透传封装一下。同层级的模块间尽量避免相互调用,需要的数据都是通过高一层的接口获取再下传
MCU程序:单片机程序就是一个程序驱动硬件,实现一个具体功能,代码特点就是从底到高,基本所有层都会涉及,所以对单片机程序进行分层,相对来说会比较完整。5层软件架构
1.硬件驱动层
2.功能模块层
3.应用接口层
4.业务逻辑层
5.应用层
6层软件架构
1.HAL硬件抽象层
2.OSL操作系统层
3.HDL硬件驱动层
4.FML功能模块层
5.BLL业务逻辑层
6.APL应用层
功能模块层是按照项目需求提取出来的功能,需要硬件抽象层和硬件驱动层的硬件支持才能实现,功能模块层根据项目的功能需求改变而改变,而硬件抽象层和硬件驱动层则是项目需求书中的功耗等硬件相关的需求变动而改变,当然,若子功能的增加而硬件不支持,则也需更换硬件驱动。比如项目中的数据储存功能,硬件支持有AT24C02、W25Q128和芯片本身的FLASH,都可以支持数据储存功能,即使后期因为功耗或节约成本等问题,硬件的更换也不影响数据储存功能的实现(前提规划好标准规范的API函数定义)且避免了重写该功能代码所带来的各种问题,保证了该功能的稳定性。
裸机上跑操作系统需要考虑系统调度间的问题,内存消耗,内存践踏,内存泄漏,看门狗喂狗等操作。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !