最近在做刷写相关的测试,此篇内容的灵感来源于我对编程会话的好奇,一直以来我都对APP和Bootloader的认知都不太清晰,网上的资料都比较抽象没能理解(也可能是我自己的问题)。比如APP中有01,02,03三种会话模式,Bootlaoder中也有三种,那他们的异同是什么呢?曾经我认为APP和BOOT是相互独立的,他们属于两个平行世界,但随着深入的了解,我发现好像不是这样,02编程会话就是他们之间的虫洞,但如果APP的$1002是进入BOOT,那BOOT的$1002又是干什么的呢?这个问题困扰了我很久,直到我看到下面这张图:
原来APP的编程会话确实可以进入BOOT只是比我当时的设想要复杂一些,那一个新的问题又出现了:从图中可以看出$1002是让软件进行复位,那$1103同样也是让软件进行复位他们二者的区别是什么呢?
相信大家都比我聪明,先让大家思考1分钟。
不卖关子,直接揭晓答案:$1002要比$1103多一个外部刷新请求,$1103复位完是直接判断应用程序是否有效。 $1002的目的就是为了请求Bootloader刷写,而$1103只是单纯复位。二者的出发点不同,只是实现路劲有些许相似。