查看: 18470|回复: 20

[求助] LPC1754 BootLoader+APP 升级异常

[复制链接]

该用户从未签到

1

主题

13

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2021-4-28
发表于 2020-3-3 17:04:35 | 显示全部楼层 |阅读模式
本帖最后由 默默的超儿 于 2020-3-3 17:19 编辑

芯片:LPC1754  rom128KB ram32KB ,自主设计的电路图PCB
库:寄存器
IDE:keil5.14
问题/现象:最近用了LPC1754芯片,原本的程序烧录完是可以正常运行。自从加了BootLoader后,app和BootLoader合并成.bin或者.hex通过Jlink烧录,机器都能正常运行,用串口升级(自定义协议,bin文件升级),app就会跑飞,进入硬件中断。更奇葩的问题就是,升级多台机器,大部分机器升级都正常,小部分不正常。在程序跑飞后(进入硬件中断),我用Jlink读取芯片的程序,跟升级的bin文件比较,并无差异,无源晶振检测也正常,再用Jlink烧录,程序就正常运行。(app和BootLoader都是裸机,没有实时系统)
BootLoader和app的堆栈都进行修改,没有任何帮助。在跳转复位前后的全局中断关闭和开启都有写。
系统启动文件startup_LPC17xx.s中,app屏蔽了CRP_Key程序段,BootLoader没有屏蔽。app和BootLoader屏蔽和不屏蔽都尝试过,没帮助。
最后,升级后能正常的机器再升级也正常,有异常的也是不能修复。
机械升级方式:机器升级方式:有上位机接口,通过串行通信与LPC1754建立连接。上位机读取U盘升级包,发送数据给下位机更新app。
调试现象:程序升级跑飞后,用keil进行无烧录调试,不是每次的升级文件都能跟踪到HardFault_Handler前一刻的程序。
怀疑 : IAP_Reinvoke跟解决这个问题有帮助吗?不懂怎么在寄存器上配置这块代码。
请求大神支援!谢谢!

我知道答案 目前已有20人回答
回复

使用道具 举报

该用户从未签到

1

主题

13

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2021-4-28
 楼主| 发表于 2021-4-28 15:53:47 | 显示全部楼层
目前,同事的解决方案,提高编译器的优化等级(0 -> 1) , 可以完成升级,但具体原因尚不明确!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2025-10-11 10:53
  • 签到天数: 1506 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4701

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10130
    最后登录
    2025-10-29
    发表于 2020-3-4 09:11:45 | 显示全部楼层
    没有具体的类似的经验,
    建议楼主关注一下官方的AP,有没有类似的workaround的文档发出。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    13

    帖子

    0

    注册会员

    Rank: 2

    积分
    55
    最后登录
    2021-4-28
     楼主| 发表于 2020-3-4 09:22:14 | 显示全部楼层
    jobszheng5 发表于 2020-3-4 09:11
    没有具体的类似的经验,
    建议楼主关注一下官方的AP,有没有类似的workaround的文档发出。
    ...

    谢谢了,我关注官方下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    734

    主题

    6393

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    26070
    最后登录
    2025-10-31
    发表于 2020-3-4 10:50:12 | 显示全部楼层
    请问出现问题的芯片的比例是多少呢?根据你介绍,最初的做法是bootloader和app合并后,一起被烧录,现在是用串口烧录,是先将bootloader烧录到LPC1754后,然后上位机与bootloader建立联系,跟着通过串口升级app吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    13

    帖子

    0

    注册会员

    Rank: 2

    积分
    55
    最后登录
    2021-4-28
     楼主| 发表于 2020-3-4 11:45:03 | 显示全部楼层
    小恩GG 发表于 2020-3-4 10:50
    请问出现问题的芯片的比例是多少呢?根据你介绍,最初的做法是bootloader和app合并后,一起被烧录,现在是 ...

    30%比例出异常。
    先把BootLoader和app合并hex,用jlink或者Flash Magic烧录。然后整个机器启动,上位机读取插入的u盘升级bin文件,接着通过串口发命令告知app要升级,app让软件复位,最后在BootLoader跟上位机通讯,通过串口把升级文件传输给BootLoader,由BootLoader更新app
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    103

    主题

    869

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4362
    最后登录
    2025-8-21
    发表于 2020-3-4 13:28:50 | 显示全部楼层
    最好用J-Flash之类的工具读出来对比下,串口存在误码率的问题,别是image烧录过程中有误码之类。
    最好能用CRC校验下image下进去的是否完美。
    另 IAP reinvoke只是帮客户从CRP3模式恢复到CRP2,对你代码本身更新过程其实没有太多帮助
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    13

    帖子

    0

    注册会员

    Rank: 2

    积分
    55
    最后登录
    2021-4-28
     楼主| 发表于 2020-3-4 13:31:05 | 显示全部楼层
    mgn 发表于 2020-3-4 13:28
    最好用J-Flash之类的工具读出来对比下,串口存在误码率的问题,别是image烧录过程中有误码之类。
    最好能用C ...

    串口通讯有进行CRC校验,我也有读取芯片flash,都跟原本数据一样。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    734

    主题

    6393

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    26070
    最后登录
    2025-10-31
    发表于 2020-3-5 15:00:03 | 显示全部楼层
    默默的超儿 发表于 2020-3-4 11:45
    30%比例出异常。
    先把BootLoader和app合并hex,用jlink或者Flash Magic烧录。然后整个机器启动,上位机读 ...

    好的,有30%这么多,你有对比过正常工作和工作不正常的MCU之间里面的代码是否完全一致,包括bootloader和APP呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    13

    帖子

    0

    注册会员

    Rank: 2

    积分
    55
    最后登录
    2021-4-28
     楼主| 发表于 2020-3-6 09:44:03 | 显示全部楼层
    小恩GG 发表于 2020-3-5 15:00
    好的,有30%这么多,你有对比过正常工作和工作不正常的MCU之间里面的代码是否完全一致,包括bootloader和 ...

    jlink下载和bin文件升级都保证是同一份代码,也有用jlink读取出芯片rom的数据,对比均一致。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    734

    主题

    6393

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    26070
    最后登录
    2025-10-31
    发表于 2020-3-6 11:20:21 | 显示全部楼层
    默默的超儿 发表于 2020-3-6 09:44
    jlink下载和bin文件升级都保证是同一份代码,也有用jlink读取出芯片rom的数据,对比均一致。 ...

    这就很奇怪,升级失败的MCU,通过J-link重新烧录bootloader和APP程序后,能否工作正常么?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-10-31 21:41 , Processed in 0.111657 second(s), 33 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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