NXP MCU 技术论坛
直播中

七上八下

8年用户 839经验值
私信 关注
[问答]

如何从LPC55中的应用程序代码进入ISP模式?

单片机:LPC55S28
开发板:LPC55S28-EVK

按照用户手册,我的应用程序中有以下代码进入 ISP 模式,但它所做的只是重置系统并从我的应用程序开始。CMPA/CFPA 中的任何配置是否会影响进入 ISP 模式的能力。当前未配置 CMPA/CFPA(全为零)。在跳转到引导加载程序 (runBootloader) 之前,我的应用程序中是否需要设置任何内容。

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

     ...
    // 仅 ISP 模式和 USB(LPC55 用户手册第 9.3.4 节:runBootloader API)
    uint32_t arg = 0xEB110000;  
    运行引导程序(&arg);

    而 (1) {}
}


//////////////////////////////////////////////// ////////////
我在 fsl_iap.h/c 中添加了 RunBootloader 声明/定义:

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


//////////////////////////////////////////////// ///////////
fsl_iap 已经有以下定义:

#define BOOTLOADER_API_TREE_POINTER ((bootloader_tree_t *)0x130010f0U)


typedef struct BootloaderTree
{
    void (*runBootloader)(void *arg); /*!< 启动引导加载程序执行的函数。*/
    standard_version_t bootloader_version; /*!< 引导加载程序版本号。*/
    const char *版权所有;/*!<版权字符串。*/
    const uint32_t *保留;/*!< 不要使用。*/
    flash_driver_interface_t flashDriver;
} bootloader_tree_t;


更多回帖

发帖
×
20
完善资料,
赚取积分