DLL库我们一般用VS工具来生成,首先选择生成DLL例程模板。和其他安全会话一样,主要分为3部分;首先上位机获取DLL库的权限,然后向下位机发送获取当前权限下的种子(SEED)请求,进行上位机SEED值的计算比较,然后向下位机发送KEY值来获取权限。

//*****************************************************************************
/// @fn   DllMain ... Windows DLL entrance point
//*****************************************************************************
BOOL WINAPI DllMain (HANDLE hModule,  DWORD  fdwReason, LPVOID lpReserved)
{
   switch (fdwReason) {
      case DLL_PROCESS_ATTACH: setMyPrivilege(); break;
      case DLL_PROCESS_DETACH: break;
      default:                 break;
   } // switch

return TRUE;
}

XCP标定安全会话,一般会加密四种工况,分别为标定页切换(XcpSkPrivCalPag)、DAQ测量(XcpSkPrivDaq)、STIM旁路(XcpSkPrivStim)和PGM刷写(XcpSkPrivPgm)。根据下位机底层代码的实现情况,使能这几种模式。

static void setMyPrivilege()
{
   MyPrivilege = 0;
   // to do:   comment out unsupported privileges
   // example: MyPrivilege |= XcpSkPrivCalPag; -> //MyPrivilege |= XcpSkPrivCalPag;
   MyPrivilege |= XcpSkPrivCalPag;
   MyPrivilege |= XcpSkPrivDaq;
   MyPrivilege |= XcpSkPrivStim;
   MyPrivilege |= XcpSkPrivPgm;
}

// privileges
const BYTE            XcpSkPrivCalPag                     = 0x01; // Calibration & Page Mngmnt privilege
const BYTE            XcpSkPrivDaq                        = 0x04; // Acquisition privilege
const BYTE            XcpSkPrivStim                       = 0x08; // Stimulation privilege
const BYTE            XcpSkPrivPgm                        = 0x10; // Programming privilege

获取可用权限

EXTERN_C __declspec(dllexport) TXcpSkExtFncRet __cdecl XCP_GetAvailablePrivileges(BYTE *privilege)
{
   // check input parameter

// set available privileges
}

然后发送获取种子并进行比较,并返回KEY值:

EXTERN_C __declspec(dllexport) TXcpSkExtFncRet __cdecl XCP_ComputeKeyFromSeed(BYTE privilege, 
                                                       BYTE byteLenSeed, BYTE *seed,
                                                       BYTE *byteLenKey, BYTE *key)
{
   // check input parameter
  // unsupported privilege request
  // check key length

// compute key for respective privilege
}

注意:这两个函数是CANape给的标准接口函数

EXTERN_C __declspec(dllexport) TXcpSkExtFncRet __cdecl XCP_GetAvailablePrivileges(BYTE *privilege)

EXTERN_C __declspec(dllexport) TXcpSkExtFncRet __cdecl XCP_ComputeKeyFromSeed(BYTE privilege, 
                                                       BYTE byteLenSeed, BYTE *seed,
                                                       BYTE *byteLenKey, BYTE *key)

关于XCP标定CANape的界面安全会话DLL库相关推荐

  1. 创建XCP的CanApe工程

    创建XCP的CanApe工程 ECU在标定的时候需要用到XCP模块去标定,本文简单整理了用CanApe搭建一个XCP标定工程.一般情况下我们是使用A2L文件来当作Database,所以建立一个新的工程 ...

  2. 融云 IM SDK 集成 — 刷新会话界面和会话列表界面

    融云 IM SDK 集成 - 刷新会话界面和会话列表界面 最近集成融云 IMkit 发现, 融云 IMkit 提供的 ConversationListFragment 和 ConversationFr ...

  3. php融云开源sdk使用im,融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

    融云 IM SDK 集成 --- 刷新会话界面和会话列表界面 最近集成融云 IMkit 发现, 融云 IMkit 提供的 ConversationListFragment 和 Conversation ...

  4. android腾讯云im刷新会话列表,融云 IM SDK 集成 --- 刷新会话界面和会话列表界面...

    融云 IM SDK 集成 --- 刷新会话界面和会话列表界面 最近集成融云 IMkit 发现, 融云 IMkit 提供的 ConversationListFragment 和 Conversation ...

  5. 标定协议之XCP标定协议介绍

    作者 | WenDao_Engineer 微信公众号 | 闻道工程师之家 在<标定协议基础知识介绍>一文中我们介绍了常用的标定协议有CCP和XCP两种,在前面CCP标定协议系列文章对CCP ...

  6. 04 Xcp 标定过程介绍

    要更改XCP Slave中的参数,XCP Master必须将参数的位置以及值本身发送给Slave. XCP总是用5个字节定义地址:4个字节用于实际地址,1个字节用于地址扩展.基于CAN传输,XCP消息 ...

  7. CCP/XCP标定协议解析

    这两周在验证移植到ECU的XCP模块是否正常运转,所以干脆开个专题,说说这个汽车业内常用的标定协议. 背景概述 众所周知,一辆汽车内部会有许许多多的ECU(Electronic Control Uni ...

  8. 【XCP学习】CCP/XCP标定协议解析

    背景概述 众所周知,一辆汽车内部会有许许多多的ECU(Electronic Control Unit),通过CAN, LIN, Gateway 等互相连接通讯,分别或者一起协作控制不同的部件.因而标定 ...

  9. 融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

    最近集成融云 IMkit 发现, 融云 IMkit 提供的 ConversationListFragment 和 ConversationFragment 都没有提供刷新方法. 我们有个需求是, 使用 ...

  10. Qt编写数据可视化大屏界面电子看板12-数据库采集

    一.前言 数据采集是整个数据可视化大屏界面电子看板系统核心功能,没有数据源,这仅仅是个玩具UI,没啥用,当然默认做了定时器模拟数据,产生随机数据,这个可以直接配置文件修改来选择采用何种数据采集方法,总 ...

最新文章

  1. 嵌入式开发板老化过程中显示温度与负载的关系脚本的用法
  2. 全代码实现ios-4
  3. Android USB Host与HID通讯
  4. mariadb mysql 配置文件_MariaDB/MySQL配置文件my.cnf解读
  5. 4-1-getOutputStream()或getWriter()发送响应消息体及分析为什么不能同时使用
  6. 蓝桥杯 BASIC-17 基础练习 矩阵乘法
  7. 【更新汇总】FastReport系列更新|附下载
  8. 使用Prometheus监控kubernetes集群
  9. 【重点】LeetCode 124. Binary Tree Maximum Path Sum
  10. ssm三个框架分别用来干什么_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
  11. 【Springboot项目】电信知识库系统
  12. 数学家们是怎么玩趣味拼图游戏的?
  13. VIM复制到系统剪切板
  14. WSL嵌入式开发系列教程 1 —— 安装指南
  15. swing中通过.class文件(把.java都删除)打包成jar文件,使用皮肤包遇到的问题。
  16. 实例011阳阳买苹果 阳阳买苹果,每伞苹果0.8元,阳阳第一天买两个苹果,第二天开始每天买前一天的两倍, 直到购买的苹果个数为不超过100的最大值, 编程求阳阳每天平均花多少钱?
  17. 浙大版《C语言程序设计实验与习题指导(第4版)》题目集 实验10-1 圆形体体积计算器
  18. 常用数据库jdbc连接池的配置(在spring中的配置)
  19. android登陆界面左右两种登陆布局,Android UI组件----用相对布局RelativeLayout做一个登陆界面...
  20. 上海国家会计学院(SNAI)亚利桑那州立大学(ASU)合作办学EMBA项目打造兼具金融财务和服务管理专长的领袖人才!

热门文章

  1. 游戏设计的第一步:设计体验
  2. Wke阅读日记1--简介
  3. unity的代码优化
  4. 软考程序员-C专题(2)
  5. 它!5 年代替狂卷的 CNN!
  6. 12864与24C04的原理和使用方法——以电子密码锁为例(上篇)
  7. 定时重启群晖 SurveillanceStation NVR服务
  8. html炫酷动态时钟代码,HTML5动态时钟代码
  9. 软件测试行业前景,人才稀缺
  10. vfp mysql教程_VFP基础教程 5.5 编辑框控件(editbox)