从事汽车电子软件开发需要什么技能?
前不久有一个朋友想转去做汽车软件开发,问我需要学习什么内容。今天在这里做一个分享,希望可以帮到这位朋友以及以后想要从事汽车电子软件开发的朋友们。
随着SDV(软件定义汽车)概念的提出, 大家都认识到了软件在汽车电子领域的重要性,各大汽车主机厂纷纷成立了软件研发中心并争夺软件开发人才。上汽集团在今年年初成立了上汽软件中心(后改名为零束),长城汽车成立了诺博、诺创、诺博,还有很多OEM也成立或者扩大了各自的软件研发中心,这里都不赘述了。
总之,这对从事汽车软件开发的同僚们是很大的利好。2019年大家经历了汽车销量下滑带来的零部件供应商效益下滑,2020年的疫情对汽车行业来说更是雪上加霜,好在从9月份开始汽车销量迎来了不错的增长,给我们汽车电子从业者们带来了更多信心。未来随着SDV的进一步推进,以及汽车新四化的逐渐开展,对软件开发人员的需求也会进一步增加。
啰嗦了这么多就是想给正在或者想要从事软件开发的大家一点信心,提升自己的开发技能、做好自己的开发工作,未来大有可为。下面回到本文的主题,想要从事汽车软件开发需要掌握哪些技能,本文讨论的scope是单片机软件开发,关于带有操作系统的Soc软件开发我们以后可以讨论。
1.首先要对单片机(MCU)的基本构成有一个了解,如果是计算机或者电子信息相关的专业,大学应该都学过一门叫做“微机原理”的课程,那这一步就可以跳过了。如果没有学过这门课,可以自己买一本单片机原理的书来看一下,对单片机的各个组件(什么是ALU、RAM、ROM、寄存器等)有个基本的了解。
2.接下来就是C语言编程知识了,C语言是你和MCU进行沟通的语言,通过C程序告诉MCU你要它完成什么工作(比如通过一个端口输出一个PWM)。C语言的强大之处是可以直接操控硬件,大部分操作系统都是使用C语言来编写的,包括你每天都会使用的Windows系统和Android系统(部分组件是用汇编来写的),从世界编程流行语言排行榜上,常年霸占榜首就可以看出C语言的重要程度。相信大部分人大学应该都学过C语言这门课程,因为现在不管是不是理工科的专业,利用编程解决问题的思想还是有必要学习一下的。如果你没有学过C语言也不要方,可以自己买一本C语言的入门书籍来学习,掌握C语言的基本语法即可,更多的编程技巧可以在单片机编程的过程中强化学习。网上比较推荐《C Primer Plus》这本书来入门,本人没有看过这本书,不作评价,感兴趣的朋友可以先了解一下,再决定是否选择它作为入门书籍,鉴于目前国内的翻译水平参差不齐,英文没问题的话可以直接阅读原版。进阶的话有《C和指针》,《C陷阱与缺陷》。
3.MCU虽然很强大,但是如果只有一个MCU没有相关的外围电路它也干不了什么事情,因此我们需要能看懂和MCU交互的外围电路的原理图。比如现在让你通过MCU来控制一个LED的亮灭,首先你要看一下电路上这个LED连在了MCU的哪一个端口上了,如此你才知道通过控制哪个端口的电平状态来点亮和熄灭该LED。其次还要看一下端口输出什么电平可以点亮LED,同样的输出什么电平可以熄灭LED。我们举一个例子来说明,下图中的RGB_RED是连接到MCU的一个端口上的,通过该端口来控制红色LED的亮灭,那么如何点亮这个红色的LED呢?我们看到RGB_RED接到了一个NPN型(什么是NPN和PNP自行百度查阅)三极管的基极上(1),当端口RGB_RED输出高电平时集电极(3)到发射极(2)就会导通,红色LED的一端是5V(P5V0),另一端是GND,此时就会有电流流过红色LED,红色LED就会被点亮;相反,当端口RGB_RED输出低电平时集电极(3)到发射极(2)截止(不导通),就不会有电流通过红色LED,红色LED就会熄灭。真实的项目中除了控制LED的亮灭外,还要控制LED的亮度水平(白天亮度需要更高,夜晚亮度低一些),此时就要用到MCU的PWM(脉冲宽度调制)功能了,PWM其实就是一个频率和占空比可以调节的方波,通过调节占空比的大小(0%-100%)来调节LED的亮度。原理也很简单,调节占空比其实就是调节加在LED上面的电压:假设最大电压是5V,那50%占空比对应的就是2.5V,输出的电压和占空比是一个线性的关系。
4.有了上面的这些基础就可以开始简单的MCU编程了,推荐想要入门的同学可以买一个MCU开发板(最好带有CAN、LIN、SPI、I2C这些常用通信接口),开发板上有丰富的外围电路设备以及编写好的程序例程,跟着这些例程可以快速地掌握相关的开发技能。想要从事汽车电子领域的MCU软件开发工作,还需要掌握该领域内常用的一些通信接口,比如和整车其他模块交互的CAN、LIN网络,以及MCU和板上资源交互的I2C、SPI等串行通信接口。这些内容可以在具体的例程项目中去学习,也不是一朝一夕的事情,需要大家沉下心去钻研。
好了,以上就是本次分享的全部内容。如果大家对具体的MCU中的模块感兴趣的话,可以在讨论区留言。如果你觉得本文对你有用,可以点击阅读原文或者关注公众号"日拱一卒不期而至"一起学习交流。
从事汽车电子软件开发需要什么技能?相关推荐
- 汽车电子软件开发需要的基本技能
汽车电子软件开发需要以下技能: 编程语言:汽车电子软件通常使用C.C++.Python等编程语言,因此掌握这些编程语言是非常重要的. 软件架构:汽车电子软件开发需要了解软件架构,包括模块化设计.实时系 ...
- 汽车电子软件开发:AutoSAR集成开发环境
有一阵子没有跟进汽车电子软件开发了,许久前参与一个项目,本人负责其中软件的设计,算是对此有一定了解,在此总结一下自己的认识. 汽车电子开发中软件内容大致包括三大类:(1)BSP开发,主要针对常见ECU ...
- 汽车电子软件开发相关标准
ISO 26262-6是有关软件开发的,ISO 26262-8是有关流程的 61508,DO 178, EN 50128,都是和安全相关的软件开发标准
- 汽车电子软件开发需知
目录 一.嵌入式 1.1 什么是嵌入式系统 1.2 什么是汽车 ECU 1.3 如何了解一款MCU 1.4 谈谈代码静态分析 二.汽车软件 2.1 什么是"域控制器" 2.2 为什 ...
- 汽车电子软件开发 - 流程简介
系统设计 架构设计
- 软件开发技术技能人才修炼
在当前竞争激烈的互联网环境中,作为程序员等技术岗,必须不断的学习,才能不断提升自身实力,锻炼自身技能.想要成为一名企业急需的技术人才,需要学习哪些技能呢? 一.IT技术发展背景及历程 IT技术发展背景 ...
- 汽车软件开发:目前还存在几大方面的痛点亟待解决?
http://www.evinchina.com/newsshow-1370.html 通过对不同的汽车软件开发者的访谈,以及软件开发管理过程中的经验教训,@爱索咨询认为,除去组织架构的独立性之外,汽 ...
- 软件开发详细设计说明书_汽车软件开发之ASPICE系统需求过程组
点击蓝字 关注我们 汽车电子软件开发流程 和朋友交流时,被问到是什么行业时? 我:汽车电子软件开发. 朋友:那你认为什么开发语言是最好的呢? 我:.......Matlab.ASCET? 朋友:gun ...
- 软件开发工程师 - 面试手册
软件开发工程师 - 面试手册 岗位概述 软件开发工程师是IT行业中最常见的岗位之一,主要负责设计.开发和维护软件应用.他们需要熟悉至少一种编程语言,了解软件开发的基本流程和原理,具备良好的解决问题能力 ...
- 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
前言 本文主要介绍我开发的几款软件产品,大概介绍一下功能.可以让读者了解本人的开发能力,所擅长的方面.有相关开发需求可以联系作者. 本人开发软件多年,从事的行业也多种多样:自然接触了不同的业务,开发了 ...
最新文章
- 十问 | 关于Service Mesh 和Kubernets的最前沿思考
- Linux文件系统属性权限chattr与lsattr命令
- [css] 举例说明BFC会与float元素相互覆盖吗?为什么?
- 实现 tomcat 热加载证书
- 手把手带你阅读Mybatis源码(三)缓存篇
- VUE项目启动:You may use special comments to disable some warnings
- SharePoint 2010新特性文档集
- 利用ObjectMapper进行对象与JSON互相转化
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目)
- 企业级大数据架构设计及规划方案.ppt
- 免费pdf转换成jpg图片方法
- 15个经典面试问题及回答思路,挥泪整理面经
- ArcGIS Engine二次开发常用接口及其使用方法(一)
- oppo手机投屏到电脑上
- go语言:给map上锁
- web入门 命令执行 web29-web41
- animation初体验
- 皇图中原青豫大战打到服务器维护,皇图2超变9377
- 单调区间之239.滑动窗口最大值
- python修改单个文件