有没有人做过“在一个工程中将另一个工程boot起来?”
时间:10-02
整理:3721RD
点击:
我这里想在一个工程运行过程中,根据命令将另一个新的工程BOOT起来。
我所做的是:
旧工程收到命令后,将已烧写到FLASH中的新工程整个搬运到0x00000000位置,
并在搬运完成后将PC指针指到0x00000000位置,然后开始运行。(这里新工程将
旧工程覆盖)
其中旧工程的搬运函数放在不会被新工程覆盖的内存部分;
结果发现新工程搬运完成,但是PC指针跳转后就运行不对拉。
呜呜呜,拜托各位大侠帮俺看看,这个过程有没有什么问题?可能的问题在哪里?
在线等待,欢迎讨论!
我所做的是:
旧工程收到命令后,将已烧写到FLASH中的新工程整个搬运到0x00000000位置,
并在搬运完成后将PC指针指到0x00000000位置,然后开始运行。(这里新工程将
旧工程覆盖)
其中旧工程的搬运函数放在不会被新工程覆盖的内存部分;
结果发现新工程搬运完成,但是PC指针跳转后就运行不对拉。
呜呜呜,拜托各位大侠帮俺看看,这个过程有没有什么问题?可能的问题在哪里?
在线等待,欢迎讨论!
还有我把旧工程的stack段也放在不会被新工程覆盖的内存。
总之指针跳转后,运行新程序就会有问题。
再调试发现:
仿真状态下,程序会跑飞,观察结果是:新工程搬运完成,指针也指向0x00000000地址,
但是运行新工程程序时跑飞;
但是如果选择CCS, Debug---> Reset CPU 复位一下CPU后,再选择 run,新工程程序就顺利跑起来了。
汗~~,Reset CPU都做了些什么?
欢迎各位探讨,指教! 呜呜呜,怎么没有人回列?