• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2025机器人产业趋势论坛报名
传感器

汽车MCU演绎四大发展趋势

  2005年07月15日  

随着通信、连接、计算机技术与汽车的日益融合,汽车MCU作为核心部件将在汽车电子中扮演越来越重要的角色,MCU在汽车中应用的数量将越来越多。汽车MCU在提高自身性能的同时,在应用上不同于在消费、通信中的应用模式,高、中、低端汽车MCU将现身同一系统,推动汽车向更节能、更安全和更舒适的方向发展。本文介绍了汽车MCU的几个未来发展趋势。

图1:高、中、低端MCU在汽车电子中应用的现状和趋势(按销售收入)。

过去几年里,平均一部汽车大约会用到20颗MCU,而现在汽车中使用的MCU数量已达40-60颗,部分高档轿车MCU数量已经达到上百颗。2004年,全球汽车半导体的收入是160亿美元,其中汽车MCU的销售收入就占到34%。据预测,2005年,汽车MCU所占比例还将保持这一数字。

目前,汽车MCU已经进入汽车动力系统、汽车安防系统、汽车娱乐系统、汽车导航与远程通信系统,这些系统对汽车MCU提出了不同的要求,推动汽车MCU不断发展。汽车MCU在提高性能的同时,在应用上也将以不同于消费、通信中的应用模式演绎新的发展,助力汽车向更节能、更安全和更舒适方向发展。

高、中、低端MCU同时共存于汽车应用

受汽车制造和电子控制系统的双重推动,全球汽车半导体产业呈快速发展势态。据Strategy Analytics估计,到2011年,每辆汽车中半导体产品将增加到265美元。而到那时全球汽车半导体市场会达到213亿美元的市场规模,CAAGR为8.5%,在中国,这一数字会达到21%!

MCU是汽车电子中的核心部件,由于它在汽车电子中实现的功能呈现多样性,从简单的车灯控制到复杂的发动机控制、汽车远程通信实现,高、中、低端MCU在汽车中都可以发挥作用,可以共存于一个系统中。图1是Strategy Analytics分析的高、中、低端MCU在汽车电子中应用的现状和趋势。

从这个分析中,我们也可以看出,高、中、低端MCU未来几年在汽车中的应用的格局与现在差别不大。就高、中、低端MCU的具体应用而言,其本身又分化为高、中、低端应用产品,这里的高、中、低端指集成的功能、性能而言。Strategy Analytics认为在未来应用中8位MCU的应用集中在中、低端,32位MCU的应用集中在高端。

Microchip亚太区汽车营销经理Chris Appleton指出:“从批运数量来看是低端MCU占据主导地位,虽然高端MCU不断进入这个市场,但8位MCU的增长速度超过32位MCU的增长速度,针对8位的新应用不断涌现,成为推动8位MCU增长的动力。所以每个供应商都把发展8位MCU作为重点。”

未来中国汽车电子市场将保持高速增长,富士通公司市场部副总经理郑国威认为由于中国工程师缺乏高端MCU应用(如汽车动力和ABS等方面)的开发经验, 所以他认为中国汽车电子市场低端MCU会占据主导。英飞凌工业与多元化电子事业部高级总监石敬岩也表示中国汽车电子应用多受成本驱动,所以主要以低端MCU应用为主。

多种方法助力MCU的性能提升

随着对汽车舒适性,安全性的需求提升,以及对汽车节能、混合动力等新需求的涌现,汽车MCU的性能要求不断提高。各供应商在提高汽车MCU性能方面各显神通。瑞萨半导体管理(中国)有限公司汽车电子行销中心总经理崛田慎吉表示:“瑞萨利用基于先进工艺和片上高速闪存的高速设计来提高MCU的运行速度。其他的方法有加入FPU(单/双精确浮点单元),加入MAC(乘加指令)等。” Microchip的Chris Appleton强调:“提高MCU性能的方法很多 ,从改变架构到集成外设到提高工作频率等都可以,但性能提升还要考虑成本折中问题,我们的dsPIC DSC系列就增加了对数字信号处理的支持。”他表示其他提升MCU的方法有利用工艺进步给MCU增加更多集成来实现。

富士通公司市场部副总经理郑国威则表示给MCU增加DSP功能仅是提高其性能的一种做法,富士通通过把一些控制算法交给硬件逻辑去完成来降低MCU的工作量,从而达到提升MCU性能的目的。

英飞凌的石敬岩表示由于英飞凌在汽车电子方面可以提供传感器、MCU和功率器件,所以英飞凌寻求通过智能分割和优化总线系统的方法来提升整个系统的性能。具体而言,英飞凌除了提高MCU的频率外,还通过智能的优化外设和外设控制处理器来分担MCU在数据处理方面的工作量。英飞凌的32位的TriCore架构就包含了uC、RISC和DSP特性。

MCU的集成度进一步提高

随着工艺技术的进步,汽车MCU的集成度将进一步提高。各供应商在集成策略上差别不大,主要是集成器件的数量的差异。Freescale亚太区汽车电子市场总监杨飞表示:“Freescale倡导智能化分立器件的概念,即SMARTMOS,其中之一是把MCU和功率器件集成。这可以叫做分布式控制(IDC),它把模拟器件和标准MCU结合起来。它给客户带来的好处包括减少PCB板面积,减少外围器件、缩短开发周期、降低成本等。”他强调IDC主要是应用于下一代的车身控制,如车灯、车窗、车镜、车锁等应用。他还表示,针对有关汽车安全的应用,如胎压检测系统(TPMS),Freescale则提供另外一种集成方案,就是系统级封装方案(SIP),在该方案中,整个芯片包括MCU、压力传感器、射频发送器、运动感应或定位装置等。如图2所示。目前Freescale已提供该芯片的样片。

英飞凌的石敬岩表示:“CAN、LIN协议已经被认可,未来FlexRay也会被采用,这些都会集成进MCU中,除了这些英飞凌还将集成嵌入式电压调节器、振荡器等以为汽车电子系统供应商降低成本。”瑞萨的崛田慎吉表示:“对于车内网络,瑞萨的MCU提供CAN或LIN接口,对于线控安全和FlexRay,瑞萨加入到汽车标准制订组织中,积极推进标准的制订以及将标准在产品中实现。瑞萨在2004年加入汽车开放系统架构(AUTOSAR)组织和日本汽车软件平台和架构(JasPar)组织,这两个组织致力于为汽车控制系统制订标准化的软件和模块接口。”

Microchip的Chris Appleton指出:“对于网络化的汽车,给MCU集成通信模块如UART、LIN或CAN是必须的,此外,集成模拟功能如A/D转换器、振荡器、BOR等可以帮助工程师在增加功能的同时降低成本和占位面积。Microchip越来越多的汽车MCU中很多集成了外设以支持CAN和LIN总线协议。”富士通的郑国威表示富士通已经有集成CAN、LIN和UART,集成FlexRay的单芯片正在开发中。

图2:8位MCU在汽车中的应用示意。

Flash MCU的发展

目前,Flash MCU已经成为汽车MCU的主流,在响应终端用户和市场变化方面,在降低MCU因软件代码变化而闲置方面、在增加软件开发和测试时间方面,Flash MCU都有巨大的优势。不过各供应商在开发下一代Flash MCU方面的策略和重点略有不同。

瑞萨科技在大容量flash MCU方面一直领先,目前其SH7059, 80MHz MCU的flash容量达1.5MB,为目前最高的。瑞萨的崛田慎吉表示:“瑞萨开发的下一代flash MCU的外形更小,其读速达100Mhz,每Mb的编程速度为5到10秒。”数据保持、读速、编程速度和芯片尺寸是瑞萨最关注的。

而英飞凌则将最先进的工艺技术用于flash,其最新的32位引擎控制MCU中的flash将采用0.13um工艺技术。英飞凌的石敬岩表示:“flash的质量是最受关注的,英飞凌倡导零缺陷文化,以严格的测试规范确保其质量。”除此之外,英飞凌还在研究将MRAM、NROM引如汽车MCU的可能性。

Microchip的Chris Appleton表示:“数据保持、耐久度、编程时间和成本是我们关心的。Microchip以专有的PEEC 单元技术作为8位和16位MCU flash的工艺基础。”

富士通的郑国威表示:“富士通关注flash MCU的数据保持期限、擦除/写入周期、是否支持板上编程等。随着汽车应用日益复杂,flash的容量也需要增大,我们也注意增大flash的容量。”

未来汽车MCU的应用开发

中国单片机实验室的吕京建表示:“未来有关汽车电子规范越来越多,越来越复杂。汽车MCU要适应这些不断变化的规范和需求就必须走Soc化的路子,具体而言,就是基于SoC的应用成为汽车电子的目标,汽车电子功能的实现也将板级实现向芯片实现转移。在开发初期,通过FPGA上的IP内核重构实现功能,然后再将FPGA转化成ASIC,进行批量的生产。当然,这些产品在使用前要经过严格的测试。”

他表示这样开发的好处是可以快度地响应市场需求,对中国IC设计公司而言,这可以开发出具有自主知识产权的产品。他也表示未来因为汽车产品关乎人的生命安全,所以对汽车应用的开发要讲求可靠性。

为确保汽车MCU开发方面的可靠性,汽车工业软件可靠性联会MISRA (The Motor Industry Software Reliability Association) 发布了MISRA C Coding Standard,这一标准中包括了127条C语言编码标准,通常认为,如果能够完全遵守这些标准,则开发出的C代码是易读、可靠、可移植和易于维护的。

吕京建表示这个标准对于C/C++语言工程项目的代码质量管理能够起到良好的指导性作用,目前已经有针对这128条规则的专门检查工具。他建议汽车MCU的开发工程师严格遵守这些规则。

127条C语言编码标准

Rule 1. 严格遵循ANSI C89标准,不允许任何扩展。

Rule 3. 如果要嵌入汇编语言,则必须将所有汇编语句包装在C函数里,而且这些函数中只有汇编语句,没有常规C语句。

Rule 7. 不得使用三元操作符(? : )

Rule 10. 不得残留被注释掉的废代码。

Rule 11. 所有标识符不超过31字符。

Rule 12. 不同名空间中的变量名不得相同。


例如:


typedef struct MyStruct {... } MyStruct; (违规)

struct Person {


char* name;


...


};

char name[32]; (违规)

Rule 13. 不得使用char, int, float, double,
long等基本类型,应该用自己定义的类型显示表示类型的大小,如CHAR8, UCHAR8, INT16, INT32, FLOAT32,
LONG64, ULONG64等。

Rule 14. 不得使用类型char,必须显示声明为unsigned char或者signed char。

Rule 18. 所有数字常数应当加上合适的后缀表示类型,例如51L, 42U, 34.12F等。

Rule 19. 禁止使用八进制数。(因为086U这样的常数很容易引起误解)。

Rule 21. 不得定义与外部作用域中某个标识符同名的对象,以避免遮盖外部作用域中的标识符。

Rule 23. 具有文件作用域的对象尽量声名为static的。

Rule 24. 在同一个编译单元中,同一个标识符不应该同事具有内部链接和外部链接的声名。

Rule 25. 具有外部链接性质的标识符应该只声明一次。

Rule 27. 外部对象不得在多个文件中声名。

Rule 28. 禁止使用register关键字。

Rule 29. 自动对象(栈对象)使用前必须赋初值。

Rule 33. 操作符&&和||的右侧表达式不得具有副作用(side-effect)。


也就是说,象 if (x == 20 && ++y == 19)这样的表达式被禁止。

Rule 35. 在返回布尔值的表达式中不得出现赋值操作。


也就是说,常用的 if (!(fp = fopen("fname", "r"))) { /* error */ }


被禁止。

Rule 37. 不得对有符号数施加位操作,例如 1 << 4 将被禁止,必须写 1UL << 4;

Rule 39. 不得对有符号表达式施加一元 "-" 操作符。

Rule 40. 不得对有副作用的表达式施加sizeof操作符。

Rule 42. 除了循环控制语句,不得使用逗号表达式。

Rule 44. 禁止冗余的显式转型。比如: double pi = (double) 3.1416F;

Rule 45. 禁止从任意类型到指针的强制转型,禁止从指针到任意类型的强制转型。


例如:void* p = (void*)0xFFFF8888UL;

Rule 49. 显示测试值是否为零。

Rule 50. 不得显式判断浮点数的相等性和不等性。

Rule 52. 不得遗留“永远不会用到”的代码。

Rule 53. 所有非空语句必须具有副作用。

Rule 55. 除了switch语句,不得使用标号(label)。

Rule 56. 不得使用goto.

Rule 57. 不得使用continue。

Rule 58. 除了switch语句,不得使用break.

Rule 59. if, else if, else, while, , for语句块必须使用{}括起。

Rule 60. 任何 if 语句,最后必须有一个收尾的else。例如:


if (ans == 'Y') {


...


}


else if (ans == 'N') {


...


}


else if (ans == 'C') {


...


}


else {


;


}

Rule 67. 循环计数器的值不得在循环体内修改。

Rule 70. 禁止任何直接和间接的递归函数调用。

Rule 82. 每个函数只能有一个推出点。

Rule 86. 如果一个函数可能返回错误信息,则调用后必须加以测试。

Rule 92. 不应该使用#undef

Rule 95. 不得将宏作为参数传给宏函数

Rule 98. 在一个宏定义中,#或##符号只能出现一次。

Rule 101. 禁止指针运算(代之以数组下标运算)。

Rule 102. 禁止超过两级的指针。

Rule 104. 禁止使用指向函数的非常量指针。

Rule 106. 不得将栈对象的地址传给外部作用域的对象。


(后面的规则针对实时嵌入式系统,对其他类型的开发未必适用,故略去13条)

Rule 118. 禁止使用动态堆分配(也就是不得使用malloc, calloc和realloc)。

Rule 119. 禁止使用errno。

Rule 120. 禁止使用offsetof.

Rule 121. 禁止使用

Rule 122. 禁止使用setjmp, longjmp.

Rule 123. 禁止使用

Rule 124. 禁止使用(不能用printf, scanf了!)

Rule 125. 禁止使用atoi, atof, atol。

Rule 126. 禁止使用abort, exit, getenv。

Rule 127. 禁止使用

作者:张国斌

最新视频
伊顿Bussmann:百年品牌 以创新驱动发展   
欧姆龙光电传感器E3AS | 角度特性演示:高反光不锈钢工件稳定检出   
研祥金码
专题报道
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事 ABB以电气问题解决专家之志,回答未来之问。讲述与中国用户携手开拓创新、引领行业发展、推动绿色转型的合作故事,共同谱写安全、智慧和可持续的电气化未来。
企业通讯
研祥IPC-310准系统,5月28日冰点底价限时开抢
研祥IPC-310准系统,5月28日冰点底价限时开抢

疯狂星期三,研祥IPC-310准系统,5月28日冰点底价限时开抢!

优傲机器人新品巡展 NVITATION 邀请函
优傲机器人新品巡展 NVITATION 邀请函

优傲机器人将于2025年6月5日在北京亦庄举办新品巡展活动。届时,您将有机会近距离品鉴优傲新品成为首批见证 UR15 中

在线会议
热门标签

社区