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

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

3天内不再提示

分享配置Polyspace分析C代码的方法和简介

MATLAB 来源:djl 作者:龚小平 2019-09-16 16:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Polyspace可以分析C、C++以及Ada代码,本文以嵌入式系统中最为常见的C代码分析为例说明Polyspace配置一个工程的过程和注意事项。

1. 配置语言和处理器类型

C语言由于其灵活性,在不同的编译器中有不同的约束和扩展,会影响最终生成的目标码的行为。Polyspace分析C代码时首先要最大程度和目标编译器的行为保持一致,这样才能保持代码分析的意义。因此在开始创建Polyspace工程时,我们需要配置编译器和处理器类型:

分享配置Polyspace分析C代码的方法和简介

所选用的C语言标准:C90/C99

所用编译器类型:Keil/Tasking/Diab/IAR…

(编译器通常定义了标准C语言之外的扩展,如关键字sfr、sbit等。选定编译器类型相当于告知了Polyspace在遇到此类非标扩展时如何解释其行为。)

目标处理器类型:定义不同数据类型的大小和字节顺序类型,如mpc5xx系列处理器定义如下:

分享配置Polyspace分析C代码的方法和简介

(某些运行时错误检查与此有关,如同一变量在Int定义为16位时会发生溢出,而在Int定义为32位时不会发生溢出。)

其他编译器行为设定:如负除取整方向、有符号数右移逻辑、枚举类型定义方式等。

2.选择验证分析模式

Polyspace有两种基本的验证分析模式:应用级分析和模块级分析,可以分别对应于集成测试和单元测试。

所谓应用级分析指用户待分析的源代码中包含了 main函数,选择应用级分析即分析进程从用户main函数入口,为了更好地模拟实际程序运行和调度情形,有时需要进行多任务(Multitasking)设置,有机会在以后再进一步介绍。

模块级分析通常待分析代码不包含main函数,Polyspace会自动打桩生成main函数并建立待分析函数的调用关系进行分析,并可进一步根据需要细化配置。如对于以下被调函数Function_sub和主调函数Function_top,可以设置为以下两种分析入口形式:

Function_sub(){ ……};

Function_top(){……

Function_sub();

……};

自动生成的main函数中只调用Function_top:在分析Function_top的进程中分析Function_sub,即Function_sub在Function_top的上下文中被分析。

自动生成的main函数中同时调用Function_top和Function_sub:Function_sub除了在Function_top的上下文中被分析,也会在直接在main函数上下文中被分析。对应的可能场景是Function_sub会被其他函数调用,需要更为鲁棒地分析其安全性。

分享配置Polyspace分析C代码的方法和简介

— 总结 —

Polyspace的配置是一个既简单又灵活的过程,通过对编译器行为的模拟和分析模型的选择,我们可以得到更为有意义和更符合需要的结果。

往期 | 代码分析验证

Polyspace应用到软件开发和验证流程

浅谈Polyspace的静态分析

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

    关注

    68

    文章

    20159

    浏览量

    247661
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51114
  • C代码
    +关注

    关注

    1

    文章

    90

    浏览量

    15110
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    宇树人形机器人的配置,核心代码,调试方法,二次开发接口

    宇树人形机器人的配置,核心代码,调试方法,二次开发接口
    的头像 发表于 12-10 09:05 394次阅读

    GPIOB模拟spi的方法及lcd屏幕的接入

    本小组用到了spi接口的lcd屏幕,在此分享GPIOB模拟spi的方法及lcd屏幕的接入。 一、spi接口简介 如上图所示,SPI接口的典型时序是每一个时钟周期采集一个数据。时钟周期频率
    发表于 10-30 07:59

    GPIOB模拟SCCB的方法

    通过SCCB接口可对OV7725内部寄存器写入数据,从而对摄像头进行配置,本文主要分享GPIOB模拟SCCB的方法。 一、时序图分析 如上图所示,SCCB接口与IIC非常类似,多了一条信号线
    发表于 10-30 06:00

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现合规交付。
    的头像 发表于 07-10 15:57 892次阅读
    Perforce QAC产品<b class='flag-5'>简介</b>:面向<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++的静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具(已通过SO 26262认证)

    零极点仿真分析简介

    零极点分析是用于确定电路频率响应特性的关键方法,通过找到传递函数的零点和极点来分析电路的稳定性和频率响应。
    的头像 发表于 05-28 17:33 916次阅读
    零极点仿真<b class='flag-5'>分析</b><b class='flag-5'>简介</b>

    N6715C 基础型定制配置直流电源分析

    N6715C 基础型定制配置直流电源分析仪   综述 N6715C 是一款可定制的直流电源分析仪系统,在装运之前已经过全面测试并组装完毕。
    的头像 发表于 05-09 17:30 484次阅读
    N6715<b class='flag-5'>C</b> 基础型定制<b class='flag-5'>配置</b>直流电源<b class='flag-5'>分析</b>仪

    电池电量计的通信、配置、数据内存访问以及相关代码示例

    基础电量计命令:电量计通过命令与主机控制器通信,命令类似寄存器,如读取充电状态的命令StateOfCharge(),其命令代码为0x1C和0x1D 。命令分为标准命令(用于获取测量结果和更改部分配置参数)和扩展命令(主要用于访问
    发表于 03-11 15:45 0次下载

    贴片电感的感值代码与读取方法

    贴片电感作为电子电路中的重要元件,其感值的准确性和读取方法的便捷性对于电路的性能至关重要。本文将详细介绍贴片电感的感值代码及其读取方法。 贴片电感的感值代码通常采用数码表示法,这种
    的头像 发表于 03-06 14:15 1399次阅读
    贴片电感的感值<b class='flag-5'>代码</b>与读取<b class='flag-5'>方法</b>

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    代码加密、源代码防泄漏c/c++与git服务器开发环境

    代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲一下c++及git开发环境的源代码防泄密保护方案。企业源代码泄密
    的头像 发表于 02-12 15:26 919次阅读
    源<b class='flag-5'>代码</b>加密、源<b class='flag-5'>代码</b>防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c</b>++与git服务器开发环境

    分析C语言代码结构的设计问题

    分析一个C语言代码结构的设计问题。 这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。 大家觉得,这样的
    的头像 发表于 02-11 09:31 692次阅读

    伺服故障代码有哪些?哪些处理方法

    伺服故障代码有哪些?哪些处理方法?以三菱伺服驱动器为例,下面为故障代码分类及处理方法如下: 一、电源及连接类故障       1. AL.E6/ALE6.1 - 伺服紧急停止    
    的头像 发表于 02-06 14:06 1.4w次阅读
    伺服故障<b class='flag-5'>代码</b>有哪些?哪些处理<b class='flag-5'>方法</b>?

    AN-840: 通过I2C接口更新代码

    电子发烧友网站提供《AN-840: 通过I2C接口更新代码.pdf》资料免费下载
    发表于 01-15 16:04 0次下载
    AN-840: 通过I2<b class='flag-5'>C</b>接口更新<b class='flag-5'>代码</b>

    gitee 常见问题及解决方法

    Gitee作为国内的代码托管平台,在使用过程中可能会遇到一些问题。以下是一些常见问题及其解决方法: 一、仓库创建与代码推送问题 仓库已存在远程配置 问题 :在尝试为已有项目添加远程仓库
    的头像 发表于 01-06 10:06 2390次阅读

    XRF分析与其他分析方法的比较

    在材料科学、环境监测、地质勘探和工业质量控制等领域,元素分析是至关重要的。X射线荧光(XRF)分析作为一种成熟的技术,因其快速、准确和非破坏性的特点而被广泛应用。 XRF分析简介 XR
    的头像 发表于 12-28 09:23 1404次阅读