请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2650STK 工具/软件:TI-RTOS
您好!
我正在开发一个定制引导加载程序、该引导加载程序将通过无线方式接收应用程序并将其写入闪存。
引导加载程序和应用程序都将驻留在闪存中。
我的问题是、虽然我可以通过引导加载程序成功引导到应用程序中、但如果我在引导加载程序中进行以下函数调用、我无法成功引导到应用程序中:
/*启动内核。 * BIOS_start();
作为参考、这是我用于从引导加载程序跳转到应用程序的函数:
void jumpToProgramEntry (uint32_t prgEntry){
#ifdef __IAR_systems_ICC__
prgEntry +=4;
uint32_t *项=(uint32_t *)&prgEntry;
_asm volatile (“LDR R2,[%0]\n\t”:“R”(条目));
asm (" LDR.W R2、[R2]");
//重置堆栈指针,
asm (" LDR SP、[R0、#0x0]");
asm (" BX R2 ");
#Elif defined (_TI_Compiler_version__)
HWREG (NVIC_vtable)= prgEntry;
Hwi_disable();
静态 uint32_t temp;
temp = prgEntry;
//重置堆栈指针,
温度+=4;
asm (" LDR SP、[R0、#0x0]");
((((void (*.)(void))(*.uint32_t*)temp))))))));
#endif
}
因此,我想知道是否有任何解决方法,或者至少了解 BIOS_start()的作用,它不允许我成功跳转到我的应用程序。
谢谢、
Kevin