关于STM32F100远程升级

2019-03-23 20:31发布

如题,操作如下:板子上有一块片外FLASH,通过串口把程序代码发到单片机烧入片外FLASH,然后单片机自动重启,把片外FLASH的程序更新到单片机上。应该怎么实现? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
SF-BVC
2019-03-25 02:31

我现在的板子是从用户区启动的,我想把内部的用户区分成两个部份,前面16K是一个BOOT区,剩下的是一个应用区。BOOT区会检查是否要更新应用区程序,如果需要则更新,否则运行应用区程序。我昨天看了一段USB更新的代码。仿了一下好像不行。

typedef void (*pFunction)(void);

pFunction Jump_To_Application;

u32 JumpAddress;

int main(void)

{

  if (((*(vu32*)0x8003000) & 0x2FFF0000 ) == 0x20000000)

  { /* Jump to user application */

   JumpAddress = *(vu32*) (ApplicationAddress + 4);

   Jump_To_Application = (pFunction) JumpAddress;

    /* Initialize user application's Stack Pointer */

    __MSR_MSP(*(vu32*) ApplicationAddress);

   Jump_To_Application();

  }

}

这一块好像是跳转过去的。应用区好像是分配在0x08003000。我昨天用这一段下载到0x08003C00,然后把另一个之前用的程序下载到0x08003C00,程序运行到__MSR_MSP这个函数的时候就死在那里了,应该是堆栈之类的出问题,回不去了。

[ 本帖最后由 SF-BVC 于 2011-4-22 15:11 编辑 ]

一周热门 更多>