本帖最后由 MDebug 于 2016-4-28 17:22 编辑
最近研究了一下AUTOSAR,写点东西分享出来。 Automotive Open System Architecture (AUTOSAR),是汽车电子行业内解决软件复用问题的一种标准化软件架构,现在目前最新的版本是发布于2014年的10月31日的4.2版本。它能够让开发人员面向应用进行软件开发,为了解决汽车系统设计中与日益增多的软件内容和不断收紧的开发时间问题。今天我们就来看看如何开发符合AUTOSAR标准的软件。我第一次接触AUTOSAR是因为我认识的的一个在戴姆勒公司(北京)朋友介绍我认识AUTOSAR标准,后来就研究了下这个标准,确实觉得好处很多。AUTOSAR 软件通过提供一个开放的汽车软件架构应对日益复杂的代码,该架构由汽车OEM、供应商和工具开发者共同定义。AUTOSAR 支持开发极具创新性且标准化的电子系统,以改进质量、性能、安全性和环保功能。它还能帮助简化汽车使用寿命内软件和硬件的更新流程。AUTAOSAR 的标准架构得到了大量汽车厂商和芯片半导体厂商,以及第三方工具和服务商的大力支持,像我们熟悉的半导体厂商恩智浦,英飞凌,意法等都推出有自己的解决方案,能得到这么多牛逼公司的支持,你就知道他的厉害和趋势了。很多大公司都遵从这一标准,虽然他是专为汽车行业设计的,但是我们同样可以借鉴他的架构和标准开发用于其他行业和产品的软件,就像MISRA 现在已普遍应用于各个嵌入式软件开发中,而不只是局限于一个行业。 我们以一个简单的例子MCU GPIO来说明如何开发基于AUTOSAR标准的驱动软件,首先请自行下载AUTOSAR4.2标准压缩包到本地电脑,并熟悉AUTOSAR文档结构,这次我们主要参考 AUTOSAR_SWS_PortDriver.pdf和AUTOSAR_SRS_PortDriver.pdf两个文档。参照这两个文档以及说明开发API接口,数据类型等。在microship 的8位机和NXP的MPC5602 32位机上验证。我们这里没有完全遵照AUTOSAR标准但是大的架构是按照AUTOSAR来的。类型定义,参考文档的描述,其中Type可以定义为uint也可以定义为char。 例如按照文档要求可以定义如下 typedef unsignedchar Port_PinType; ………. typedef enum { GPIO_E_PORT_PIN_IN = 0u, GPIO_E_PORT_PIN_OUT }ePortPinDirection_Type; ………. 这里没有列出所有定义,其他类似我们就不一一列举了,函数的定义也是一样按照文档的要求定义声明函数,不要忘记给你的任何一个函数都加注释,并使用统一的格式。 void GPIO_vSetPinDirection(Port_PinTypePortPin, ePortPinDirection_Type ePortPinDirection) { ………. } 按照文档开发完,并调试没有问题就可以使用这个驱动做应用了,例如我们可以驱动继电器,LED灯等,我使用这个驱动成功驱动继电器以及LED,等管脚的工作,并在microchip和NXP 的片子上都调试成功。
|