主题中讨论的其他器件:TM4C123
您好!
我正在尝试使用 TivaWare 引导加载程序代码来实现 CAN 引导加载程序。 到目前为止、我成功地通过 CAN 将应用刷写并执行到 TM4C、但无法返回到引导加载程序。 更准确地说、我可以使用 SVCall 返回到引导加载程序(即更新处理程序)、但"ProcessorInit"函数中的某个位置失败、导致程序跳转到 FaultISR。
//从 boot_demo.c 复制的函数 void JumpToBootLoader (void) { HWREG (NVIC_DIS0)= 0xffffffff; HWREG (NVIC_DIS1)= 0xffffffff; (*(void (*)(void))(*(uint32_t *) 0x2C))(); }
//从 bl_config.h 定义 #define APP_START_ADDRESS 0x1000 #define VTABLE _START_ADDRESS 0x1000
//链接器脚本
#define APP_BASE 0x00001000
#define RAM_BASE 0x20000000
MEMORY
{
闪存(RX):origin = APP_BASE,length = 0x3F000
SRAM (rwx):origin = RAM_base,length = 0x00008000
}
SECTIONS
{
.intvecs:> app_base
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
.vtable:> RAM_base
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
}
上面、我提供了代码部分、我认为这些部分是导致此问题的最大可能。 我正在运行的应用程序只不过是让 LED 闪烁几次、而不是跳回引导加载程序。 配置通常是正确的吗? 我是否可以使用我的应用程序之一覆盖引导加载程序矢量表(在 SRAM 中)?
如果有任何帮助,将不胜感激。
此致、
约苏阿