# WCH_DEBUG **Repository Path**: uyami/wch_-debug ## Basic Information - **Project Name**: WCH_DEBUG - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-26 - **Last Updated**: 2025-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 有关WCH的CH32V203调试协议的整理 * 在github有一个RVSWD的细节说明,但与CH32V203有细微的出入,所以详细整理如下 ### 1.WCH的芯片是以 DMI 操作通讯调试. 注1:他不存在IDCODE,也可以用0x0001作为IDCODE? JTAG仿真时序 注2:他内部应该一直以IR=0x11运行 ### 2.数据分析 数据以MSB为第一位 0000000 0 0 00000 |<-----32---->|p|z|P|Z110-1 | adr | w p ???!? 头信息:分为7位地址,1位读写标志,1为校检码,5位未知 数据信息:32位数据,接着是P标志,校检码? 一直为0? 再接着为高阻态1位,接着位P? 一直为0.最后一直为高阻态 adr :DMI 地址 w :操作 高电平为写,低电平为读 p :校检码, 包含地址与读写标志. 第一个校检码 ? :1和0都可以,未知? ! :只能是0,否则错误 p :第二个校检码, 为32位数据的校检码 P :应该是target的返回信息.一直为0? z :调试器的高阻态 110-1 :0-1 为结束标志时序 ### 3.开始标志时序 clk :^^^^^^^__^^__^^__^^... dio :^^^^^66666655554444... io :^^^^^______........... * 注1:第一位开始标志IO的值必须比clk提前几百ns以上.否则会导致DMI操作错误.(开始标志反而比结束标志更重要) * 注2:第一位一般为 addr[6] 的数据,DMI地址一般是0~0x3f ### 4.结束标志时序 clk : ^^__^^__^^^^^^^^ io : ------^__^^^^^^^ * 注1:clk低电平持续一段时间后,io低电平. 然后clk上升沿一段时间后.io高电平 ## 一些命令的时序例子 0010111 1110000 00000000001000110001000000001000 110z110-1 0x17 rp pz0 0010110 0110z0z 00001000000000000000000000000010 0z0z110-1 0x16 rp 0010001 00z0z0z 00000000000000000000001110000010 0z0z110-1 0x11 rp 0010000 0100000 00000000000000000000000000000001 1z0 0010000 0100000 00000000000000000000000000000001 1z0z110-1 ### 5.一些常规问题可以参考 << RISC-V QingKeV2 Microprocessor Debug Manual.pdf >>