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

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

3天内不再提示

嵌入式软件时序设计相关的问题

麦辣鸡腿堡 来源:嵌入式系统 作者:嵌入式系统 2023-12-07 16:31 次阅读

软件时序设计相关的问题时序问题是最容易出问题的地方,“时”代表时间顺序和时效性,一旦执行顺序错乱,或执行过慢失去时效,就会导致错误。

消息的串行化处理

每个任务、线程,只能按顺序的处理串行的消息,然而,其他线程发送过来的消息并不是串行发送的,不同线程都是并行、异步发送消息的,这会导致线程在没有处理完一个消息,另一个消息又回来了。如何把外部的并发消息转换成线程的串行处理呢?

每个任务、线程都应有一个消息队列,外部线程向消息队列中发送数据,目标线程从消息队列中读取消息,这样所有的消息被串行在消息队列中,线程就会串行的处理每个消息,只有当一个消息处理完(函数调用返回)时,才会处理另一个消息。参考《嵌入式软件的设计模式(上)》中的 第3.3节 “队列模式”。

超时或消息丢失引发的问题

一个任务、线程给另一个任务、线程发送消息,等待对方的应答,有时候对方忙,发送时队列满发送失败,或者接收方没有处理回复,等待一段时间后空闲了才处理该消息并应答时,但对于发送方已经超时。发送方超时,就需要进入异常处理。这里容易出问题,它可能会引发一连串的异常处理反应,也有可能影响后续的正常消息的处理。

消息丢失是必须考虑情况,发送方不能假设接收方一定能够收到消息,也不能假设接收方一定能够及时的回应,必须充分考虑到消息因为传输的问题丢失或对方忙,没有及时回应的情形。

消息丢失就容易产生理论上该执行的动作没有执行,或者消息里面动态内存未释放。或者消息处理慢导致对外设的控制延迟产生异常,曾经出现共享单车锁里面的马达停止消息处理不及时导致车锁无法再次上锁。尤其处理通信时序要求严格,或外设控制要及时的场景需要注意。

性能本身问题

数据处理尤其是复杂算法耗时,导致消息处理不及时,最终对外设的控制或者通信交互时序状态延迟,产生异常。这种只能优化算法,或对时序部分单独特殊处理,不考虑设计模式保执行效率。或者评估阶段就选择性能资源更佳的硬件方案。

异常处理不充分问题

软件设计一般是考虑正常流程,然而实际运行中,并非是理想状态,系统总会遇到各种异常,健壮的系统,能够充分考虑到各种异常情况,一旦异常发生,程序也不会轻易崩溃。

超时:增加超时定时器事件以及事件处理,不能假设对方一定应答消息。

空指针:不能假设一定能够申请到内存,要考虑到返回为NULL的情形,通过指针访问内存对象时需要及时的检查指针是否为空。

并发访问:在并发执行的系统中,如果要访问全局变量,不能假设只有一个线程访问全局变量,需要通过锁对全局共享资源进行加锁,特别是要访问全局的数据结构。

消息队列:不能假设消息队列始终有效,要考虑消息队列满或空的情形。

设计:在软件设计时就考虑软件的异常处理机制,功能层面就支持异常记录、售后调试的需求,而不是把这个工作留给编程人员。

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

    关注

    0

    文章

    509

    浏览量

    28247
  • 嵌入式软件
    +关注

    关注

    4

    文章

    227

    浏览量

    26383
  • 时序
    +关注

    关注

    5

    文章

    357

    浏览量

    36957
收藏 人收藏

    评论

    相关推荐

    嵌入式软件怎么学?

    `嵌入式软件怎么学?嵌入式技术的更新是非常快的,每一位嵌入式开发工程师都应该在工作中不断更新自己的知识,掌握技术动态才可以更好地解决自己在工作中遇到的问题,那
    发表于 12-11 15:06

    软件嵌入式软件区别

      纯软件嵌入式软件区别为:  1、定义不同  ①嵌入式软件就是嵌入在硬件中的操作系统和开发工
    发表于 06-28 11:36

    嵌入式软件与非嵌入式软件的区别?

    学习笔记一:嵌入式系统课程学习储备知识:C语言+单片机(硬件的工作原理)1、嵌入式技术是什么?嵌入式软件与非嵌入式
    发表于 07-19 08:00

    嵌入式软件与非嵌入式软件的区别

    嵌入式软件与非嵌入式软件的区别嵌入式:在已有的硬件上移植(需要修改操作系统源码,安装不需要)操作系统解决软硬件耦合导致的问题。
    发表于 10-27 06:18

    什么是嵌入式软件

    概述:什么是嵌入式软件?与传统软件不同,嵌入式软件需要将软件分析、设计、编码后烧录至硬件环境中才
    发表于 10-28 08:45

    嵌入式驱动开发的相关资料分享

      一、嵌入式驱动程序的身世之谜  在嵌入式产品的设计、开发过程中,首先需要硬件的支持,绝大多数的嵌入式硬件都需某种类型的软件来初始化和管理,该类
    发表于 11-08 09:18

    嵌入式软件与非嵌入式软件的区别

    1.嵌入式技术是什么?嵌入式软件与非嵌入式软件的区别?与单片机开发的区别?
    发表于 11-08 08:22

    嵌入式软件架构思想的相关资料分享

    我从事嵌入式软件开发有6,7个年头,bsp,驱动,应用软件,android hall,framework等都有涉猎。平时除了关注嵌入式行业的发展,也多少对Web,后台服务端,分布
    发表于 11-09 08:35

    多功能嵌入式解码软件相关资料分享

    多功能嵌入式解码软件(1)多功能嵌入式解码软件(1)目录第一章 多功能嵌入式解码软件(1)  概
    发表于 12-20 08:05

    嵌入式软件和非嵌入式软件区别

    1.什么是嵌入式技术?嵌入式技术是以应用为中心,以计算机技术为基础的系统技术。它初起源于单片机技术,是各类数字化的电子、机电产品的核心,主要用于实现对硬件设备的控制、监视或管理等功能。2.嵌入式
    发表于 12-21 07:41

    嵌入式软件相关资料分享

    嵌入式软件软件通常指运行在嵌入式系统内的软件,如车载控制器中的软件
    发表于 12-24 06:00

    嵌入式软件和非嵌入式软件有什么区别

    丹尼斯·里奇,C语言之父,UNIX之父。什么是嵌入式嵌入式软件和非嵌入式软件有什么区别操作系统BSP,驱动,内核操作系统的优点
    发表于 12-24 06:38

    嵌入式相关的开源网站和必备软件有哪些

    嵌入式相关的开源网站和必备软件
    发表于 12-24 06:10

    嵌入式软件时序异常检测

    时序特性是嵌入式软件的重要特性,实时嵌入式软件运行的正确性不仅依赖于任务执行结果,更依赖于任务执行时间,执行任务往往具有多个时间约束,且相互
    发表于 01-27 11:02 0次下载

    基于执行片段的嵌入式软件时序特性检测方法

    时序特性是嵌入式软件的重要特性,实时嵌入式软件运行的正确性不仅依赖于任务执行结果,更依赖于任务执行时间,执行任务往往具有多个时间约束,且相互
    发表于 01-31 10:24 0次下载