RA6m3 OTA boot to APP

需要请教二个问题:

1、为啥我修改了heap size大小后,一直再文件系统报错。

如果改回来为0,没有这个问题出现。

问题2:

文件系统调用成功后,进入boot jump APP老是提示报错,

这是什么问题导致的

  • 以下是跳转函数

    void execute_user_code(uint32_t address)
    {

    main_fnptr *p_jump_to_app; // Function pointer main that will be used to jump to application
    __disable_irq();

    #if 0 //Commented out 2022.06.24 WangJin
    /* Disable the stack monitor */
    R_MPU_SPMON->SP[0].PT = 0xA500U; /* Enable access to Main Stack Pointer Monitor Access Control Register */
    R_MPU_SPMON->SP[1].PT = 0xA500U; /* Enable access to Process Stack Pointer Monitor Access Control Register */
    R_MPU_SPMON->SP[0].CTL = 0U; /* disable the Main stack monitor */
    R_MPU_SPMON->SP[1].CTL = 0U; /* disable the Process stack monitor */
    #else
    __set_MSPLIM(0);
    #endif
    SysTick->CTRL = 0; /* Disable the systick timer */
    NVIC_DisableIRQ ( SysTick_IRQn ); /* Disable the systick timer IRQ */
    NVIC_ClearPendingIRQ( SysTick_IRQn ); /* Clear any pending systick timer IRQ */

    // Clear all interrupts!
    // ICU Event Link Setting Register i (IELSRi) (RA6M3: i = 0 to 95)
    for (uint32_t i = 0; i<96; i++)
    {
    R_ICU->IELSR[i] = 0;
    }

    for (uint32_t i = 0; i<8; i++)
    {
    NVIC->ICER[i] = 0xFFFFFFFF;
    NVIC->ICPR[i] = 0xFFFFFFFF;
    }

    // IRQ Control Register i (IRQCRi) (RA6M3: i = 0 to 15)
    for (uint32_t i = 0; i<16; i++)
    {
    R_ICU->IRQCR[i] = 0;
    }

    p_jump_to_app = (main_fnptr*)(address+4);

    SCB->VTOR = (address & 0x1FFFFF80);

    /* Complete all explicit memory accesses */
    __DSB();
    /* Flush the pipeline in the processor */
    __ISB();

    // Flush the ROM cache, or we won't see the changed data
    R_FCACHE->FCACHEE_b.FCACHEEN = 0; //Disable Flash Memory Cache
    R_FCACHE->FCACHEIV_b.FCACHEIV = 1; //Invalidate Flash Cache
    while (0 != R_FCACHE->FCACHEIV_b.FCACHEIV);
    R_FCACHE->FCACHEE_b.FCACHEEN = 1; // Re-Enable ROM cache

    /* Set bits 20-23 to enable CP10 and CP11 coprocessor */
    SCB->CPACR = 0;

    /** Set stack here. */
    __set_PSP(*((uint32_t*)(address)));
    /* Ensure that when we jump we're using the Main Stack Pointer */
    __set_CONTROL(0);
    __set_MSP(*((uint32_t*)(address)));
    /* Clear lazy stacking for FPU operations */
    // FPU->FPCCR &= 0xC0000000;

    /** Jump to image*/
    (*p_jump_to_app)();
    }

  • 请问一下,需要请教以下二个问题:

    1、IC使用的是R7FA6M3AH,使用J-LINK烧录,单片机程序TFT屏等不能正常使用,反而选择R7FS5D97C烧录完成后,TFT屏等程序可以正常使用,技术支持回复是:JLINK厂家在J Flash Lite里面并没有适配R7FA6M3AH的QSPI,而R7FS5D97C有?这个是这样的吗?

    问题2:boot跳转到APP成功后,一直不亮屏,直接跑到xPortStartScheduler-》  prvPortStartFirstTask就出现硬件异常(Default_Handler)。而使用J-LINK烧录时,程序能够正常运行。这是为何?

  • 进入APP后,是否需要重定位中断向量表?如果需要,如何设置?麻烦指定一下,谢谢!

  • 基于MCUboot的bootloader不用单独处理,按相关应用笔记的配置过程进行配置就可以了

    对于前述的两个问题:

    1. 可以使用RFP (Renesas Flash Programmer)进行烧写

    R7FS5D97C和R7FA6M3AH是两款不同的产品

    2. 你的意思是指使用J-LINK烧写APP工作正常,而合并boot+APP就工作不正常了?