最近看到几篇关于Simulink及AutoSar的Blog和Paper,感觉比较有意思,转载备忘之。

1. 看衰Simulink及AutoSar

From:Tumiz的技术天地

https://blog.csdn.net/tumiz/article/details/48660191

作者:Tumiz

其实Simulink和AutoSar的开发流程现在是越来越流行,这篇文章里的一些观点还是有失偏颇;

毕竟技术的惯性还是很厉害的,一些不适用Simulink/AutoSar的软件可以通过在系统设计的过程中合理划分各模块来最大程度地适配相应标准。

原文内容

simulink做为领域特定语言DSL,仅适合和数学相关的算法开发,不适合扩大应用范围,而现在的情况是simulink被滥用,而工具开发商还在推波助澜。

汽车领域内simulink的适用的开发范围是有限的,那就是算法开发。

除此之外,用simulink开发并不合适,如ADC、CAN收发、故障管理、网络管理等,对于这些与底层相关的IO处理程序无论是开发效率或是运行效率simulink都不及C/C++。

领域特定语言在特定的领域才有其优势,在此领域之外反而是弄巧成拙。

很多汽车工程师都用simulink建模并生成代码,认为其学习门槛低、可读性强、基于模型建模和自动代码生成是未来趋势应该完全simulink开发;

其实是一种误解,simulink作为一种图形化语言的确学习门槛低可读性强,这是因为simulink屏蔽了底层信息仅体现数理逻辑的缘故。

也正因此simulink缺乏了表现底层的能力,可以说专业性不够。

描述相同的底层功能,simulink的工作量要比C/C++多得多,运行效率却要差不少。

很多汽车工程师醉心于研究各种Matlab/Simulink的使用技巧,本来用C/C++很容易解决的问题,为了使用Matlab/Simulink而耗费了更多时间。

m语言和simulink作为数值计算领域内的特定语言,用其做算法开发十分容易,但是它并不能在所有领域通用,开发底层它不如C/C++,开发界面不如Java,开发网页不如HTML/Javascript。

当前,汽车控制器的软件除了硬件驱动、简单的调度之外就是控制算法了,功能性方面的开发并不是很多。

换句话说,现在的汽车控制器偏向于计算,而且计算量还不大,相对于手机或PC来说可以是很小,几乎没有存储功能,人机交互、机机交互的工作量(广义的IO处理)也很小,所以用simulink开发大部分上层程序是没有问题的,但是随着汽车控制器承担的功能越来越多,交互的工作会越来越多,随着智能化的发展,存储的需求会越来越多,而这些都不是Matlab/Simulink所擅长的,因为这些不是数学问题。

再谈autosar。

autosar作为宝马等整车厂提出的控制器软件架构标准,目的是为了切割划分控制器软件的层次,便于把软硬件包给不同的供应商来做,意图改变当前供应商软硬一体的格局,降低对某一供应商的依赖。

但是据我的实际使用体验,autosar的层次划分不清晰,架构设计实在糟糕。

首先,层次划分,ADC、CAN收发、故障管理、网络管理、传感器驱动等都是放在应用层来做,这些通常是放在底层完成的工作,却因为便于底层软件的固化(开发应用软件过程中不用改动)而被放在了应用层,这类似于windows的驱动安装,本来是底层的驱动被当成应用软件安装。但是windows驱动安装后仍然位于底层,而autosar里面这些程序生来就在应用层。

然后,这种架构设计糟糕在哪里呢,to be continued....

个人观点

Simulink/AutoSar偏向于算法仿真,我们在开发过程中可以用来快速验证算法,生成的代码也是可以优化的嘛。

算法验证完毕,封装算法,底层操作则可以通过C/C++来实现。

【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点的更多相关文章

  1. 【2018.05.10 智能驾驶/汽车电子】AutoSar Database-ARXML及Vector Database-DBC的对比

    最近使用python-canmatrix对can通信矩阵进行编辑转换时,发现arxml可以很容易转换为dbc,而dbc转arxml却需要费一番周折,需要额外处理添加一些信息. 注意:这里存疑,还是需要 ...

  2. 【2017.12.05 智能驾驶/汽车电子】转载:如何成为一名无人驾驶工程师 By刘少山

    之前对无人驾驶的理解就是通过刘少山老师的书:第一本无人驾驶技术书 通读之后,对智能驾驶有了一个初步的认识,如感知.决策.控制都涉及哪些领域,有哪些可以利用的技术: 但经过一段时间的实践,发现即使是在我 ...

  3. 【2017.09.15 智能驾驶/汽车电子】汽车高级驾驶辅助ADAS常用传感器厂商:激光雷达篇

    不定期更新,主要是汇总Internet上的激光雷达厂商资讯,不涉及技术,以备参考. 1. Innoviz:固态激光雷达公司 新闻链接:http://36kr.com/p/5092055.html 激光 ...

  4. 2018/05/11 PHP 设计模式之 适配器模式

    什么是适配器模式? 简单来说,我想买一根充电线,我买一根安卓的?还是买一根苹果的? 我也不确定,因为我以可能会换手机,对于我的形式我也不确定. 所以,我要买一根可以同时适配 安卓/苹果 的线. 所谓适 ...

  5. Microsoft Artificial Intelligence Conference(2018.05.21)

    时间:2018.05.21地点:北京嘉丽大酒店

  6. c++11 智能指针 unique_ptr、shared_ptr与weak_ptr

    c++11 智能指针 unique_ptr.shared_ptr与weak_ptr C++11中有unique_ptr.shared_ptr与weak_ptr等智能指针(smart pointer), ...

  7. 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)

    20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  8. Apache Struts最新漏洞 远程代码执行漏洞预警 2018年11月08日

    2018年11月8日,SINE安全监控检测中心,检测到Apache Struts官方更新了一个Struts漏洞补丁,这个漏洞是Apache Struts目前最新的漏洞,影响范围较广,低于Apache ...

  9. C++11——智能指针

    1. 介绍 一般一个程序在内存中可以大体划分为三部分——静态内存(局部的static对象.类static数据成员以及所有定义在函数或者类之外的变量).栈内存(保存和定义在函数或者类内部的变量)和动态内 ...

随机推荐

  1. WCF、WebAPI、WCFREST、WebService之间的区别【转载】

    在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...

  2. [转]Docker修改默认时区

    本文转自:https://www.jianshu.com/p/004ddf941aac 前言 前段时间把公司部分项目迁移到了docker 容器里.查看ngixn反向代理的log时发现时间与正确时间相差 ...

  3. [转]【docker】CMD ENTRYPOINT 区别

    本文转自:https://blog.csdn.net/u010900754/article/details/78526443 昨天用Dockerfile来启动mongodb的集群,启动参数--repl ...

  4. JavaScript数组入门。

    JavaScript中的array对象就是数组,首先是一个动态数组,而且是一个像c#中 数组 arraylist hashtable等的综合体. var arr = [1, 7, 3, 4, 5];  ...

  5. 10.QT-定时器

    QObject定时器 需要头文件#include <QTimerEvent>  需要函数 int QObject::startTimer(int interval); //启动定时器,并设 ...

  6. Spring 中事务控制的API介绍

    1.PlatformTransactionManager Spring所有事务代理类都是基于PlatformTransactionManager接口的实现. 此接口是spring的事务管理器,它里面提 ...

  7. SpringBoot+WebSocket

    SpringBoot+WebSocket 只需三个步骤 导入依赖 <dependency> <groupId>org.springframework.boot</grou ...

  8. 剑指offer:2.二维数组的查找(Java版)

    备注:本文参照<剑指offer第二版> 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, 输入这样的一个二维数组和一个整数 ...

  9. JS中的反柯里化( uncurrying)

    反柯里化 相反,反柯里化的作用在与扩大函数的适用性,使本来作为特定对象所拥有的功能的函数可以被任意对象所用.即把如下给定的函数签名, obj.func(arg1, arg2) 转化成一个函数形式,签名 ...

  10. 如何为你的 Vue 项目添加配置 Stylelint

    如何为你的 Vue 项目添加配置 Stylelint 现在已经是 9102 年了,网上许多教程和分享帖都已经过期,照着他们的步骤来会踩一些坑,如 stylelint-processor-html 已经 ...