从事汽车电子软件开发需要什么知识?

https://m.toutiao.com/is/JV6txD6/

随着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等串行通信接口。这些内容可以在具体的例程项目中去学习,也不是一朝一夕的事情,需要大家沉下心去钻研。

(0)

相关推荐

  • 学习单片机,还是要按部就班,不管8位,还是32位,就这么学

    不管是8位的单片机,还是32位的单片机,都是很容易学的.如果之前学过8位单片机,有8位单片机的基础,那么学习32位单片机就更加容易了.即使没有学过8位单片机,直接学习32位单片机也是可以的.在学习单片 ...

  • 还在用C语言玩MCU吗,要不要换个姿势?| 正经玩

    现在MCU上的资源越来越丰富,程序存储容量和内存SRAM的容量也越来越大,尤其是运算速度已经达到了上百MHz甚至1GHz的水平,恩智浦的i.MX RT系列.LPC5500系列和LPC54000系列就是 ...

  • 完美兼容、性能提升——NUCLEO-F446ZE开发板测评

    早在去年12月份,就得知意法半导体(STMicroelectronics,简称ST)公司扩充了低成本评估板Nucleo系列,在Nucleo 64和Nucleo 32的基础上,推出Nucleo 144系 ...

  • 软件开发知识体系

    软件开发历程 ALL IN ONE 软件开发最早时期的开发模式,可以理解为一体化,所有业务.接口都在一套系统,毫无层次可言. MVC MVC 是一种使用 MVC(Model View Controll ...

  • 软件开发有什么作用·

    前几年,模板网站和现场软件开发爆火,如今却销声匿迹,人们纷纷放弃现成软件,转而青睐于定制开发.为什么呢?        因为定制软件相比于现成模板软件,可以大大提高资金使用率.提高员工的工作效率.降低 ...

  • 让开发者相见恨晚?!华为云软件开发云实现云上敏捷开发

    [51CTO.com原创稿件]弗吉尼亚鹿是现存最古老的一种鹿.这并不是偶然的,而是因为350万年来,这门优雅的物种延续了一种有效的生存办法--它们保存了灵活的本性和迅速适应环境的能力.这恰恰佐证了达尔 ...

  • 在线教育培训软件开发未来的发展趋势

    近年来,不少公司趁着"#情绪焦虑#互联网+教育"的东风,纷纷进军教育培训行业,将"互联网+教育"做得风生水起.而在去年,突如其来的疫情又让线下课外培训机构大受影 ...

  • 关于软件开发,都应该知道的10个常识

    2011年,马克·安德列森(Marc Andreessen)写了一篇文章,预言"软件吞噬世界".观点主要有两个:第一,许多传统业务正在被软件公司所取代:第二,所有其他公司都发现,他 ...

  • 软件开发的两大经典模型:瀑布模型和迭代模型

    软件开发的两大经典模型:瀑布模型和迭代模型

  • 小视频软件开发

    一.小视频软件开发APP开发注意事项 1.视频特效一定要多 视频已经不再是记录的手段,而成了具备化妆品功能的"美貌魔镜了"请注意,一定要及时更新新的视频模板.音乐.贴纸.滤镜--因 ...

  • 短视频软件开发,最优解的开发方案是什么

    短视频软件开发的开发方法有三种,原生开发.HTML5开发和混合开发,原生开发是指根据特定的官方提供开发语言.开发工具进行的APP开发,优势在于,原生开发的短视频软件交互体验和性能是最佳的.但一般大家都 ...

  • 教育软件开发缺的从来不是机会,而是思考

    从2020年开始,教育软件从在线教育市场迸发出了"前无古人后无来者"的发展势头.无论是在行业规模或是市场热度,在线教育好像在一夕之间便实现了脱胎换骨把握住这个机会的在线教育企业和机 ...