| 本帖最后由 默默的超儿 于 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跟解决这个问题有帮助吗?不懂怎么在寄存器上配置这块代码。 请求大神支援!谢谢! 
 |