0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何设计嵌入式应用软件架构

Q4MP_gh_c472c21 来源:cc 2019-02-22 15:13 次阅读

要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行。

如果没有好的架构,移植将会是一件很痛苦的事情。

如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。

如果没有好的架构,一旦驱动改了,所有的地方都要改,费时费力且很容易出错。

如果没有好的架构,应用层中穿插着硬件驱动层的代码,看着会是一片混乱,逻辑不清,代码维护起来会很困难。

这里总结下我的嵌入式程序设计思路,分享出来与大家共同探讨,同时也欢迎提出不同意见。

现在的小朋友都爱玩搭积木的游戏,一个模块一个模块的拼装起来,快速组成各种不同的模型。现在的产品设计也很少从零开始。大都复用现有成熟的模块,专注于某个擅长领域。

我的嵌入式应用架构思路来源与此,即功能模块设计与分层。

把API分为驱动层和应用层API,而不是所有程序都调用驱动层API。(整个应用中都调用驱动层API会导致应用中驱动调用随处可见,无法移植和最大限度的复用)

先把一个应用进行功能模块划分,并对整体结构进行分层,然后设计出功能独立的各个模块(如算法模块,文件库模块,通信库模块),在模块之上开放公共接口

驱动层提供出公共接口供上层调用。各个功能模块可以独立编译(如算法模块纯ANSI C,可在任意平台复用),或者调用驱动层接口(文件库模块调用了驱动读写Flash),总而言之,言而总之,封装出各个功能独立的可复用的功能模块。

总体分:硬件驱动层-->功能模块层-->应用接口层-->业务逻辑层-->应用层

总体结构示意框图:

应用层,为程序的总体的运行框架,组织调用业务逻辑。可以用某种嵌入式操作系统实现几种任务 。如定时任务,卡处理任务,菜单任务,通信任务。

业务逻辑层,如CPU卡处理,交通部卡处理,银联卡处理,M1卡处理,通信记录上传,黑名单下载,票价参数下载等。

应用接口层,提供公共的api接口供应用接口供上层调用。这些接口也可由下层的功能模块开放出来,应用接口层负责汇总。

功能模块层,可以封装不同的功能模块。如算法库,文件库,通信库,银联库,向上提供应用接口层的接口,向下调用驱动接口。

硬件驱动层,由各个驱动模块组成,向上提供统一的接口。

遵循一些约定:

1.每个模块提供出的接口要统一,后续只能增,不能改原来的接口。

2.模块与模块之间相互独立,互不影响,不能相互调用,只能调用它下层的接口。

3.由模块构成层,层与层之间不能跨级调用。如在应用层中不能看到直接调用驱动层的代码。

4.模块中又可以继续分层,如接口层,驱动层,硬件层。

如果驱动变动了,或者换不同平台,只需更改驱动层,应用层不受影响。如果功能模块变动了,只需升级功能功能模块,其他的模块不受影响,应用层也不受影响。

按照这种逻辑设计好之后,主要的工作就是在业务逻辑层。应用层则为程序的总体流程和框架,主要调用业务逻辑层实现不同的功能。

我们现在的代码结构,基本是按这个思路来的。

硬件驱动层-->功能模块层-->应用接口层-->业务逻辑层-->应用层。

看看以下两种风格的代码,你更喜欢哪个。

另一种风格:

同样是保存参数,非要拆成AlgCRC16 ,WritePraFlash( (unsigned char *)&NetPra , NETPRA_ADDR , sizeof(_NetPra) )两步吗?

还有AH_Para_Verify这个,在应用层中真是多余啊,检测失败又从Flash读取。关于参数,一开机就应该检测合法性了。

既然都是要保存参数,就应该做个封装,如上图所示,把系统用到的不同参数做个规划。应用层调用APP_Open_UseFile 或者APP_Read_UseFile,

而不是直接的去读写Flash。

来看看赫赫有名的谷歌的android架构,虽然很复杂,但从框图上看,也像是搭积木,各个功能模块独立,层次分明。最低层建立在linux Kernel基础上,然后是各个组件库libraries,再往上是应用框架和应用。

以NC_FileLib,文件库模块为例,如果要用在其他平台,如EH0918手持机设备,只需要移植几个硬件层接口即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19013

    浏览量

    303096
  • 接口
    +关注

    关注

    33

    文章

    8491

    浏览量

    150814

原文标题:嵌入式应用软件架构如何设计?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式应用软件架构如何设计?

    有需要资料的可以加我:腾讯3249838614来源CSDN要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行。如果没有好的架构,移植将会是一件很痛苦的事情。如果没有好的
    发表于 02-25 15:23

    嵌入式实时操作系统如何简化应用软件的设计

    嵌入式领域中,嵌入式实时操作系统(RTOS)正得到越来越广泛的应用。采用嵌入式实时操作系统可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的
    发表于 11-25 06:48

    基于QT的嵌入式linux图形应用软件设计

    嵌入式数据库或图形软件开发有兴趣,可以进一步学习嵌入式linux数据库开发或基于 QT的嵌入式linux图形应用软件设计。...
    发表于 11-05 08:11

    嵌入式应用软件开发流程是怎样的

    系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。相关文章:《手机app移动应用软件开发为何越加旺盛?》同时在这样一个技术日进千...
    发表于 11-09 08:06

    进行嵌入式操作系统和应用软件的开发

    ,一种是硬件开发,一种是软件开发。简单来说,嵌入式底层驱动开发就是针对嵌入式操作系统的一些设备编写驱动程序。而嵌入式底层软件开发就是进行
    发表于 12-17 08:25

    嵌入式应用软件任务划分的原则是什么

    嵌入式应用软件任务划分的原则参考文章“嵌入式应用软件任务划分的原则”在基于实时操作系统(RTOS,RealTime Operating System)的单片机
    发表于 12-24 06:57

    怎样去设计一种嵌入式应用软件架构

    @[TOC](视频教程嵌入式应用软件架构如何设计?有需要资料的可以加我***要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构
    发表于 01-07 07:25

    嵌入式应用软件任务划分的原则

     嵌入式应用软件任务划分的原则  在基于实时操作系统(RTOS,RealTime Operating System)的单片机应用软件设计中,“任务”是一个很重要的概念。有专
    发表于 03-29 15:14 792次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>应用软件</b>任务划分的原则

    飞思卡尔推出针对其嵌入式多核处理器的应用软件模块

    飞思卡尔推出针对其嵌入式多核处理器的应用软件模块 飞思卡尔半导体公司宣布推出一套针对其嵌入式多核处理器的应用软件
    发表于 10-06 08:34 623次阅读

    嵌入式软件架构设计

    嵌入式软件架构的设计,帮助我们建立合理,有效的软件架构
    发表于 11-09 17:34 19次下载

    什么是嵌入式系统?嵌入式软件系统测试中的仿真系统架构设计有什么优点?

    嵌入式软件是基于嵌入式系统设计的软件,是计算机软件的一种,同样由程序及文档组成,可细分成系统软件
    发表于 07-19 08:30 2559次阅读
    什么是<b class='flag-5'>嵌入式</b>系统?<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>系统测试中的仿真系统<b class='flag-5'>架构</b>设计有什么优点?

    嵌入式应用软件

      随着计算机嵌入式的日新月异,嵌入式应用软件是实现系统各种功能的关键,好的应用软件使得同样的硬件平台更好、更高效地完成系统功能,使系统具有更大的经济价值。
    发表于 08-17 16:29 588次阅读

    嵌入式软件架构

    嵌入式软件架构
    发表于 10-20 20:51 20次下载
    <b class='flag-5'>嵌入式</b>系<b class='flag-5'>软件</b><b class='flag-5'>架构</b>

    嵌入式应用软件开发的步骤流程

    系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。相关文章:《手机app移动应用软件开发为何越加旺盛?》同时在这样一个技术日进千...
    发表于 11-04 09:51 16次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>应用软件</b>开发的步骤流程

    系统架构设计笔记(59)—— 嵌入式系统的组成

    和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。1 硬件架构图 1 是一个嵌入式系统的基本硬件
    发表于 11-04 11:06 13次下载
    系统<b class='flag-5'>架构</b>设计笔记(59)—— <b class='flag-5'>嵌入式</b>系统的组成