最近看到几篇关于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. 业务开发(一)—— MySQL

    0x01.SQL异常Incorrect string value java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9 ...

  2. 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对

    string result = "aaa?a=1&b=2&c=3&d=4"; string[] array = result.Split('?'); //s ...

  3. [转]比特币测试链——Testnet介绍

    本文转自:https://blog.csdn.net/wkb342814892/article/details/80796398 testnet使用详解需求需要搭建一个简单的交易测试场景,用于生成可查 ...

  4. [转]mysql优化——show processlist命令详解

    本文转自:https://blog.csdn.net/sunqingzhong44/article/details/70570728 版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...

  5. [转]使用jenkins实现持续集成

    本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...

  6. win10 uwp 商业游戏 1.2.1

    上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...

  7. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

    在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控 ...

  8. MyEclipse中jsp编码设置

    window->preference->Myeclipse->files and editors->jsp,设置编码为utf-8 2.window->preference ...

  9. POST与GET的联系与区别

    是什么? GET与POST是在客户机和服务器之间进行请求-响应时,两种最常被用到的方法: GET-从指定的资源请求数据. POST-向指定的资源提交要被处理的数据. 所以我们从语义上就能看出两者最明显 ...

  10. Ubuntu 安装 chrome

    依次执行命令: sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ wget - ...