AnsweredAssumed Answered

Entering ISP mode from application code in LPC55

Question asked by Yohannes Araya on Mar 24, 2020
Latest reply on Mar 30, 2020 by Yohannes Araya

MCU: LPC55S28 

Board: LPC55S28-EVK 

 

Following the user manual, I have the following code in my application to enter ISP mode but all it's doing is reset the system and start from the beginning of my application. Do any of the configurations inside CMPA/CFPA affect the ability to enter ISP mode. CMPA/CFPA are not currently configured (all zeros). Is there anything that needs to be set within my application before jumping to bootloader (runBootloader).

 

...

#include "fsl_iap.h"
...
int main()
{

    ...

    // ISP mode and USB only (LPC55 User Manual section 9.3.4: runBootloader API)
    uint32_t arg = 0xEB110000;  
    RunBootloader(&arg);

    while (1) {}
}

 

//////////////////////////////////////////////////////////////

I added RunBootloader declaration/definition in  fsl_iap.h/c:

 

void RunBootloader(void *arg)
{
    BOOTLOADER_API_TREE_POINTER->runBootloader(arg);
}

 

/////////////////////////////////////////////////////////////

fsl_iap already has the following definitions:

 

#define BOOTLOADER_API_TREE_POINTER ((bootloader_tree_t *)0x130010f0U)

 

typedef struct BootloaderTree
{
    void (*runBootloader)(void *arg);      /*!< Function to start the bootloader executing. */
    standard_version_t bootloader_version; /*!< Bootloader version number. */
    const char *copyright;                 /*!< Copyright string. */
    const uint32_t *reserved;              /*!< Do NOT use. */
    flash_driver_interface_t flashDriver;
} bootloader_tree_t;

Outcomes