【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点
最近看到几篇关于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的几种观点的更多相关文章
- 【2018.05.10 智能驾驶/汽车电子】AutoSar Database-ARXML及Vector Database-DBC的对比
最近使用python-canmatrix对can通信矩阵进行编辑转换时,发现arxml可以很容易转换为dbc,而dbc转arxml却需要费一番周折,需要额外处理添加一些信息. 注意:这里存疑,还是需要 ...
- 【2017.12.05 智能驾驶/汽车电子】转载:如何成为一名无人驾驶工程师 By刘少山
之前对无人驾驶的理解就是通过刘少山老师的书:第一本无人驾驶技术书 通读之后,对智能驾驶有了一个初步的认识,如感知.决策.控制都涉及哪些领域,有哪些可以利用的技术: 但经过一段时间的实践,发现即使是在我 ...
- 【2017.09.15 智能驾驶/汽车电子】汽车高级驾驶辅助ADAS常用传感器厂商:激光雷达篇
不定期更新,主要是汇总Internet上的激光雷达厂商资讯,不涉及技术,以备参考. 1. Innoviz:固态激光雷达公司 新闻链接:http://36kr.com/p/5092055.html 激光 ...
- 2018/05/11 PHP 设计模式之 适配器模式
什么是适配器模式? 简单来说,我想买一根充电线,我买一根安卓的?还是买一根苹果的? 我也不确定,因为我以可能会换手机,对于我的形式我也不确定. 所以,我要买一根可以同时适配 安卓/苹果 的线. 所谓适 ...
- Microsoft Artificial Intelligence Conference(2018.05.21)
时间:2018.05.21地点:北京嘉丽大酒店
- 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), ...
- 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)
20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- Apache Struts最新漏洞 远程代码执行漏洞预警 2018年11月08日
2018年11月8日,SINE安全监控检测中心,检测到Apache Struts官方更新了一个Struts漏洞补丁,这个漏洞是Apache Struts目前最新的漏洞,影响范围较广,低于Apache ...
- C++11——智能指针
1. 介绍 一般一个程序在内存中可以大体划分为三部分——静态内存(局部的static对象.类static数据成员以及所有定义在函数或者类之外的变量).栈内存(保存和定义在函数或者类内部的变量)和动态内 ...
随机推荐
- Python中的序列操作
官方手册:https://docs.python.org/3.7/library/stdtypes.html#sequence-types-list-tuple-range 序列简介 序列是指按照位置 ...
- 巨杉数据库 MySQL兼容项目正式开源
9月7日.8日,2018 ODF 开源数据库论坛,在北京盛大开幕.在大会上,巨杉数据库正式发布了巨杉全新的MySQL/MariaDB兼容架构,并将项目正式开源. 开源数据库论坛(ODF)是中国开源数 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- springMVC中的注解@RequestParam与@PathVariable的区别
1.@PathVariable @PathVariable绑定URI模板变量值 @PathVariable是用来获得请求url中的动态参数的 @PathVariable用于将请求URL中的模板变量映射 ...
- YTKNetwork源码详解
本篇是第三篇关于网络请求的,将讲述YTKNetwork源码,上述两篇分别讲述AFNetworking源码解析以及结合自己项目封装AFNetworking. AFNetworking源码解析:https ...
- ResourceOwnerPassword模式使用数据库.
有时候, ResourceOwnerPassword模式有用的, 可以用来代替我们原来管理程序的开发方式. 因为管理程序本身拥有用户数据的权限嘛, 并不是第三方应用, 无需要授权 集成很简单. 1. ...
- 设置防火强开机自启,以及没有成功的tomcat开机自启
防火墙 如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start firewalld.serv ...
- Revit二次开发: 文件损坏
哪些因素可能会导致损坏? 损坏的原因也各不相同,包括但不限于 无法读取/写入存储介质 程序发生崩溃(特别是在数据写入 RVT 模型时) 附加模块以通过正常 UI 无法或意外的方式修改图元 未经测试的多 ...
- ASP.NET MVC 学习笔记-5.Controller与View的数据传递
ViewData属性 ViewData属性是System.Web.Mvc.ControllerBase中的一个属性,它相当于一个数据字典.Controller中向该字典写入数据,ViewData[“K ...
- Python 集合符号
& 求交集 l 求并集 ^ 交叉补集 - 求差集 > = < =