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

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

3天内不再提示

面向嵌入式系统的自诊断API

PCB线路板打样 来源:PCB线路板打样 作者:PCB线路板打样 2023-11-10 15:46 次阅读

迈向嵌入式系统的自诊断API
随着嵌入式系统需求的增长和开发周期的缩小,开发人员越来越多地集成商业应用程序编程接口(API)或软件工具的功能集合发布者提供在应用程序中使用该工具的功能。程序员选择这些预先构建的库,而不是手动编写所需的功能。常见示例是通信,消息传递,数据库和用户界面库。这些“中间件”API在便利性,可移植性,生产力和上市时间方面提供了诸多益处。但是,这些库通常还存在引入破坏性和极难发现的编程错误的风险。这种风险源于商业API的实施方式。包含API的软件功能几乎总是数据结构无知。通过使用void指针在API库和应用程序之间传递数据,他们处理数据而不“知道”他们运行的数据类型。

然而,创建API的潜力它捕获了更广泛的编程错误,并减少了API学习曲线的启动,内置于C ++和C语言中。通过利用每个ANSI C/C ++编译器的函数参数类型检查能力,可以创建一个数据感知的编程接口,从而实现自诊断。 C/C ++作为首选的嵌入式系统开发环境不断发展,因此基于环境固有功能的任何改进都具有广泛的适用性。

数据管理通常是核心应用程序需求,以及许多商业数据库API在解决嵌入式系统的性能和占用空间要求的同时,我们已经开始满足这一需求。

从历史上看,数据库SDK已经为数据库提供的服务提供了预定义的静态编程接口。对于嵌入式系统,这些API中的大多数都是导航的,具有排序,存储和检索数据的功能,同时一次浏览数据库的内容。开发人员必须学习这样一个数据库来完成一项任务,一般都是积极的,或者至少是中立的:虽然API提供了一个可以增加项目时间的学习曲线,但这种记忆在未来的项目中可能会有用。人们普遍期望这个API几乎可以处理任何类型和组织的数据。

然而,一个重要的缺点是,对于预定义的数据库函数库来说,能够管理任何数据库定义的数据,接口必须忽略所有数据的类型。换句话说,数据库编程接口必须将数据视为不透明或未键入的数据。简单来说,数据库库无法知道公司,人员,网络节点,传感器,高速公路或任何其他特定类型的信息是从数据库读取还是写入数据库。编程接口只能知道正在写入一些数据。

为了实现这一点,所有这些数据库都使用void指针在数据库库和应用程序之间传递数据。 void指针是一个C/C ++语言程序变量,可以合法地指向任何类型的数据。无效指针是什么叫做un-typed?正如其名称所暗示的那样,它没有类型。

没有类型,C/C ++编译器和数据库运行时都不能对它们执行任何验证。这开启了编程错误的可能性,这些错误源于将指针传递给错误类型的数据。这种错误的后果包括数据库中的无意义数据到损坏的(不可用的)数据库到崩溃的程序。

编写函数参数时出错的结果将导致数据库运行时放置将数据放入数据库中不适合的位置(例如,将数据放入数据库为模型数据指定的位置)。充其量,这会导致乱码存储在数据库中。更糟糕的是,数据库运行时可能会尝试超出程序堆栈的末尾并导致内存冲突(即崩溃)。

从数据库中读取数据会带来其他风险。尝试将N字节宽的数据读入一个小于N字节宽的程序变量将导致数据库覆盖内存中的随机位置。关键数据可能会被覆盖(例如程序调用堆栈),从而导致崩溃。重写数据库运行时结构也可能会被覆盖并导致数据库损坏。

引入错误有多容易?实际上,通过切割和粘贴代码块的省力实践,这种错误很快就会进入代码。任何与void指针相关的编辑错误,无论是传递指向错误主机程序变量的指针,还是传递指向已分配不足内存的指针,编译器或中间件都无法检测到。无论错误类型如何,使用void指针传递数据条C/C +编译器和中间件运行时它们检测错误的能力。纠正这些类型的错误的努力从最小到最大不等。

自我诊断API

创建更好的数据库API的潜力?一个捕获这样的编程错误,并减少API学习曲线启动?自从80年代首次将函数原型引入C和C ++以来,已经存在:通过利用每个ANSI C/C ++编译器的函数参数类型检查能力,创建一个数据感知的编程接口,从而实现自诊断。/p>

函数原型是函数的“签名”。函数原型声明函数的名称,函数的参数(参数)数,每个参数的数据类型以及函数返回值的数据类型。如果函数的实际使用与其签名不匹配,编译器将发出错误消息,并且必须先纠正违规代码,然后才能成功编译程序。

利用现代ANSI C/C ++编译器的函数原型设计功能要求我们放弃旧的想法,即数据库编程接口必须是程序员学习的静态函数库,然后应用于每个可能的数据库设计。相反,编程接口必须特定于每个数据库设计,因此了解每个特定数据库的数据类型。换句话说,填充模型记录以强制要求程序员传递模型信息的数据库函数的唯一方法是,该接口是从模型所参与的数据库设计派生的,也是特定的。

McObject的eXtremeDB是一种用于嵌入式系统的内存数据库系统(IMDS),它展示了如何将自诊断API应用于嵌入式系统中间件。 eXtremeDB有一个用于通用任务的小型静态API(打开并建立与数据库的连接,开始和结束事务等)。但是,大多数接口??关于填充,搜索和读取数据库定义中动态生成的数据的部分。

eXtremeDB数据库用户使用输入到文本文件中的eXtremeDB数据库定义语言(DDL)来描述数据库。编译器mcocomp处理此DDL,验证其语法,如果没有错误,则生成开发人员在其应用程序项目中包含的 .c和 .h文件。 .c和.h文件定义该唯一数据库的编程接口。

在生成的文件中有函数原型(.h文件)和实现(.c文件)创建,搜索和读取由数据库设计者定义的每种类型的类和索引。每个接口都是针对特定数据元素和操作的特定用途的;因此,在接口定义中考虑了元素的类型。

eXtremeDB还建立在利用ANSI C函数原型的基础上,提供了包含大量(和可配置)运行的数据库库的开发人员版本-time检查函数原型无法检测到的其他类型的编程错误,例如尝试使用事务范围之外的对象的句柄,或者使用无效的事务句柄。

直观的界面可以在项目的开始阶段提高程序员的工作效率,并延长软件的使用寿命。与基于模糊静态编程接口的非描述性代码相比,进入项目的维护程序员发现阅读和理解函数要容易得多。

为每个项目出现一个新界面,非常简单的规则管理它的产生和使用。掌握生成和使用此类API的基础知识可以提供比学习静态中间件API的100到250个功能更强大,更灵活的“生活工具”。

作者:Steven T. Graves,总裁兼首席执行官,McObject LLC,Issaquah,WA

审核编辑 黄宇

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

    关注

    4982

    文章

    18281

    浏览量

    288459
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128221
  • API
    API
    +关注

    关注

    2

    文章

    1382

    浏览量

    60992
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63370
收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向有哪些?

    热门发展方向,包括但不限于: 1.物联网: 随着物联网的快速发展,嵌入式系统在物联网领域的应用也越来越广泛。嵌入式系统可以用于物联网设备的控制、监测和数据处理等方面。例如,在服务领域,
    发表于 04-11 14:17

    嵌入式会越来越卷吗?

    嵌入式系统的应用,不仅提高了医疗诊断和治疗的精准度,还为患者提供了更加便捷和个性化的医疗服务。这种发展使得医疗保健变得更加智能化和人性化。 社会影响与未来展望 嵌入式
    发表于 03-18 16:41

    嵌入式系统发展前景?

    嵌入式系统发展前景? 嵌入式系统,从定义上来说,是一种专用的计算机系统,它被设计用来控制、监视或者帮助操作一些设备、装置或机器。在过去的几年
    发表于 02-22 14:09

    嵌入式学习步骤

    嵌入式行业是一个涉及广泛领域的行业,嵌入式、物联网、人工智能、智能与科学、电子信息工程、通信工程、自动化工程、测控、计算机科学等专业在嵌入式系统中使得软件和硬件的结合更加高效,适合从事
    发表于 02-02 15:24

    嵌入式自学好书推荐

    嵌入式自学好书推荐 在数字时代的浪潮中,嵌入式系统一直是数字电子产品中的重要组成部分。无论是家用电器、工业控制、汽车电子、医疗保健、军事应用还是物联网,嵌入式
    发表于 01-11 15:13

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 722次阅读

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式
    发表于 12-05 15:17

    未来嵌入式在哪些方向会更火?

    针对于嵌入式比较官方的定义为:嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的+专用计算机系统。目前,随
    发表于 10-27 10:23

    什么是嵌入式Linux?

    发展需要不断进化。随着芯片性能的增强和社会变革的需要,嵌入式系统越来越承接更多、更复杂的功能,所以嵌入式开发也以高薪稳定的状态稳坐在就业的顶端。(相较于其他行业,嵌入式工程师的工资在同
    发表于 10-11 13:47

    从事嵌入式工作有哪些优势?

    。 那么从事嵌入式工作有哪些优势? 一是工作强度相对较低。开发企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都不同,开发人员往往疲于奔命,重复劳动
    发表于 10-08 15:05

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-28 06:59

    嵌入式Linux应用开发的完全手册

    是怎样和硬件发生作用的。 同样,对于想从硬件岗位转到软件岗位的人,对于想从传统单片机(比如51单片机)编程进一·步学习“有操作系统的”嵌入式编程的人,需要找到一个学习的切入点:先掌握各个硬件部件的简单编程
    发表于 09-25 07:12

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-11 07:24

    一个面向嵌入式系统的轻量级框架

    mr-library 是一个面向嵌入式系统的轻量级框架,提供统一的底层驱动设备模型以及基础服务功能,具有模块化设计、可配置性和扩展性的特点, 可帮助开发者快速构建嵌入式应用程序。
    发表于 09-01 12:22 304次阅读

    PX5 RTOS拥有对POSIX pthreads API的原生支持

    : 第一:Linux拥有超过30亿用户,是很受欢迎的操作系统之一。此外,在要求苛刻的嵌入式系统行业中,嵌入式Linux约占嵌入式设计的70
    发表于 05-18 13:59