繁体   English   中英

如何在引导程序中跳转到我的应用程序地址

[英]How to jump to my application address in bootloader

我有自己的引导加载程序代码,并且必须编写一个跳转到用户应用程序的函数,并且有两种方法可以实现,一种在汇编中,另一种在C中,如下所示:

void JumpToUserApplication( unsigned int userSP,  unsigned int userStartup)
{
  volatile  unsigned int avoid_optimization;
  avoid_optimization = userSP;       //In order to avoid optimization issue when -Os
  avoid_optimization = userStartup;  //In order to avoid optimization issue when -Os

    // set up stack pointer
  __asm("msr msp, r0");
  __asm("msr psp, r0");

  // Jump to PC (r1)
  __asm("mov pc, r1");
}

void jumpToApplication(void)
{
     void (*fptr)(void);
     fptr = (void (*)(void))0x00002000;
     fptr();
     //__asm__("JUMP #0x00000800H");
}

我的用户应用程序将从地址20000开始。使用第一个和第二个的概念是什么? 必须使用哪个,哪个更好?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM