Как перейти на мой адрес приложения в загрузчике - PullRequest
0 голосов
/ 27 июня 2018

У меня есть код загрузчика, и мне нужно написать функцию для перехода к пользовательскому приложению, и у меня есть два способа сделать это, один в сборке, а другой в 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. Каковы концепции использования первого и второго? Какой из них нужно использовать, а какой лучше? Заранее спасибо.

...