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

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

3天内不再提示

关于自动代码生成五大原则分析和介绍

MATLAB 来源:djl 作者:董淑成 2019-09-17 17:16 次阅读

10年前,我们经历了从汇编语言到C语言的转变,现在,我们是时候经历从C语言到Simulink模型的转变了……

从第一次看到这句话到现在又一个10年过去了,10年的时间,很多领域在控制算法软件开发中已经完成了从C语言到Simulink模型的转变,当然,也有一些行业正在经历这样的转变,Simulink模型生成C代码已经成为非常成熟的技术。稍微有些遗憾的是,10年的时间,并没有像汇编语言到C语言的转变那样,让工程师们几乎彻底忘掉汇编语言,即便是在基于模型设计最为成熟的汽车行业,也依然有工程师还有翻看自动生成代码的习惯。

关于自动代码生成五大原则分析和介绍

下面我来简单说说和自动代码生成相关的几个原则:

拿正确的模型去生成代码。代码生成工具不具备纠错功能,最完美的代码生成工具,也只能忠实于模型的描述,并将其转化为C代码。如果我们不确定模型正确与否,那我们得到的代码也同样是不能确保正确。

不对自动生成的代码做任何手工修改。从软件工程的角度上来讲,在基于模型的开发模式下,模型应该是我们工作和维护的工作产品,所有我们希望在代码里实现的内容,都应该通过模型或者模型配置去实现。如果我们手工修改自动生成的代码,那么整个开发过程的可维护性就大大降低,每次面对模型发生变更后生成的代码,我们都需要经过手工修改。

不看代码。不看代码并不绝对,这里主要是指不看算法的实现代码。在生成的.C和.H文件中,H文件作为和其他模块的接口文件,还是会有工程师去看看你这个模块到底定义了哪些全局的函数以及变量的。

管理你关心的数据。代码生成阶段的主要工作是数据管理工作,配置Simulink模型中需要关注的数据,这里主要是信号参数,并将其按照项目的要求,生成为C代码中的变量和参数。对于那些不需要关注的数据,不建议做过多的配置,只要按照默认的规则生成变量即可。再罗嗦一句,我们只管理我们关心的数据,比如,跟其他模块之间的接口数据、需要标定的参数以及需要观测的变量。

代码的验证。这里我要扯一下ISO 26262的大旗,没办法,ISO 26262出现之前,我也曾坚持在这种开发模式下无需对代码做静态验证,也无需对代码做动态测试,很多人难以接受我的观点,现在好了,在客户面前,我不再说这是我的观点,而是ISO 26262里面的条款。传统模式下的静态、动态验证不需要了,但是,代码是否就无需验证了呢?非也,代码依然要经过充分验证,只是,在假设模型已经经过充分验证的前提下,这里只要再验证代码和模型一致即可,验证的方法,也就是我们非常熟悉的SIL和PIL,ISO 26262里面称之为back-to-back测试。

我个人观点,尽量不要在代码生成这件事上耗费过多的心思。当然,“强迫症患者”我也接触过一些,虽说道理上讲理解可以不看代码,但还是忍不住要去关心代码,希望代码生成工具能够生成出来自己希望看到的代码。我是工程师,不是老中医,我这里没有药到病除的方子,我希望能做到的是让你的病情转移。

你不是因为强迫症要关注代码吗?

那你的模型测试是否充分?

MC/DC覆盖是否已经达到了100%?

强迫自己把模型测到尽可能充分吧,这才是有利于你产品品质提升的事情。

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

    关注

    0

    文章

    6

    浏览量

    5976
  • 自动代码
    +关注

    关注

    0

    文章

    2

    浏览量

    6045
收藏 人收藏

    评论

    相关推荐

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 119次阅读
    如何<b class='flag-5'>自动</b><b class='flag-5'>生成</b>verilog<b class='flag-5'>代码</b>

    代码解析工具与自动化流程图生成解决方案

      摘要:CasePlayer2是一款强大的源代码解析工具,专门设计用于分析ANSI C、C、C++以及汇编语言源代码,并自动化地生成流程图
    的头像 发表于 10-10 13:40 115次阅读

    关于Makefile自动生成-autotools的使用

    的Makefile并非日常任务,但遇见需要构建大型软件项目时,利用工具自动生成Makefile就显得尤为关键。接下来,我们将重点介绍一款自动化构建工具——Autoto
    的头像 发表于 07-25 15:50 1440次阅读
    <b class='flag-5'>关于</b>Makefile<b class='flag-5'>自动</b><b class='flag-5'>生成</b>-autotools的使用

    聚徽触控-工控主板的五大优势分别是什么

    工控主板的五大优势主要如下:
    的头像 发表于 07-17 09:58 272次阅读

    ISEDA首发!大语言模型生成代码到底好不好使

    在大模型席卷一切、赋能百业的浪潮里,“码农”也没能独善其身。各种代码自动生成的大模型,似乎描绘了一个人人都能像资深工程师一样写代码的美好未来。 但在这个理想成为现实之前,有一个不能回避
    发表于 05-16 13:41 282次阅读
    ISEDA首发!大语言模型<b class='flag-5'>生成</b>的<b class='flag-5'>代码</b>到底好不好使

    关于气密性检测仪的五大优势,你get到了吗

    在现代工业生产中,产品的气密性检测已经成为一个关键步骤。为了保证产品的质量和性能,密封操作尤为关键。气密性检测仪作为一种专业的检测仪器,其五大优势在许多行业得到了广泛的应用。接下来,让我们揭示它的五大优势。
    的头像 发表于 04-09 14:30 320次阅读
    <b class='flag-5'>关于</b>气密性检测仪的<b class='flag-5'>五大</b>优势,你get到了吗

    分布式存储系统的七大原则之二:区分环境数据与业务数据

    在之前讨论的分布式存储系统七大原则的第一原则中,我们了解了容灾切换和数据备份的差异。现在,我们继续探索第二原则:区分环境数据与业务数据。这一原则强调了两种类型数据在变化频率、价值以及数
    的头像 发表于 03-11 09:42 330次阅读

    AI PC元年,全球前五大PC厂商如何领跑?

    是19.8%、15%、10.6%和7.1%。 当前,包括群智咨询(Sigmaintell)IT研究总监李亚妤在内的分析师,以及广泛的从业者都认为,2024年是全球AI PC元年。那么,作为全球前五大PC厂商,如何应对这波产业机遇呢?
    的头像 发表于 02-26 08:09 3728次阅读
    AI PC元年,全球前<b class='flag-5'>五大</b>PC厂商如何领跑?

    SMT贴片加工厂锡膏管控的五大原则及要求

    一站式PCBA智造厂家今天为大家讲讲SMT贴片加工厂锡膏是如何管控?SMT锡膏管理操作流程。在SMT贴片加工过程中,锡膏是一个至关重要的组成部分,因为它起到连接SMT元件和PCB板的作用。SMT贴片加工厂必须非常小心地管理和控制锡膏,以确保生产出高质量的电路板。 SMT贴片加工厂锡膏的管控方法 一、SMT贴片加工厂必须妥善存储锡膏 存储条件对于保持锡膏的性能至关重要。锡膏必须在低温下储存,以防止其被氧化和老化。一般来说,锡膏应储存在温度为0
    的头像 发表于 01-18 10:06 1008次阅读

    软件测试的7大原则,你漏了几条?

    软件测试报告最需要注意的就是测试思考,而非测试执行。而对软件测试菜鸟来说,初入行,首先要知道软件测试的7条原则,了解这些可以让你事倍功半。 1测试的不可穷尽原则 是的!任何产品不可能被穷尽测试。我们
    发表于 01-18 09:39

    电机的五大启动方式

    自动化小白必学!电机的五大启动方式
    的头像 发表于 01-09 10:39 825次阅读
    电机的<b class='flag-5'>五大</b>启动方式

    单片机代码自动生成器程序

    单片机代码自动生成器是一种能够帮助开发人员快速生成单片机代码的工具。它利用了现代计算机技术和算法,能够根据用户提供的输入和需求,
    的头像 发表于 01-08 14:12 2726次阅读

    Java中保持扩展性的实现方法

    SOLID(单一、开闭、里式替换、接口隔离、依赖倒置)五大原则和23种设计模式(常见的单例、构建者、装饰、适配、代理、组合、模板等等),小伙伴们对这些肯定都很熟悉。这些原则和设计模式能够辅助我们,让我们在设计的时候有所抉择,从而达到高内聚、低耦合的目的。
    的头像 发表于 12-01 10:01 337次阅读
    Java中保持扩展性的实现方法

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink的代码生成器,生成ROS
    的头像 发表于 11-15 17:53 780次阅读
    simulink<b class='flag-5'>自动</b><b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>

    LED驱动电源设计五大要点

    电子发烧友网站提供《LED驱动电源设计五大要点.doc》资料免费下载
    发表于 11-15 09:53 0次下载
    LED驱动电源设计<b class='flag-5'>五大</b>要点