【叶帆工作室】2009-2-15
1、简介
WireProtocol协议是上位机MFDeploy或VS2008程序在诊断、部署、调试.Net Micro Framework设备及相关应用程序时的通信协议。该协议与具体的硬件链路无关,目前支持的物理连接有串口、网口、USB等。
该协议为点对点协议,协议中没有设备地址的概念,在同一时间同一物理通道仅能调试一台设备。协议格式分两部分,帧头和负荷(Payload)(一帧命令可以不包含Payload)。
了解该协议和获知通信时的数据,可以非常有效的解决上位机和下位机.Net Micro Framework设备通信问题。
2、通信协议
2.1 帧格式
|
帧头(Header)32 byte |
负荷 | |||||||
|
签名 |
头校验 |
负荷校验 |
命令 |
Seq |
SeqReply |
标志 |
负荷大小 | |
|
8 byte |
4 byte |
4byte |
4byte |
2byte |
2byte |
4byte |
4byte |
N byte |
|
MS…V1 |
Crc32 |
Crc32 |
Cmd |
Seq |
reply |
flag |
size |
Payload |
注:负荷大小可以为0
2.2 通信过程
总超时时间6秒,如果下位机无数据响应,则1秒钟重试一次,共6次。如果下位机有命令反馈,但是帧数据不是期望数据,则重试1次,共2次。
2.3 通信命令
通信命令一共71个,其中1个已经过时、6个已经被注销。这里仅介绍一下和Ping过程相关的几个命令。
|
序号 |
名称 |
值 |
说明 |
|
1 |
c_Monitor_Ping |
0x00000000 |
The payload is empty, this command is used to let the other side know we are here... |
|
2 |
c_Debugging_Execution_Unlock |
0x00020003 |
Unlock the low-level command, for mfg. test programs |
|
3 |
c_Debugging_Execution_QueryCLRCapabilities |
0x00020008 |
Queries capabilities of the CLR. |
2.3.1、Monitor_ Ping
命令:0x00000000帧长:32+8 byte (Ping指令可以没有Payload数据)
|
帧头 |
源 |
标志 |
|
32 byte |
4 byte |
4 byte |
源(source):
|
序号 |
名称 |
值 |
说明 |
|
1 |
c_Ping_Source_TinyCLR |
0x00000000 | |
|
2 |
c_Ping_Source_TinyBooter |
0x00000001 | |
|
3 |
c_Ping_Source_Host |
0x00000002 |
标志(dbg_flags):
|
序号 |
名称 |
值 |
说明 |
|
1 |
c_Ping_DbgFlag_Stop |
0x00000001 |
2.3.2、Debugging_ Execution_Unlock
命令:0x00020003帧长:32+256 byte
|
帧头 |
命令 |
哈希值 |
|
32 byte |
128 byte |
128 byte |
命令和哈希值如下:
private readonly byte[] m_data =
{
67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 50, 48, 48, 51, 13, 10,
77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 13, 10,
49, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 87, 97, 121, 13,
10, 82, 101, 100, 109, 111, 110, 100, 44, 32, 87, 65, 13, 10, 57, 56,
48, 53, 50, 45, 54, 51, 57, 57, 13, 10, 85, 46, 83, 46, 65, 46,
13, 10, 65, 108, 108, 32, 114, 105, 103, 104, 116, 115, 32, 114, 101, 115,
101, 114, 118, 101, 100, 46, 13, 10, 77, 73, 67, 82, 79, 83, 79, 70,
84, 32, 67, 79, 78, 70, 73, 68, 69, 78, 84, 73, 65, 76, 13, 10,
55, 231, 64, 0, 118, 157, 50, 129, 173, 196, 117, 75, 87, 255, 238, 223,
181, 114, 130, 29, 130, 170, 89, 70, 194, 108, 71, 230, 192, 61, 9, 29,
216, 23, 196, 204, 21, 89, 242, 196, 143, 255, 49, 65, 179, 224, 237, 213,
15, 250, 92, 181, 77, 10, 200, 21, 219, 202, 181, 127, 64, 172, 101, 87,
166, 35, 162, 28, 70, 172, 138, 40, 35, 215, 207, 160, 195, 119, 187, 95,
239, 213, 127, 201, 46, 15, 60, 225, 19, 252, 227, 17, 211, 80, 209, 52,
74, 122, 115, 2, 144, 20, 153, 241, 244, 57, 139, 10, 57, 65, 248, 204,
149, 252, 17, 159, 244, 11, 186, 176, 59, 187, 167, 107, 83, 163, 62, 122
};
命令对应的ASCII为:
Copyright 2003
Microsoft Corp
1 Microsoft Way
Redmond, WA
98052-6399
U.S.A.
All rights reserved.
MICROSOFT CONFIDENTIAL
7?@
2.3.3、Debugging_ Execution_QueryCLRCapabilities
命令:0x00020008帧长:32+n byte
|
帧头 |
标志(4 byte) |
数据 | |||||
|
32 byte |
0x00000001 |
capsFlags :4byte | |||||
|
0x00000002 |
Width:4byte |
Height:4byte |
bpp:4byte | ||||
|
0x00000003 |
buildDate:20byte |
compilerVersion:4byte | |||||
|
0x00000004 |
minutesRemaining:4byte | ||||||
|
0x00000005 |
MfReleaseInfo:64 |
OEM_MODEL_SKU |
OEM_SERIAL_NUMBERS | ||||
|
0x00000006 |
MfReleaseInfo:64 |
Version:8 | |||||
|
0x00000007 |
MfReleaseInfo:64 | ||||||
MfReleaseInfo:
|
MfReleaseInfo | ||||
|
Version |
保留 | |||
|
主版本 |
次版本 |
编译 |
修订 | |
|
2 byte |
2byte |
2byte |
2byte |
56byte |
OEM_MODEL_SKU:
|
OEM_MODEL_SKU | ||
|
OEM |
Model |
SKU |
|
1 byte |
1byte |
2 byte |
OEM_SERIAL_NUMBERS:
|
OEM_SERIAL_NUMBERS | |
|
module_serial_number |
system_serial_number |
|
32 byte |
16 byte |
标志:
|
序号 |
名称 |
值 |
说明 |
|
1 |
c_CapabilityFlags |
0x00000001 |
标志 |
|
2 |
c_CapabilityLCD |
0x00000002 |
LCD的参数 |
|
3 |
c_CapabilityVersion |
0x00000003 |
软件版本 |
|
4 |
c_CapabilityEvaluationVersion |
0x00000004 |
剩余可运行分钟数 |
|
5 |
c_HalSystemInfo |
0x00000005 |
硬件系统信息 |
|
6 |
c_ClrInfo |
0x00000006 |
CLR信息 |
|
7 |
c_SolutionReleaseInfo |
0x00000007 |
平台发布信息 |
c_CapabilityFlags的含义:
|
序号 |
名称 |
值 |
说明 |
|
1 |
c_CapabilityFlags_FloatingPoint |
0x00000001 | |
|
2 |
c_CapabilityFlags_SourceLevelDebugging |
0x00000002 | |
|
3 |
c_CapabilityFlags_AppDomains |
0x00000004 | |
|
4 |
c_CapabilityFlags_ExceptionFilters |
0x00000008 | |
|
5 |
c_CapabilityFlags_IncrementalDeployment |
0x00000010 | |
|
6 |
c_CapabilityFlags_SoftReboot |
0x00000020 | |
|
7 |
c_CapabilityFlags_Profiling |
0x00000040 | |
|
8 |
c_CapabilityFlags_Profiling_Allocations |
0x00000080 | |
|
9 |
c_CapabilityFlags |
本文详细介绍了WireProtocol协议,它是上位机程序与.NetMicroFramework设备通信的基础。文章涵盖了帧格式、通信过程及关键命令如Monitor_Ping、Debugging_Execution_Unlock和QueryCLRCapabilities等内容。
487

被折叠的 条评论
为什么被折叠?



