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

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

3天内不再提示

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

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

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

消息的串行化处理

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

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

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

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

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

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

性能本身问题

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

异常处理不充分问题

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

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

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

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

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

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

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

    关注

    0

    文章

    595

    浏览量

    28557
  • 嵌入式软件
    +关注

    关注

    4

    文章

    240

    浏览量

    26642
  • 时序
    +关注

    关注

    5

    文章

    387

    浏览量

    37318
收藏 人收藏

    评论

    相关推荐

    嵌入式软件相关资料分享

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

    什么是嵌入式软件开发

    嵌入式软件开发又是指什么?   随着嵌入式软件系统结构越来越复杂,嵌入式软件的开发已成
    发表于 04-20 08:43 8776次阅读

    ARM嵌入式软件开发

    ARM嵌入式软件开发ARM嵌入式软件开发ARM嵌入式软件开发
    发表于 01-15 17:29 65次下载

    嵌入式软件威廉希尔官方网站 应用设计方案汇总  

    程序及其文档组成,可细分成系统软件、支撑软件、应用软件三类,是嵌入式系统的重要组成部分。本文为大家介绍嵌入式
    发表于 10-16 16:44 4次下载

    嵌入式软件时序异常检测

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

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

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

    嵌入式软件是什么意思_嵌入式软件的分类有哪些

    本文首先阐述了嵌入式软件的概念,其次介绍了嵌入式软件的特征,最后介绍了嵌入式软件的分类。
    发表于 08-31 15:54 1.6w次阅读

    嵌入式软件的开发流程_嵌入式软件的调试

    本文首先介绍了嵌入式软件的发展,其次阐述了嵌入式软件的开发流程,最后介绍了嵌入式软件的调试。
    发表于 08-31 16:02 6290次阅读

    嵌入式软件测试参考书籍

    嵌入式软件测试的几本参考书籍:1、《嵌入式软件测试》;2、《嵌入式软件测试 方法、案例与模板详解
    发表于 10-20 12:06 51次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>测试参考书籍

    嵌入式系统的软件组成

    嵌入式系统软件的重要组成部分1.1:嵌入式软件的特点嵌入式软件除了具有计算机
    发表于 10-20 12:36 4次下载
    <b class='flag-5'>嵌入式</b>系统的<b class='flag-5'>软件</b>组成

    嵌入式软件测试研究意义,嵌入式软件测试的研究

    摘要:嵌入式系统在人类生活中发挥着重要的作用,包括飞行控制器这样的控制系统,以及洗衣机这样的家用电器。日前,嵌入式系统中软件的比重越来越大,也越来越复杂,保证嵌入式
    发表于 10-20 17:20 17次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>测试研究意义,<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>测试的研究

    嵌入式软件概述及相关测试特点

    概述:什么是嵌入式软件?与传统软件不同,嵌入式软件需要将软件分析、设计、编码后烧录至硬件环境中才
    发表于 10-21 11:36 13次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>概述及<b class='flag-5'>相关</b>测试特点

    嵌入式软件开发环境

    嵌入式软件开发环境1 简介嵌入式软件定义嵌入式系统构成2 环境搭建2.1 Qt2.2 CLion2.3 Source Insight + v
    发表于 10-21 12:21 7次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>开发环境

    嵌入式软件开发的特点、设计流程、嵌入式软件的结构

           嵌入式软件开发的特点、设计流程、嵌入式软件的结构 一:嵌入式软件开发的特点1.
    发表于 11-03 15:21 37次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>开发的特点、设计流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>的结构

    谈谈汽车嵌入式软件

    嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统
    发表于 10-27 10:28 1115次阅读