由于正常运行时的程序不可能是单单bootload程序,而是运行在ucos 下的包含bootload的完整的程序,现将1M容量的FLASH分成3个区域包含bootload的程序储存在A区域0x08000000-0x08040000,运行IAP程序的区域B区域0x08040000-0x080A0000,暂存IAP程序的区域B区域0x080A0000-0x08100000,当需要进行IAP升级的时候,运行有bootload的程序就通过串口或网口接收升级的.bin文件暂存在flash的C区域,接受完毕后校验程序没有问题后,再将其复制到运行区B,负载完成后自动跳转进B区域运行。
现在在UCOS中运行IAP后就死机,怀疑是否因为IAP只是UCOS中的一个任务,运行时被其他任务中断,不能完成跳转,是否需要关闭其他任务,怎么关闭?
可以肯定接收程序正确,复制程序正确,将bootload程序换成不含UCOS的就可以正常跳转运行IAP,只要换回UCOS就死机。
|