kitl协议包简述

英文版参照网址http://blogs.msdn.com/ce_base/archive/2006/06/27/648747.aspx

下面是翻译过来的,可能有错哦,呵呵

KITL概述

KITL——Kernel Independent Transport Layer,CE驱动调试的基本调试协议。KITL提供

1、  传输初始化

2、  数据流连接和断开

3、  数据流包的请求

4、  丢包、重传的处理

5、  给应用程序提供接口

 

首先我们来看看KITL包,了解KITL数据和控制包的区别。这是KITL协议和解决问题的基础知识。

 

KITL

所有KITL包的格式都一样,头部加上数据。头部定义了包的类型和数据块。打开一个KITL头,你会看到

 

1、  协议标示

固定的字符串:EDBG(45 44 42 47)

 

2、  流标示

每种KITL流都有一个的字节来保存。有4中预先定义好的流,其他位置保留给应用使用。

0x0:调试消息

0x1:目标控制

0x2:内核调试器

0xff:协议管理的控制流

0x3-0xfe:保留给应用程序使用

 

当一个流通过KITLRegisterClient注册后,这些流标示,会从KITl传递给应用程序。应用使用这些ID通过KITLSend和KITLRecv从特定流中,进行数据包的发送和接受。

 

包类型

一个字节来表示包的类型

0x1:设备发送过来的消息

0x2:这帧是NACK

0x4:这帧是ACK

0x8:重设申请号为零

0x10:相应KITL的控制消息

 

包申请号

定义了一个字节,存放了包申请号,从0到255轮转。当255的包申请号发送了,那么下一个包申请号就会恢复到数字0。桌面和设备都有自己的申请号,那就允许异步数据传输,一边可以比另一边发送更多的数据包。

 

数据命令

KTIL真正的数据,是紧随着头部描述。大量的原始数据依赖以下命令

0-4:现在不使用,保留的

0x5:设备reset

0x6:服务设置

0x7:服务数据

0x8:内核调试暂停

0x9:传输设置

0xa:时间包

 

现在就可以根据这些格式,来看看KITL包的内容。

1、  KITL传输设置包:

当KITL启动后,从设备发送过来的第一个包。它发送到特定端口(port 981),通过subnet广播出地址。PB会不时的侦探设备的响应,通过host的配置消息包发送回应。接着设备和桌面通过打开一个KITL通道来建立联系,之后的通讯过程都是通过这个通道来进行。如下图绿色标示的,是设备通过981的端口发送传输设置包的内容。网络包包括了设备名字(这里是CEPC37480)、设备IP(9D 38 B2 12)和设备UDP端口(0x3D5)等内容。桌面通过这些信息,来打开通道。

00000020                           45 44 42 47 FF 00          EDBG..

00000030  00 09 20 00 30 00 43 45 50 43 33 37 34 38 30 00 ....0.CEPC37480.

00000040  00 00 00 00 00 00 9D 38 B2 12 00 11 95 28 92 68 .......8.....(.h

00000050  03 D5                                           ..             

 

2、  KITL服务设置包:

设备和桌面都会发送这样的包。当一个服务(KITL流)开始时,设备和桌面都需要应答对方的服务设置包,下面是设备发送过来的一个DBGMSG的服务包。KITL头用绿色标示,其他是设置的数据。这是从设备(0x01)发送过来的一个控制包(协议标示后面是0xFF),使用申请号0x00(流还没连接),包的命令是0x06(服务设置)。

00000020                           45 44 42 47 FF 01           EDBG..

00000030  00 06 01 44 42 47 4D 53 47 00 33 37 34 38 30 00 ...DBGMSG.37480.

00000040  00 00 00 00 00 00 9D 00 10 00                   ..........

 

3、  服务设置包的应答:

下面是一个服务设置包的应答包,头部标示为绿色。这里留意包类型变成了0x10(控制包的响应),其他部分和服务设置包一样。这个包是桌面发送给设备的,当设备接受到后,DBGMSG的流就连接起来了。这时,设备的应用程序可以开始发送调试信息给桌面。注意,这个流要在桌面发送相似的设置包后,得到响应了,才是完全连接好。

00000020                           45 44 42 47 FF 10           EDBG..

00000030  00 06 01 44 42 47 4D 53 47 00 B8 A9 FF 02 A0 F9 ...DBGMSG.......

00000040  FF 02 18 6A 4A 45 02 FF 00 00                   ...jJE....  

 

4、  KITL数据包:

下面是一个设备发出的RELFSD包,KITL头用绿色标示,其他部分的数据留给Relsd流解释。这里流ID是0x1,类型是0x01,表示是设备发出的包。申请号是0xA4,包的命令是0x07,表示是服务的数据包。这是由设备的shell.exe发送给桌面的,检查是否设备上有命令需要运行。

00000020                           45 44 42 47 01 01           EDBG..

00000030  A4 07 AA 55 55 AA 04 00 0D 00 FE FF FF FF 01 00 ...UU...........

00000040  00 00 F2 5A A5 0A 1A                            ...Z...        

 

5、  KITL的ACK包:

从桌面发送到设备的。下面包的标示设置为0x01,类型是应答0x04,包申请号是0xA4,0x07是数据包的命令。如果是设备应答桌面的包,类型应该是0x5。如果是桌面应答设备,类型就是0x4.

00000020                   45 44 42 47 01 04                  EDBG..

00000030  A4 07 00 00 00 00 00 00 00 00 00 00             ............ 

 

6、KITL的timer控制包:

大约每2每由桌面发送给设备。当设备在内核调试器中停止运行了,设备内的时间也就停止了。与时间相关的操作也不能工作,包括KITL的逻辑时间。这情况下,用这个包作为标志,重发丢失的包到桌面。

00000020                   45 44 42 47 FF 00                   EDBG..

00000030  00 0A 00 00 00 00 00 00 00 00 00 00             ............

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值