我写了一个引导程序A放置于Flash最前端 0x08000000,此程序可以擦除32k以后(0x08008000)的Flash并将新程序复制到该位置,然后跳转到32k处执行,包括了完整ISP流程,设置中断向量及堆栈。
产品后,要给A增加功能,于是写了个B程序(位于32k),利用引导程序A将B复制到32k处,然后跳到执行B;
B程序运行后,擦除0x08000000处的A,然后将新的A'写到此地址;
现在遇到问题是,无论如何,B无法将0x08000000处的A擦除。
但是,用jtag在线调试时,可以将A擦除,并成功将A'更新到A处。 |