大家好、
客户提出的问题需要您的帮助:
我在2673芯片中放置了两个应用程序、一个作为升级启动、另一个作为应用程序、编写升级启动时请参阅 BSL。 当新升级的固件小于芯片自己的应用程序固件时、升级将不会出现异常、升级后将正常运行。 但是、当新固件大于芯片上已存在的应用固件的大小时、当升级到现有固件大小的结束地址(IIC 通信超时或地址未确认)时会发生总线错误。 在示波器中、当 IIC 在写入数据包后尝试读取数据包响应时、引导不响应、SCLK 和 SDI 被拉至低电平、无法恢复。 当我重启器件时、新固件会正常升级、或者引导会在调试模式下升级、而不会出现任何问题。
芯片上已存在的固件大小为5502、应用程序从0xc800开始、因此结束地址为0xdd7e、自写启动是一个200字节的数据包、 当新固件尝试写入0xdd18至0xdde0区域时、会发生此问题。 包含旧固件的末尾。
我尝试更换芯片上的程序、但每当我想更新大于原始固件的固件时、都会出现相同的问题、每次我在旧固件的末尾遇到此软件包问题时、都会出现相同的问题; 升级后、我立即将新固件写入旧固件的末尾。 立即出现问题。
下面是我在我自己的引导中配置的内容:
关闭所有中断__disable_interrupt ();在跳转启动之前,使用跳转(void (*)())*(uint16_t *)(0xFFFE))();
是否有办法解决这个问题? 原因是什么?
您可以帮助检查此案例吗? 谢谢。
此致、
本