一种简易的UDS$27解锁方式,使用capl脚本去实行自动化。
利用CANoe自己的Diagnostic去诊断,返回。
首先:声明2701 2702
拿到种子后,使用diagGenerateKeyFromSeed函数去调用工程里面的DLL文件去计算。
再将计算好的密钥发送到ECU。
void SecurityAccess_Lv1()
{
diagRequest DCM.request Seed_1; // 27 01
diagRequest DCM.request Key_2; // 27 02
byte SeedArray[4]; // Actual Seed length
byte KeyArray[4]; // Actual key length
dword KeyActualSize = 4; // Actual key length
int i;
diagSendRequest(Seed_1);// send 27 01 request
for(i=0;i<elcount(SeedArray);i++)
{
SeedArray[i]=diagGetRespPrimitiveByte(Seed_1,i+2);
// write("%d",SeedArray[i]);
}
if(0==diagGenerateKeyFromSeed("ecuQualifier",SeedArray,elcount(SeedArray),1,"","",KeyArray,elcount(KeyArray),KeyActualSize))
{
diagSetParameterRaw(Key_2,"SecurityKey",KeyArray,elcount(KeyArray));
// for(i=0;i<elcount(KeyArray);i++)
// {
// write("%d",KeyArray[i]);
// }
diagSendRequest(Key_2); // send key to ECU
}
}
这种方式简单,可以快速的去操作。
如果想要做一个通用库,不一定适用。
标签:UDS,27,Lv1,request,CAPL,length,Seed,Actual From: https://blog.csdn.net/YOUYOU_teacher/article/details/137027761