CH554(新版)开发板的例程中有host例程,和Android设备之间是启动AOA模式进行通信。为了和Android设备之间建立ADB连接,想着改一下例程,不启动AOA模式,直接用USB通信,根据ADB协议发送数据包,期望与设备建立ADB连接。但过程中遇到了一些问题。
首先说一下,我对ADB连接的理解如下(不对的地方还请各位指正):
1. 连接USB,主机发送CNXN连接请求到手机,即host->Android(ADB_CNXN);
2. 手机发送AUTH认证消息(20字节随机数字)给主机,即 Android ->host (ADB_AUTH_TOKEN);
3. PC使用私钥对这个消息(20字节随机数字)签名然后发送给手机,即host ->Android(ADB_AUTH_SIGNATURE );
4. 手机使用公钥验证签名,如果成功,开始下一步通讯,否则再发送AUTH认证(20字节随机数字)给主机,即 Android -> host (ADB_AUTH_TOKEN);
5. PC将公钥发送给手机,即host -> Android (ADB_AUTH_RSAPUBLICKEY );
6. 手机弹出认证框,用户选择是否加入信任列表