Thread 中讨论的其他器件:MSPM0G3507、 UNIFLASH、 SYSCONFIG
工具/软件:
您好、
我修改了 MSPM0G3107的 secondary_bsl_can_LP_MSPM0G3507_nortos_ticlang 演示。 工作正常。 但是、从次级引导加载程序来看、如何将 PC 更改为应用程序代码的起始地址、即0x00000000。
我已经尝试使用以下代码片段、将应用的起始地址馈 送至 www.ti.com/.../slaae88中提到的地址。 但是,它是不起作用的。
/*! 使用其复位矢量地址*/跳转到应用程序
#define TI_MSPBoot_APPMGR_JUMPTOAPP (){(void (*)())(*(uint32_t *)(APP_AREA_START_ADDR + 4))
();}
我还尝试了 boot_application_LP_MSPM0G3507_nortos_ticlang 演示中提到的以下 API。 但是,它是不起作用的。
静态 void start_app (uint32_t *vector_table)
{
/*以下代码将 SP 重置为中指定的值
*提供的矢量表,然后调用重置处理程序。
*
*根据 ARM Cortex 规范:
*
* ARM Cortex VTOR
*
*
*偏移矢量
*
* 0x00000000 ++++++++++++++++++++++++++++++++++++++
*|初始 SP 值|
* 0x00000004 ++++++++++++++++++++++++++++++++++++++
*|重置|
* 0x00000008 ++++++++++++++++++++++++++++++++++++
*| NMI |
*++++++++++++++++++++++++++++++++++++++++
*|。 |
*|。 |
*|。 |
*
**/
/*使用 vector_table[0]中存储的值重置 SP */
_asm volatile (
"LDR R3、[%[vectab]、#0x0]\n"
"MOV SP、R3 \n":[vectab]"r"(vector_table);
/*将重置向量设置为新向量表(将重置为0x000)*/
SCB->VTOR =(uint32_t) vector_table;
/*跳转到 vector_table[1]处的复位处理程序地址*/
((void (*)(void))(*(vector_table + 1)))();
}
谢谢你