一、读取Codeflash数据
芯片内部程序是有加密的,不支持外部工具直接读取,因此只能通过内部接口读取,
而ISP烧录器工具在烧录时,默认会擦除8k的数据,因此只能读到8k以后的codeflash部分:
方式:烧录一份不超过8k的程序,烧录器烧录时不能勾选清空codeflash,保留8k以后的原固件数据,
程序主体可写:
int main()
{SetSysClock(CLK_SOURCE_PLL_60MHz);/* 配置串口调试 */DebugInit();//448k按1k为单位,依次读取通过串口调试打印出来for(uint16_t i=8;i<=448;i++){printf("第%dK:\n",i);FLASH_ROM_READ(i*1024, TestBuf, 1024);for(uint16_t a=0;a<1024;a++){printf("%02X ",TestBuf[a]);}printf("\n\n");}
}
通过这种方式,可将8k之后的原固件数据通过调试打印出来进行比对。
二、读取Dataflash数据
1、打开ISP烧录工具,安装链接:https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html
2、控制芯片进入Bootloader模式,默认boot引脚为PB22,在芯片上电前通过PB22接低电平,再给芯片供电进入,
如若PB22无效果,可能BOOT引脚被更改为了PB11引脚,PB11引脚与PB22相反,需在芯片上电前接高电平,再给芯片供电进入BOOT模式。
3、数据读取可以是USB也可以是串口,两种方式读取都必须在BOOT模式下进行
4、确认进入BOOT后,点击工具“功能”选项,并选择编辑DataFlash
5、最后点击读取数据即可