Polyspace不认识Interrupt,肿么办?

曾经在公众号中介绍过优秀的软件验证工具Polyspace,有好多猿友在交流群里咨询这个软件的问题,今天我们就典型的如何处理中断来给大家介绍下。

在嵌入式软件工程中,一定会有中断处理程序,但是Polyspace不认识interrupt,那么问题来了,肿么办?当然是必须另辟蹊径使Polyspace认识interrupt,重新写一个函数来调用中断函数,并在polyspace的配置界面填入这个函数的入口,在多入口配置处填入我们重新包装的中断函数名polys_it,函数名可以随便起。这样中断也就作为一个入口被polyspace验证。假设我们完成的函数名为polys_it如下图所示:

如何修改代码?

#ifdef POLYSPACE
externvolatileint rnd;
#endif 
void polys_it(void)
{
#ifdef POLYSPACE
 while(rnd)
    {
#else 
 while(1)
   { 
#endif
    ISR();
   }
}
staticvoid interrupt ISR(void) 
{   
……
}

同时需要在Polyspace的宏配置界面填入POLYSPACE

按照以上修改完代码后,保存编译,生成报告。怎么样就是这么简单,就可以处理中断函数被Polyspace识别。有兴趣的可以动手试一试。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2016-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

Python爬虫之urllib模块1

Python爬虫之urllib模块1 本文来自网友投稿。作者PG,一个待毕业待就业二流大学生。玄魂工作室未对该文章内容做任何改变。 因为本人一直对推理悬疑比较感...

3296
来自专栏Python中文社区

Python云计算框架:OpenStack源码分析之RabbitMQ(二)

之前发布的文章因为在编辑后代码部分在手机上看不清已被及时删除,本文重新编辑好之后再发布一次,带来不便请谅解! 專 欄 ❈ ZZR,Python中文社区专栏作者...

2989
来自专栏一枝花算不算浪漫

[Redis]Redis 概述及基本使用规范.

4928
来自专栏我的博客

Laravel笔记

1、路由示例 Route::get(‘demo/{id}’, ‘Demo\IndexController@index’); 匹配/demo/123格式 执...

3054
来自专栏Jimoer

Java设计模式学习记录-状态模式

状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题。状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象...

1271
来自专栏Python中文社区

OpenStack中的RESTful API是如何实现的?

OpenStack作为一个开源的IaaS平台,各个组件和服务之间的消息传递都是通过RESTfulAPI和RPC传递,这里主要讲讲它是如何实现REST的。由于大家...

2968
来自专栏C/C++基础

Google C++编程风格指南(一)之头文件的相关规范

一个良好的编程规范和风格是一名程序猿成熟的标志。规范的编码可以减少代码冗余,降低出错概率,便于代码管理和代码交流等等,事实上,其作用远不止这些,我们要牢记编码规...

1311
来自专栏along的开发之旅

Java8移除永久代

最近看深入理解Java虚拟机, 在实战OutOfMemoryError的运行时常量池溢出时, 我的Intellij提示如下:

881
来自专栏贾老师の博客

网络缓冲区随笔

1154
来自专栏乐沙弥的世界

mongoDB简介及关键特性

701

扫码关注云+社区

领取腾讯云代金券