当今汽车的电子化程度越来越高,最明显的就是车载ECU越来越多,汽车绝大部分功能都需要ECU的参与。如果从功能来看,不同功能的ECU看似没有任何联系。那么,这是否意味着不同的ECU开发完全没有共性呢?

答案当然是否定的,今天从技术角度来聊聊汽车ECU开发。从个人观点出发, 我将ECU开发简单分为单片机开发和嵌入式开发。

单片机也就是常说的MCU,汽车行业多使用瑞萨的芯片进行开发,比如RH850芯片。MCU上一般运行RTOS,对于汽车行业来说,OSEK OS是最为常见的操作系统。

OSEK OS属于实时操作系统,,熟悉RTOS系统的都知道,RTOS内部没有进程、线程这类概念,而TASK才是其基本运行单位。MCU运行的TASK在初期设计阶段确定,且每个TASK运行的时间和运行顺序也是确定的。如果考虑到任务优先级,高优先级的任务在运行时会抢占低优先级的任务。

上面介绍了单片机开发的基本知识点,接下来说说我认为单片机开发中的难点:状态机设计和中断处理函数。

ECU在运行时可能会有多种状态,而每种状态则要求执行不同的处理,因此设计状态机时需要考虑到ECU所有可能的状态、每种状态需要执行的操作,以及状态迁移的条件等。

以电源管理为例,ECU有sleep,standby,wakeup三种状态。如果ECU从wakeup进入到sleep状态,那么此时要求必要数据保存到flash中,所有的task要停止运行,某些硬件需要下电,ECU不再接收CAN消息,电流需要降低到某个规定值等等。

一旦电源管理状态机设计有bug,那么ECU的行为就可能出现异常,比如无法睡眠、睡眠电流过高、严重的可能会导致损坏等等。上面只是举了一个简单的例子,电源管理的状态机也没有这么简单,由此可见状态机的设计难度之高。

单片机开发的另一个难点是中断处理函数。中断和芯片有关系,可以在芯片手册中查看到中断向量表,程序员可以编写对应的中断处理函数。如果中断被触发,则程序查询中断向量表,并跳转到对应中断处理函数。但中断处理有时候会导致程序卡死或行为异常。

如果中断处理函数中处理的变量被某个函数或者TASK使用,那么中断触发后,变量发生改变。如果这个变量被某个状态机使用,那么有可能会导致状态迁移,进而导致ECU行为异常。另外一点,中断处理函数内部循环等待某个信号的变化,但如果一直没等到,而开发人员没有添加定时器,此时程序就会在这个中断卡死,进而导致程序无法正常运行。因此,开发人员在实现中断处理函数时,一定要小心谨慎。

本文简单介绍了汽车ECU中单片机开发的难点,受限本人经验不够丰富,观点难免有些片面,单片机开发的难点应该还有不少。文章内容是我个人项目经验总结的难点,希望能够给不熟悉的朋友带来一些参考。


文章首发于上汽零束开发者论坛, 论坛ID: 程序猿司晨

ps. 欢迎关注微信公众号【程序猿司晨】,汽车专业野生程序员一枚,分享汽车软件技术和个人成长经历。 技术栈:嵌入式Linux、车载网络通讯协议、Adaptive Autosar…

聊聊汽车ECU中单片机开发相关推荐

  1. 普中单片机开发板HC6800-EM3 v2.2 3.0无法烧录下载程序解决

    普中科技单片机在淘宝上买了很久了,一直没用,现在要做设计,就拿来看看.这一看不要紧,刚开始就坑死人了写不进程序.研究了一晚上.其实很简单就是短路帽没接对. l 开发板:普中Prechin HC6800 ...

  2. 【雷达与对抗】【2016】76-81GHz平面天线在汽车雷达中的开发与应用

    本文为瑞典查尔姆斯理工大学(作者:DAPENG WU)的硕士论文,共47页. 由于半导体技术的迅速发展,汽车雷达变得越来越紧凑,价格也越来越便宜.现在大多数车辆都安装了雷达系统,以提高安全性和驾驶体验 ...

  3. 汽车ECU软件开发之应用层软件与底层软件

    随着汽车产品日渐趋向电子化,人们对各类先进的安全系统.高级驾驶辅助系统的接受程度日益提升.而原本昂贵的盲点检测.自动紧急制动等功能的成本下滑,使其快速获得了市场青睐.富士奇美拉研究所(Fuji Chi ...

  4. # 汽车ECU开发达到ASPICE L1到底有多困难

    文章目录 背景介绍 什么是ASPICE 为了实现ASPICE L1,我做了什么 总结 背景介绍 最近大半年没有更新文章,主要有两方面的原因: 一方面是由于自己太懒,没有更新的动力: 一方面是为了让项目 ...

  5. 基于普中51单片机开发板的温控风扇

    自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论 ...

  6. 基于模型的设计(MBD)在汽车ECU软件开发中的实践

    基于模型的设计(Model-based Design,以下简称MBD)是一种围绕模型展开的项目开发方法,指对开发对象或者项目产品进行精确建模,项目的需求分析.功能设计.系统框架.代码生成.测试验证等开 ...

  7. 汽车最强大脑ECU和单片机是什么关系

    摘要: 有效解决线路信息传递所带来的复杂化问题 ECU的定义 ECU原来指的是engine control unit,即发动机控制单元,特指电喷发动机的电子控制系统.但是随着汽车电子的迅速发展,ECU ...

  8. ssm中怎么用location.href跳到controller层_聊聊自动驾驶中的功能开发

    在知乎上看过不少大牛写的自动驾驶技术介绍文章,大多谈到的是AI, Deep Learning, Computer Vision等等感知(Perception)层面的.但在各个传感器(雷达.摄像头.激光 ...

  9. 汽车ECU AUTOSAR 开发

    简述 欢迎来到AUTOSAR开发专栏文章,后续将陆续带来AUTOSAR 系列的技术文章分享,欢迎大家关注,更欢迎在评论区沟通讨论:希望能给大家带来一丝丝帮助:话不多说,进入正题.关于AUTSAR开发, ...

最新文章

  1. react 项目实战(六)提取布局组件
  2. Java使用非对称数据加密RSA
  3. 指纹浏览器 开源 linux,浏览器指纹--Canvas指纹
  4. 【学术相关】如何避免博士延期毕业?
  5. lldb 调试 linux下 .net Core 总结及开源扩展 yinuo
  6. move语句java_java自动化代码优化
  7. PHP转换时间戳mktime,php日期转换为时间戳的方法
  8. html超浪漫的3D动态相册表白网站制作 html程序员专属情人节表白网站
  9. 《电子数据取证》读书笔记-第一章
  10. lq106kf打印机设置_爱普生lq106kf
  11. 麒麟linux怎么安装软件,中标麒麟Linux操作系统怎么安装软件?
  12. JavaWeb-SpringBoot 学习笔记(1) class path resource [Beans.xml] cannot be opened because it does not exis
  13. 台式计算机用u盘给电脑安装系统,如何在台式计算机上用U盘重新安装Win7系统
  14. 形式逻辑(普通逻辑)5:直言判断
  15. 数学主题分类 - 中文(下)
  16. 网络营销专家分析SNS社区一般推广方式及要点
  17. Python:监控微信群里的消息,并根据条件进行回复(发送图片)
  18. android屏幕翻转时onSaveInstanceState的使用
  19. Arduino--音乐频谱
  20. 于丹《论语心得》中唯一让我感动的地方

热门文章

  1. 网站监控软件有哪些?2020局域网监控软件推荐
  2. 关于FB撞库、群控的技术实现
  3. 查看Hadoop集群的基本信息
  4. 大地测量学基础算法实现
  5. 可以吗?从 FireWire 设备引导 Linux
  6. Springboot---JPA配置
  7. 搭建量化系统|股票数据的除权和复权
  8. 从零开始学习Linux运维,成为IT领域翘楚(七)
  9. Wireshark提取RTP包中的H264码流
  10. 代码粘贴到word文档的美化网站