查看: 7126|回复: 5

[已解决] LPC54608 UART ISP下载未成功

[复制链接]

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
发表于 2017-10-27 14:29:49 | 显示全部楼层 |阅读模式
你好,想利用串口对54608下载固件程序,不想通过外部引脚控制,而是直接进入ISP.参考之前的文档,利用下面函数,在工程选项里设置编译地址
为 IROM1  0x0~0x8000,32K大小空间。其实Program Size: Code=7708 RO-data=488 RW-data=36 ZI-data=2144  实际代码只有为8K,之所以设置32K是因为Flash Magic在下载固件时,第二步里擦除是1个block的擦,一个block为32K。为了下载其他HEX文件时不擦除该UART isp的boot,故设置为32K。通过mdk的download直接下载到开发板。

flashiap.png
status_t Chip_IAP_ReinvokeISP(uint8_t IspMode)
{
        uint32_t command[9], result[4];
        uint8_t Param[8];
        uint8_t *p=Param;
        Param[0] = 0;
        Param[1] = IspMode; //usb 8// 6 usart
        Param[2] = 0;
        Param[3] = 0;
        Param[4] = 0;
        Param[5] = 0;
        Param[6] = 0;
        Param[7] = IspMode;
        command[0] = kIapCmd_FLASHIAP_ReinvokeISP; //57
        command[1] = (uint32_t )p;
        iap_entry(command, result);
}
然后main函数调用这个
int main(void)
{
    uint32_t i, status;

    /* Board pin, clock, debug console init */
    /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

    BOARD_InitPins_Core0();
    BOARD_BootClockFROHF48M();
    BOARD_InitDebugConsole();
        
        status = Chip_IAP_ReinvokeISP(6); //usb 8// 6 usart
{
PRINTF("\r\nstatus=%x\n",status);
}
}在另外一个工程lcdc_cursor里(就是需要生产HEX文件,更新程序用的其他工程)设置编译地址为IROM2  0x8000~0X80000。工程的设置如下:



flashmagic下载工具第二步擦除设置如下:


但是按照上述设置,lcdccursor生成的hex文件下载进去后无反应.


最佳答案

paulkiyt 发表于 2017-10-27 15:26 你好,lcdcurse这个代码没有问题,我用MDK  download下载可以跑起来,然后按键操作进入ISP模式,下载hex ... 好的!楼主,你现在可以和我说下你想实现功能的具体需求吗 ...
lcd IROM2.png
flashmagic.png
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2017-10-27 15:19:32 | 显示全部楼层
楼主你好。
正如我在你之前帖子里回复的,你先把lcdcurse代码直接放到flash0跑是否能够正确,然后你可以直接用ISP下载看看能否运行。
我那个文档其实是自己更新自己的代码,没有做偏移的。
如果你要把APP做偏移,那么就是二次bootloader了。下载后,你要做PC,SP, 中断向量表的偏移的。
回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-27 15:26:30 | 显示全部楼层
小恩GG 发表于 2017-10-27 15:19
楼主你好。
正如我在你之前帖子里回复的,你先把lcdcurse代码直接放到flash0跑是否能够正确,然后你可以直 ...

你好,lcdcurse这个代码没有问题,我用MDK  download下载可以跑起来,然后按键操作进入ISP模式,下载hex文件后也可以跑起来。
这个偏移的话,是在我的lcdcurse这个工程哪里设置啊?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2017-10-27 16:23:30 | 显示全部楼层
paulkiyt 发表于 2017-10-27 15:26
你好,lcdcurse这个代码没有问题,我用MDK  download下载可以跑起来,然后按键操作进入ISP模式,下载hex ...

好的!楼主,你现在可以和我说下你想实现功能的具体需求吗?是否也是想远程操作,不用按键控制就能进入下载模式呢?
如果能接受外部按键进入ISP模式下载代码,我建议你直接用按键进入USB ISP模式下载,没必要再写一个小的用于进入bootloader的程序。
回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-27 17:08:19 | 显示全部楼层
小恩GG 发表于 2017-10-27 16:23
好的!楼主,你现在可以和我说下你想实现功能的具体需求吗?是否也是想远程操作,不用按键控制就能进入下 ...

你好。我的需求是后期程序更新下载全部通过UART下载。首先我的设备没有USB。其次我的设备安装完成后,只有UART是外接出来的,SWD也没有接出来,所以后期设备更新程序只想用uart,不想去拆设备,不想用SWD或者按键去控制进入ISP下载模式。
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2017-10-27 17:17:59 | 显示全部楼层
paulkiyt 发表于 2017-10-27 17:08
你好。我的需求是后期程序更新下载全部通过UART下载。首先我的设备没有USB。其次我的设备安装完成后,只 ...

那我觉得,你这样配置如何?
在你的APP里面,加上串口代码,可以自己定义一个特殊的串口帧。
一旦接到这样的串口命令,认为需要进入ISP模式,在你APP里面进入ISP,然后切换到flashmagic更新新的程序。
也就是说,应用程序里面加上软件控制进入ISP模式的代码以及条件而已。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 23:18 , Processed in 0.108807 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表