嵌入式软件分析验证工具系列之——
C,在嵌入式软件领域具有相当的代表性——即使是采用汇编,也都能在C中找到相对应的实现方式,不同的只是细微的效率差别;况且,嵌入式C编译器一般都支持inline assembly,可以在C中直接使用汇编语句。
作为构造嵌入式系统的C语言,利用C的灵活性,扩展出许多不同于ANSI C的特性,这使得开发一个嵌入式C的模型检验器1变得困难。在研究嵌入式软件的模型检验器所面临的许多困难,其实是模型检验技术抽象本质的必然结果,它不可能关注太多的细节,尤其是数据流方面(像一般的协议、驱动器,关注的是时序,是控制流),而这正是嵌入式代码关注的。这一事实在为微控制器如ATmega 16编写的C代码上可能不是很明显,而在为ADSP这样的数字信号处理上的C代码身上则体现的相当突出——这些C代码往往是某个信息处理算法的实现,大量、频繁的数据复制、移动、计算。B. Schlich 对此作出了全面、学术的分析:Model checking C source code for embedded systems(2009,cited 22 in Google)。
就开发一个特定领域应用软件的静态分析器,以汇编代码为对象比以C代码为对象更加合适,因为简单。 选择的理由只有一个:就是通用。如果用得不多,共性不多,就没有理由。当然,选择C,更便于理解、辅助分析、分析结果的反馈描述也容易些。
所以,在考虑嵌入式C时,还是应当以找共性为主,如下:
1、直接硬件访问。这在代码中仍然是以向某个内存地址赋值表现的,往往包含指针(作为地址)运算;
2、并行硬件控制。这在代码中以编译器特定的语法规则表现,如用interrrupt 标识中断服务例程。这些construct添加进来后不会对代码的静态属性有任何影响,影响的是代码的动态属性,比如会影响代码的Promela模型。
3、硬件相关副作用。这指的是某个看似平常的变量,在代码中并没有赋值操作,但是由于映射到某个硬件端口,在代码外部被硬件修改,而导致数据流属性不同于静态分析得到的属性。
后两条嵌入式C特殊的“共性”,可以称之为domain-specific;而第一条,只需要对一般的ANSI C分析工具做功能增强,强化指针操作的解析和分析。
分享到:
相关推荐
本书不同于市面上大多数只介绍标准C语言语法或简单对比嵌入式C与标准C差异的教材,而是侧重于解决实际工作中遇到的各种问题,如模块化编程、代码规范化、安全性优化等。 #### 二、核心知识点概述 本书覆盖了多个...
linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】...
宋宝华嵌入式 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索.....................................
### 嵌入式C语言练习题解析 #### 一、C语言基本知识与编程概念 C语言作为一门历史悠久且应用广泛的编程语言,在嵌入式系统开发领域占据着极其重要的地位。通过本节内容的学习,我们可以了解到C语言的一些基础知识...
嵌入式C语言面试题汇总 本文档总结了嵌入式C语言面试中的常见问题,包括基本概念、程序代码评价、编程题等。以下是本文档的详细知识点总结: 一、基本概念 1. 静态关键字的作用:静态关键字有三个明显的作用:在...
这是一份关于嵌入式C语言的教程,有助于C语言的提高,是pdf文档。 这是一份关于嵌入式C语言的教程,有助于C语言的提高,是pdf文档。 这是一份关于嵌入式C语言的教程,有助于C语言的提高,是pdf文档。
这些基础知识是任何C程序员的必备技能,尤其在嵌入式环境中,对内存和资源的有效管理显得尤为重要。指针是C语言的强项,理解如何操作指针能帮助开发者直接与硬件交互,实现更高效的代码。 其次,文档可能会深入讨论...
嵌入式C语言自我修养:从芯片、编译器到操作系统 嵌入式系统的概念和重要性: 1. 嵌入式系统是一种嵌入到特定设备中的软件系统,能够控制和管理该设备的一种或多种功能。 2. 嵌入式系统广泛应用于工业控制、航空...
首先,嵌入式C开发的背景介绍指出,与传统的软件编程不同,嵌入式系统编程需要直接与硬件交互。虽然汇编语言能够直接操控硬件,但其复杂性使得C语言——这种“高级的低级”语言成为更合适的选择。C语言既能提供高级...
文件名“c到嵌入式c.pdf”可能包含的内容可能是将基础的C语言知识逐步过渡到嵌入式环境中的应用,涵盖如何编写设备驱动程序、理解和使用中断服务例程、理解和操作内存管理以及优化代码以适应有限的硬件资源。...
嵌入式c面试经典.pdf 可能包含历年来经典的嵌入式C语言面试问题和解答: - 低级I/O:如何直接操作硬件寄存器进行输入输出,以及中断服务程序的设计和实现。 - 多线程与同步:在嵌入式环境中如何使用线程,以及互斥锁...
嵌入式C语言视频教程(148集)百度网盘下载
"嵌入式C语言精华及部分源码"这个资料正是为想要深入理解和实践嵌入式C编程的开发者准备的。 嵌入式C语言精华部分涵盖了以下几个核心知识点: 1. **基本语法与数据类型**:C语言的基础包括变量、常量、数据类型...
UML+OOPC嵌入式C语言开发精讲以及lw_oopc源码 摘要:// 在高焕堂先生的著作《UML+OOPC嵌入式C语言开发精讲》中介绍了高先生及其MISOO团队创作的lw_oopc宏。 // 在研读这套宏的过程中,我发现高先生提供的这套宏还...
标题《嵌入式C语言进阶之道》和描述部分提到了文章将介绍嵌入式C语言的编程风格、模块化编程、常用关键字、MISRA C 2004规范以及安全编程等内容,同时会讨论一些嵌入式C语言的小技巧。以下是对这些知识点的详细说明...
由于嵌入式C语言可读性强、移植性好,与汇编语言相比大大减轻了软件工程师的劳动强度,因而越来越多的单片机工程师开始使用C语言编程。但C语言的可移植性仅限于与硬件无关的子程序,而与具体硬件有关的子程序则无法...
### 嵌入式C精华,嵌入式C语言设计 #### 一、嵌入式C/C++语言精华概述 嵌入式系统是现代科技领域不可或缺的一部分,它广泛应用于汽车电子、工业自动化、消费电子等多个领域。对于从事嵌入式系统开发的专业人士而言...
嵌入式C语言教程是专为那些希望在嵌入式领域深入学习的程序员设计的,它与我们在常规Windows或其他...这两个PDF文件,"嵌入式系统的C程序设计"和"C语言嵌入式系统编程修炼之道",将是你踏上这一旅程的重要参考资料。