Thread 中讨论的其他器件: UCD3138、 UCD3138128
工具/软件:
尊敬的 Sirs:
我有疑问:由于 CRPS2.0要求、我需要开发引导加载程序。 目前、固件下载和闪存写入操作正常运行、应用程序(APP)可以独立运行。 但是、引导加载程序会禁用中断并跳转到 APP (位于闪存分区0x2000-0xFFFF、而引导加载程序占用0x0000-0x1FFF)后、应用程序将无法正常工作。 在将控制权移交给应用程序之前、引导加载程序应执行哪些关键步骤?
引导加载的代码如下所示:
void main()
{
MiscAnalogRegs.CLKTRIM.bit.HFO_LN_FILTER_EN = 0;
read_dflash_modelName_message();
read_dflash_upload_message();
Volatile Uint32 check_sum=*(volatile Uint32 *) 0x0000fffc;
if ((BootLoaderStructRam.UpdateMode==0)&&(check_sum==(calculate_checksum (0、0xfffc))))
{
JumpToApp (FLASHPROGRAMBASE);//0x2000
}
暴露
{
Firmwares Update_Handler ();
}
}
typedef void (* AppEntry)(void);
void JumpToApp (Uint32 app_address)
{
disable_interrupt ();
disable_fast_interrupt ();
AppEntry app_entry =(AppEntry)(*(volatile uint32_t *) app_address);
app_entry();
}