首 页文档资料下载资料维修视频汽修在线平台
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 汽车技术 > 汽车技术
详解设计智能前照灯的CAN刷新软件
来源:本站整理  作者:佚名  2012-09-30 10:52:40

2.3 application中刷新准备的设计

刷新前的准备工作主要用于刷新的各种数据读取和验证, 安全检查工作和各种条件使能工作。 刷新准备工作流程如图2所示, 主要过程为, 用读取诊断信息服务0x22读取当前软件版本和主要信息; 用开始诊断会话服务0x10切换当前诊断模式到扩展模式; 用故障码设置服务0x85禁止设置DTC以便于刷新; 用通信控制服务0x28禁止当前网络管理及通信信息, 以便于刷新可以获得最大的流量, 以及阻止其他网络信号的干扰, 保证刷新的顺利进行。 之后用软件控制服务进行刷新前的条件检查, 如电源电压、 数据和软件稳定等检查。

 

2.4 启动加载设计

bootloader软件有两大功能: 启动加载跳转功能和刷新功能。

一般启动加载安排在bootloader软件的死循环前面, 用于上电自启, 并检查应用软件是否正确与完备。 如果应用软件效验成功, 则跳入应用软件区域; 否则留在bootloader中, 等待软件刷新。 boot-loader启动加载流程如图3所示。

 

bootloader跳入application软件中主要跳转语句如下, 主要用了函数指针功能: if (temp_checksum== CHECK_CRC_16) ((void (code *) (void)) APP_START_ADD) ()。

 

上述C语句中, CHECK_CRC_16值即为magicword效验值 (magic word效验区的映射见图1), 当计算得到的temp_checksum和magic word保持一致,即 可 跳 入 application 软 件 。 APP_START_ADD 为application入口地址, 在应用软件的内存映射入口处。

 

2.5 bootloader中刷新部分设计

bootloader 中含有刷新主体部分诊断服务的设计。 而application软件含有刷新准备部分的诊断软件设计。

 

bootloader是一个完整的软件, 它用CAN进行刷新, 底层驱动包括CAN驱动的接收和发送部分, 并含有传输层数据处理部分。 如何处理传输层一直是

诊断设计的重点。 本设计中主要采用switch case的分支处理方法来进行传输层的处理, 处理完毕后即可进入诊断服务的通信。 如图4所示, 当收到CAN信息时首先判断信息ID是否为需要ID, 然后对数据进 行 接 收 , 接 收 的 同 时 根 据 ISO 14229 及 ISO15765-2标准对传输层进行处理, 尤其是多帧的处理和管理。

 

对于网络接收的诊断数据, 本文采用了结构体, 用于后续各个诊断服务的正确回复、 否定回复的处理及数据的保存。 所用结构体及解释如下:

 

typedef struct prg_com_tag {

byte service ; //诊断服务

byte msg_len ; //CAN接收信息的长度

byte msg_index ; //多帧信息时, 信息的序号

byte sub_srv ; //诊断服务的下级参数

} prg_com_type。

刷新过程中众多刷新数据需要足够的缓冲来进行, 本设计主要把写入flash的字线放置与XC878的XRAM中的固定位置处, 而后调用flash编程语句进行编程写入, 数据缓冲定义如下述语句: unsignedchar xdata WLBuf [BYTES_PER_WORDLINE] _at_XRAM_BUFFER_ADDR。

 

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:53,906.25000 毫秒