ISO 14229用于刷新方面的主要诊断服务见表1。
根据ISO 14229协议的诊断服务及ISO 15765-3的通信建议, 刷新通信主要分为3个部分: 刷新前准备工作, 刷新过程, 刷新后的处理过程。 刷新前准备工作和刷新后的处理过程在application软件中,而刷新过程在bootloader中。 刷新的主导过程由上位机根据ISO 14229及ISO 15765标准中规定的流程来进行, 相关通信服务在下文中详细说明。
2 智能前照灯的刷新软件设计
刷新软件的设计, 也即bootloader的启动加载过程及bootloader软件和application软件的跳转过程,以及诊断通信的刷新具体流程在bootloader中的设计。 对于application相关内容, 本文简要说明。
2.1 主控芯片
本文使用英飞凌XC878芯片来实现智能前照灯的刷新系统设计。 英飞凌XC878是高性能8位微控制器XC800家族的新成员, 其设计基于和工业标准8051处理器兼容的XC800内核, 具备40个数字I/O引脚; 8通道、 10位模数转换单元 (ADC), 4个16位定时器, 捕获/比较单元6 (CCU6), 片内集成CAN控制器, 具备SPI、 UART、 LIN等通信功能。
英飞凌定时器和捕获PWM较多, 尤其用于电机众多和电机控制的场合, 非常适合用于智能前照灯水平电机和垂直电机的驱动控制, 并且实时控制性能较高。
英飞凌XC878具备CAN功能, 可以用于智能前照灯的CAN通信, 网络管理以及故障检测与通信,系统刷新功能。 本智能前照灯用定时器及中断控制步进电机驱动, 用CAN进行网络通信获取转角信号、车速信号以及倒车等信号并故障诊断。 本文着重讨论通过CAN实现智能前照灯控制器的刷新功能设计。
2.2 软件内存映射及跳转
2.2.1 内存映射
智能前照灯软件设计中, 控制器软件分为两个独立的软件, 即为两个独立的软件部分, 主要为bootloader software启动加载软件 (内含启动加载和刷新功能, 一般简称bootloader软件) 和applicationsoftware应用软件 (也即应用软件 , 简称application软件)。 两个软件之间相互独立, 从软件内容和功能方面来说, bootloader软件主要用于刷新的主流程以及系统总体的启动加载功能, 而application软件侧重于智能前照灯的策略和系统运行, 以及故障诊断和刷新前准备、 刷新后系统恢复工作。 从刷新服务来说, bootloader软件主要使用刷新相关及最为紧要的下载服务, 而应用软件服务大多为准备工作服务。 从CAN驱动以及CAN诊断传输层来说, 两个软件可以共享驱动, 也可以各自设置各自的驱动。
图1为智能前照灯的内存映射 (memory map)及中断跳转 (ISR Jump) 图。 图1中智能前照灯控制器flash内存映射含有两个独立的存储区域, 即bootloader软件区域 (灰色阴影) 和应用软件区域,分别用于存放两个独立的软件。
2.2.2 软件跳转
两个软件主要通过诊断服务进行跳转, 在设计的软件中通过函数指针来进行跳转。 对于智能前照灯的中断来说, 其跳转如图1所示。 Jump_1为appli-cation软件收到诊断仪器命令后跳入bootloader软件进行刷新的跳转。 Jump_2为bootloader软件复位检查效验区后, 当效验成功也即application应用软件正确后, 跳转到application区域运行。 Jump_3为bootload-er软件进行刷新完毕后复位中断的跳转过程。
英飞凌XC800芯片默认中断设置在0x0000后续的地址中, 复位后会先进入bootloader软件的默认中断区域, 这段区域正好在bootloader的软件中; 应用软件如果需要使用中断, 必须把bootloader的中断地址给映射到应用软件中。 中断地址一旦映射完毕,应用软件在调用中断时可以完全在本段内存映射内进行, 形成应用软件策略中断运行的无缝连接。