【AUTOSAR】Bootloader说明(四)---- 升级主函数

    1. 刷新主函数uds_refresh_main()

当执行完初始化后,DSP进入刷新主函数。

主函数是一个无穷循环函数,完成诊断消息的接收、处理,诊断状态的刷新等。

函数原型

void bblk_normal_isr(void)

函数作用

完成看门狗服务,清楚定时器中断标志位

函数参数

函数说明

中断服务程序

25函数uds_refresh_main()说明

【AUTOSAR】Bootloader说明(四)---- 升级主函数_第1张图片

 

4  刷新主程序流程

      1. 抽取诊断消息及处理

由网络层函数nt_pre_process() 实现从CAN模块邮箱接收CAN消息(存储到uds_rx_data[8]中)并解析(nt_received_frame())。当接收到有效的诊断消息时(有效指CAN ID正确并符合15765-2规范),nt_main()将剥离出诊断消息数据存储在缓冲区(nt_buffer[256+1](TBD))中,并调用诊断应用层诊断命令处理接口(uds_request_handler())处理。细节见4.9.2

uds_cmd_process()将查找服务支持数组(uds_cmd[]),根据安全状态调用相应的处理函数。如果有响应消息,则将处理结果拷贝到缓冲区(nt_buffer[256+1](TBD))中。

由于CAN总线可能出现错误,在nt_pre_process()中将检查CAN模块

nt_prepocess()还完成将调用网络层函数nt_post_pocess(),完成网络层状态切换及将缓冲区(nt_buffer[256+1](TBD))中的数据发送出去。

【AUTOSAR】Bootloader说明(四)---- 升级主函数_第2张图片

 

5  网络层CAN消息处理流程

      1. 诊断状态刷新
      2. 程序刷新

诊断工具通过一系列的诊断命令组合实现程序的刷新。

【AUTOSAR】Bootloader说明(四)---- 升级主函数_第3张图片

 

6 程序刷新流程

你可能感兴趣的:(AUTOSAR,嵌入式硬件,汽车,linux,bootloader)