今天是周一,果然大脑放松了两天,回来工作效率都提高了,一上午解决了两个问题,上周五搞半天也没搞定。
第一个就是新板子无法升级的问题,排查了好久也没发现问题所在,进入BOOT区后只会发送00,当时考虑是占用了外部晶振的IO口,但是我们没有使用外部晶振,那两个IO口做普通IO口使用。把电阻取下来后实验仍然不可以,今天排查过程中,对比新旧原理图和新旧板子发现,旧板子的WIFI模组断电电路没有焊接,询问后得知要做低功耗,低功耗下WIFI是开路,需要IO口输出高电平通过转换电路去给WIFI供电,而我的BOOT程序里没有对该IO口配置,查阅芯片手册知,初始化为低电平,故在初始化的时候,对该IO口进行配置为高电平,之后的升级过程正常。
第二个是在紧急升级过程中,由于wifi模组那边有缓存,会导致收到紧急升级指令后,连续多发好多个应答指令,我这边在收到应答指令后只待机等待升级第一帧指令,并没有关闭看门狗,导致了这个过程会复位重启并再次重发紧急升级指令,循环,当然有概率在看门狗未复位之前收到升级的第一帧指令后进行正常升级,但是会浪费资源和时间,故收到紧急升级的应答指令后关闭看门狗,去等待wifi模组发送升级第一帧指令即可。
第一天结束了,坚持住,加油!