调芯片,做软件,我一直以来总是想做点汽车电子系统中的应用。汽车电子系统的魅力在于,它是一个典型的,并且极具商业价值的电子系统,有非常悠久的历史积累,已经发展成为一个成熟的应用系统开发体系。但作为自由开发者和玩家,我还有另一些有趣的观点:
- 绝大部分的ECU中,受控机构是真的在动,现象反馈直观生动。作为一个资深的开发者,闪小灯这样的项目已经远远不能抑制住我编写程序的冲动。
- 汽车电子系统是组网的,是由一个个ECU(电子控制单元)组成的分布式系统。组网的应用可扩展性极强,可以不断通过添加新设备扩展系统功能,而不是通过不断在同一颗芯片上不断折腾。如果要组网,就用会用到CAN总线,或者可能的千兆网络,有一些协议栈的组件比较有搞头。
- 如果在一颗芯片上不断扩展功能,会让单机系统变得越来越复杂。在单核处理器的芯片上,叠加多个功能组件的应用系统,不仅仅是多功能的集合,在架构设计中还需要考虑各组件的兼容性,并且还需要考虑负载均衡,要考虑执行时间片的分配、优先级等等。最终软件设计工作转变成了业务需求分析工作,头大,不爽。在组网系统中进行开发,如果要新增功能,只要新加节点就好,新的开发工作主要面向新增节点,而完全不用维护老的节点,省事省心。
- 自己平时也开车,作为一个动手能力极强并且拥有一个车库工作间的工程师,实在是忍不住想给自己的座驾做个DIY的升级。(也时刻不忘凡尔赛我的车库 ^ v ^.)
最近我在策划一个以CAN总线为主题的系统应用开发的活动,应用场景设定为汽车电子系统,我的开发团队做了一些具有CAN总线接口的小板子,可以通过简单的连线,实现分别一些ECU的功能,例如雨刮器、车灯、车窗,甚至座椅姿态控制和温度控制等等。汽车电子系统中有一些典型的ECU,如图1所示。
届时,希望能集社区和自由开发者的力量,采用分布开发的合作方式,实现一辆汽车的尽量多的ECU节点,再组装起来模拟一个真车的工作状况。在完成开发项目的过程中,也希望能够系统地整理汽车电子系统开发过程中方方面面的问题,形成开发手册,以便于后续有更多的开发者和玩家能够在汽车电子系统中创造更多有趣的应用。
我们设计的FTHR-F0140
开发板非常小巧和简单,实际就是一个带CAN总线接口的核心板,外观尺寸同DIP-40封装的插座兼容,方便开发者自行设计扩展电路板实现各自的功能。现在已经焊出来一个原型板子并且调试成功,验证电路系统正常工作。如图2所示。
其中,FTHR-F0140
使用了国产灵动微电子的MM32F0144C4P
微控制器作为主控芯片,LQFP32(7mm x 7mm)的封装,便于DIY玩家自行焊接,芯片本身基于ARM Cortex-M0内核,最高主频可达72MHz,集成8KB SRAM和64KB FLASH。最重要的是,这款芯片竟然集成了FlexCAN外设模块,没错,这就是国际汽车电子龙头半导体公司NXP的汽车MCU芯片上使用的同款CAN外设模块。目前,灵动微电子官方发布的MindSDK软件开发平台(https://mindsdk.mindmotion.com.cn)也已经支持这款芯片,具有丰富的样例工程,当然,也支持了CANopen等CAN总线通信的协议栈。如图3所示。
正式活动即将开始,估计这些小板子会以免费或者极低的费用发放到社区和自由开发者手中,相关的技术资料,也会在合适的平台向公众发布。
有点小担心,大家可能会用力过猛,真的合力搞出来一辆新概念的汽车出来。不过想想还是很值得期待的呢。^ v ^.