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

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

3天内不再提示

软件测试自身的完整性

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-29 15:43 次阅读

所有重要的软件都有错误。我不想称它们为“错误”,因为这会使它们与需要为自己的错误负责的开发人员分离。显然,设计良好的软件可能会更少,而现代嵌入式软件开发工具的应用可以将它们保持在最低限度。当然,具体的错误无法预测(否则它们可以被根除),但是可以识别某些类型的软件问题,并且有可能在问题变成灾难之前发现问题。

我会将此类软件问题分为两大类:

数据损坏

代码循环

由于大量嵌入式代码是用 C 编写的,这意味着开发人员很可能会使用指针。小心使用,指针是该语言的一个强大功能,但它们也是最常见的程序员错误来源之一。指针使用的问题很难静态识别,并且引入的错误可能会在代码执行时以微妙的方式表现出来。有些事情,比如取消引用空指针很容易检测到,因为它们通常会导致陷阱。只需要实现一个陷阱处理程序。其他的更难,因为指针最终可能指向任何地方——通常它会指向一个有效的地址,但不幸的是,它可能不是正确的地址。自测试代码对此几乎无能为力。然而,有两种特殊但非常常见的,

不应发生堆栈溢出,因为应仔细确定堆栈分配,并在调试阶段验证其使用情况。但是,很可能会忽略不寻常的情况或使用不易测试的构造(如递归函数)。一个简单的解决方案是在堆栈空间的任一端包含一个额外的词——“保护词”。这些预加载了特定值,由自检任务(可能在后台运行)监控。如果值更改,则违反了堆栈限制。应谨慎选择该值。奇数是最好的,因为它不代表大多数处理器的有效地址。也许是 0x55555555。只要该值“不太可能”——例如不是 0x00000001 或 0xffffffff——就有 40 亿比 1 的机会发生误报。

在某些语言中,存在用于在数组边界之外寻址的内置检测,但这会引入运行时开销,这可能是不受欢迎的。因此,这不是在 C 中实现的。此外,可以使用指针而不是运算符来访问数组元素,因此可能会规避任何检查。最好的方法是通过在数组末尾定位一个保护字并以与堆栈溢出检查相同的方式进行监视来检查缓冲区溢出类型的错误。

在这两种情况下,当保护字被破坏时,这表明即将发生故障。堆栈或数组可能只是一个字就溢出或不足,因此还没有造成真正的损害。定位错误访问的原因比调试可能发生的随机崩溃要容易得多。

代码永远不应陷入无限循环,但逻辑错误或未发生预期的外部事件可能会导致代码挂起。当代码在等待某事发生时,理想情况下应该有一个超时机制,这样代码就不会无限期地挂起。

在任何类型的多线程环境中——无论是 RTOS 还是带有 ISR 的主线代码——都可以实现“看门狗”机制。每个连续运行的任务(可能只是主线代码)都需要每隔一段时间与看门狗任务(可能是计时器 ISR)“签入”。如果发生超时,则需要采取措施。

那么,当检测到堆栈溢出、数组绑定违例或挂起任务时该怎么办呢?这取决于应用程序。可能只需要停止和重新启动单个任务,但可能需要更激烈的操作:停止系统、发出某种警报或简单地重置系统。选择取决于许多因素,但从广义上讲,目标是为了比崩溃的系统更好的东西。

订阅

审核编辑:郭婷

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

    关注

    5081

    文章

    19073

    浏览量

    304321
  • RTOS
    +关注

    关注

    22

    文章

    810

    浏览量

    119531
  • 代码
    +关注

    关注

    30

    文章

    4766

    浏览量

    68458
收藏 人收藏

    评论

    相关推荐

    12月20日线上讲堂|听懂什么是信号完整性

    2024年12月20日14:00-16:00中星联华科技将举办“高速信号完整性分析与测试”-“码”上行动系列线上讲堂线上讲堂。本期会议我们将为大家介绍高速串行总线传输基本框架,什么是信号完整性?高速
    的头像 发表于 12-06 01:06 135次阅读
    12月20日线上讲堂|听懂什么是信号<b class='flag-5'>完整性</b>

    GND与信号完整性的关系

    在现代电子系统中,信号完整性是设计和性能的关键因素。信号完整性问题可能导致数据传输错误、系统性能下降甚至设备损坏。地线(GND)是电路设计中的基本要素,它不仅为电路提供参考电位,还有助于减少电磁干扰
    的头像 发表于 11-29 15:17 213次阅读

    信号完整性和信号一致你还不知道吗?#示波器 #信号完整性

    信号完整性
    安泰仪器维修
    发布于 :2024年09月25日 17:59:54

    高速电路中的信号完整性和电源完整性研究

    高速电路中的信号完整性和电源完整性研究
    发表于 09-25 14:44 0次下载

    高速高密度PCB信号完整性与电源完整性研究

    高速高密度PCB信号完整性与电源完整性研究
    发表于 09-25 14:43 5次下载

    高速PCB信号完整性设计与分析

    高速PCB信号完整性设计与分析
    发表于 09-21 11:51 0次下载

    高速PCB的信号完整性、电源完整性和电磁兼容研究

    电子发烧友网站提供《高速PCB的信号完整性、电源完整性和电磁兼容研究.pdf》资料免费下载
    发表于 09-19 17:37 0次下载

    信号完整性与电源完整性-电源完整性分析

    电子发烧友网站提供《信号完整性与电源完整性-电源完整性分析.pdf》资料免费下载
    发表于 08-12 14:31 39次下载

    信号完整性与电源完整性-差分对的特性

    电子发烧友网站提供《信号完整性与电源完整性-差分对的特性.pdf》资料免费下载
    发表于 08-12 14:28 1次下载

    信号完整性与电源完整性-信号的串扰

    电子发烧友网站提供《信号完整性与电源完整性-信号的串扰.pdf》资料免费下载
    发表于 08-12 14:27 0次下载

    信号完整性与电源完整性 第一章 概论

    电子发烧友网站提供《信号完整性与电源完整性 第一章 概论.pdf》资料免费下载
    发表于 08-09 14:49 1次下载

    示波器探头在电源完整性测量上的应用

    在电子设备的开发和维护过程中,电源完整性是一个至关重要的考量因素。电源完整性(Power Integrity, PI)涉及到电源分配网络(PDN)的性能,确保电子设备能够获得稳定、干净的电源供应
    的头像 发表于 08-02 09:38 284次阅读
    示波器探头在电源<b class='flag-5'>完整性</b>测量上的应用

    搞定电源完整性,不如先研究PDN

      在现代电子设备的设计中,一个关键的因素是电源完整性。电源完整性不仅影响设备的性能,还直接关系到设备的稳定性和可靠。作为电子设备的基础,印刷电路板(PCB)的电源完整性设计尤为重要
    的头像 发表于 06-13 18:16 3038次阅读
    搞定电源<b class='flag-5'>完整性</b>,不如先研究PDN

    什么是信号完整性

    在现代电子通信和数据处理系统中,信号完整性(Signal Integrity, SI)是一个至关重要的概念。它涉及信号在传输过程中的质量保持,对于确保系统性能和稳定性具有决定性的影响。本文将从信号完整性的定义、影响因素、测试方法
    的头像 发表于 05-28 14:30 1108次阅读

    构建系统思维:信号完整性,看这一篇就够了!

    完整性的旅程中,以上为大家系统地梳理了其在硬件设计中的核心地位。从总线协议到PCB设计,从材料选择到高速互连器件的理解,每一个环节都彰显着信号完整性的重要。而测试测量与仿真
    发表于 03-05 17:16