侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

lpc54608双boot跳转

Z_Tam
2022-08-08 / 0 评论 / 0 点赞 / 393 阅读 / 2341 字

boot 0 -> app -> boot 1 跳转
芯片:LPC54608 J512
测试平台: EasyArm LPC54608
SDK: LPCXpresso54608-usart_polling 2.7.0
详细资料:请关注公众号《跳跃的影子》并发送“ lpc54608双boot跳转 ”获取。

核心代码

/* 
 *  跳转到指定的地址
 */
void boot_app_exec(const void *addr)
{
    const uint32_t *app_vectors;
    uint32_t app_sp;
    void (*app_entry)(void);

    app_vectors = (const uint32_t *)addr;
    app_sp      = app_vectors[0];
    app_entry   = (void (*)(void))app_vectors[1];

    /* disable all interrupt sources */
    NVIC->ICER[0] = 0xFFFFFFFF;
    NVIC->ICER[1] = 0xFFFFFFFF;

    /* clear all pending interrupts */
    NVIC->ICPR[0] = 0xFFFFFFFF;
    NVIC->ICPR[1] = 0xFFFFFFFF;

    /* diable sytick and clear interrupt */
    SysTick->CTRL = 0;
    SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;

    /* set up vector table */
    SCB->VTOR = (uint32_t)app_vectors;

    /* set up stack pointer */
    __set_MSP(app_sp);
    __enable_irq();

    app_entry();
}

  • 代码参考:

程序说明

Boot 0

  • 起始地址:0x0000 0000U。
  • 代码范围:0x0000 0000U - 0x0x0000 FFFFU。
  • 打印调试信息,延时 3秒 后跳转到 APP

APP

  • 起始地址: 0x0002 0000U。
  • 代码范围: 0x0002 0000U - 0x0007 FFFFU。
  • 打印调试信息,实现串口自收发。
  • 当检测到指定字符(b)后,跳转到 BOOT1

Boot 1

  • 打印调试信息后啥也不干。

调试信息

演示视频

0

评论区