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

    文章

    18219

    浏览量

    221938
  • 编译器
    +关注

    关注

    1

    文章

    1570

    浏览量

    48604
  • C代码
    +关注

    关注

    1

    文章

    88

    浏览量

    14174
收藏 人收藏

    评论

    相关推荐

    雅特力AT32F423时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 02-19 13:26 199次阅读
    雅特力AT32F423时钟<b class='flag-5'>配置</b>

    雅特力AT32WB415时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 12-20 08:14 211次阅读
    雅特力AT32WB415时钟<b class='flag-5'>配置</b>

    FPGA通过SPI对ADC配置简介(二)-4线SPI配置时序分析

    本篇将以德州仪器(TI)的高速ADC芯片—ads52j90为例,进行ADC的4线SPI配置时序介绍与分析
    的头像 发表于 12-11 09:05 767次阅读
    FPGA通过SPI对ADC<b class='flag-5'>配置</b><b class='flag-5'>简介</b>(二)-4线SPI<b class='flag-5'>配置</b>时序<b class='flag-5'>分析</b>

    EMC计算方法和EMC仿真(1) ——计算方法简介

    EMC计算方法和EMC仿真(1) ——计算方法简介
    的头像 发表于 12-05 14:56 475次阅读
    EMC计算<b class='flag-5'>方法</b>和EMC仿真(1) ——计算<b class='flag-5'>方法</b><b class='flag-5'>简介</b>

    基于 TouchGFX 生成的代码中添加触摸功能的方法

    基于 TouchGFX 生成的代码中添加触摸功能的方法
    的头像 发表于 10-27 09:21 561次阅读
    基于 TouchGFX 生成的<b class='flag-5'>代码</b>中添加触摸功能的<b class='flag-5'>方法</b>

    MPLAB代码配置器的LoRaWAN库插件用户指南

    电子发烧友网站提供《MPLAB代码配置器的LoRaWAN库插件用户指南.pdf》资料免费下载
    发表于 09-26 09:45 0次下载
    MPLAB<b class='flag-5'>代码</b><b class='flag-5'>配置</b>器的LoRaWAN库插件用户指南

    Microchip University免费课程9《用于简化嵌入式软件开发的 MPLAB® 代码配置器(MCC)》

    今天推荐Microchip University课程9 《 用于简化嵌入式软件开发的 MPLAB 代码配置器(MCC) 》 。 内容简介 在本课程中,您将学习使用MCC导航和管理项目设置,设置和
    的头像 发表于 09-25 15:25 639次阅读

    STM32CubeMX的配置和C代码的生成

    电子发烧友网站提供《STM32CubeMX的配置和C代码的生成.pdf》资料免费下载
    发表于 09-20 09:53 4次下载
    STM32CubeMX的<b class='flag-5'>配置</b>和C<b class='flag-5'>代码</b>的生成

    什么是静态代码分析?静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用静态分析工具/源代码分析工具的原因。在这里,我们将讨论静态
    的头像 发表于 07-19 12:09 912次阅读
    什么是静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>?静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>概述

    AT32讲堂056 | 雅特力AT32F425时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 05-30 09:58 622次阅读
    AT32讲堂056 | 雅特力AT32F425时钟<b class='flag-5'>配置</b>

    AT32讲堂055 | 雅特力AT32F413时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 05-30 09:57 1074次阅读
    AT32讲堂055 | 雅特力AT32F413时钟<b class='flag-5'>配置</b>

    AT32讲堂054 | 雅特力AT32F415时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 05-11 10:56 1562次阅读
    AT32讲堂054 | 雅特力AT32F415时钟<b class='flag-5'>配置</b>

    AT32讲堂053 | 雅特力AT32F421时钟配置

    介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 05-11 10:55 941次阅读
    AT32讲堂053 | 雅特力AT32F421时钟<b class='flag-5'>配置</b>

    代码生成器配置和软件UART的实现

    (RL78)上的具体的实现方法,这里略去工程的建立过程,相应的驱动程序细节可以参考代码生成器生成的代码,这里只重点讲述代码生成器配置和软件U
    的头像 发表于 05-09 09:25 893次阅读
    <b class='flag-5'>代码</b>生成器<b class='flag-5'>配置</b>和软件UART的实现

    浅谈汽车控制器系统和应用软件开发工具

    Polyspace是一款强大的代码静态分析工具,用于检测软件代码中的潜在错误和安全漏洞。它可以分析代码
    发表于 04-24 17:46 588次阅读
    浅谈汽车控制器系统和应用软件开发工具