ISO-14229 之 请求下载 34

  • 请求下载 

#1  请求下载SID  

#2  数据格式标识符

高效半字节指定“compressionMethod(压缩法)”,
低效半字节指定“encryptingMethod(加密法)”。
字节值0x00不得使用压缩法或加密法。0x00以外的字节值由车辆制造商规定。

#3  地址和长度标识符

bit 3 - 0:参数memoryAddress的长度(Bytes)
bit 7 - 4:参数memorySize的长度(Bytes)

#4~ #(m-1)+4   开始下载数据的起始地址

#n-(k-1) ~#n  内存大小   这个参数用来把传输数据和内存进行对比,这种操作增加了下载数据的安全性

eg. 

发送:10 0B 34 00 44 00 00 00 00(起始地址) 00 00 04 98(内存大小) 数据有0x0498 = 1176字节

  • 肯定响应

#1  响应SID

#2 长度格式标识符 

bit 7 - 4:参数maxNumberOfBlockLength的长度(Bytes)的长度
bit 3 - 0:保留位,设为0

#3 ~#n 一个块的带载能力

这个参数用来通知客户端在每次数据传输请求中包含了多少字节的数据(包括ID和 块号)。

响应 

04 74 20 00 82(每次 数据传输包能接收130个字节)

  • 否定响应

参考代码

void Service34Handle(uint8_t type, uint16_t length, uint8_t *messageData)
{
    g_NRC = PR;
    if(length == 11)
    {
        uint8_t dataFormat = *(MessageData + 1);
        uint8_t addLength = *(MessageData + 2);
        if(dataFormat == 0 && addLength == 0x44)
        {
            ProgramAddress = *((uint32_t*)(messageData + 3));
            ProgramLength = *((uint32_t*)(messageData + 7));
            if(MemValidRange( ProgramAddress,ProgramLength) == 1) //Memary can use
            {
                if(g_UpdateStep == DOWNLOAD_FLASH_DRIVER_34)
                {
                    DiagnosticBuffTX[0] = (*(MessageData + 1)) + 0x40; //0x74
                    DiagnosticBuffTX[1] = 0x20;
                    DiagnosticBuffTX[2] = (uint8_t)(MAX_SIZE >> 8); // can receive max 
                    DiagnosticBuffTX[3] = (uint8_t)(MAX_SIZE);
                    ResponseLength = 4;
                    g_BlockIndex = 1; // the first blck is 1
                    ProgramLengthComplete = 0;
                    g_UpdateStep = DOWNLOAD_FLASH_DRIVER_36; // next step
                }
                else
                {
                    g_NRC = RSE; //request sequence error
                }
            }
       }
       else
       {
            g_NRC = IMLOIF; //incorrect message length or invalid format
        }
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值