This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、团队
我需要使用闪存 API 进行固件升级。 我擦除程序本身后、程序会停止。
我认为它应该在 RAM 上运行、但是 我已经修改了 cmd 文件、就像示例项目一样: FLASH_programming_cpu01 我想 memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize) 完成时间 device_init() 。
但仍无法继续完成闪存编程。 擦除后一直停止。
您能提供一些建议吗?
谢谢。此致、
卢卡斯
您好、Lucas:
如果将修改后的链接器命令文件与闪存 API 使用示例一起使用、它是否起作用?
除了链接器命令文件、您在应用程序中做了哪些更改?
谢谢。此致、
瓦姆西
如果将修改后的链接器命令文件与闪存 API 使用示例一起使用、它是否起作用?
是的、它可以擦除自身和编程。
除了链接器命令文件、您在应用程序中做了哪些更改?
在每次写入和擦除之前,我 在开始时运行 SeizeFlashPump (),在结束时运行 ReleaseFlashPump ()。 并且我发现,如果我擦除程序本身,然后运行 ReleaseFlashPump ()将失败并停止。
如果我删除这两个函数、它可以继续对数据进行编程。 如果我不调用这两个函数、会产生什么影响。
如果您已考虑到、调用闪存 API 函数的函数也必须驻留在 RAM 中、否则、该函数也将被擦除。 此外、请确保要么没有启用中断、要么中断服务例程也驻留在 RAM 中。 因此、在擦除固件时调用的所有函数也必须位于 RAM 中。
卢卡斯
因为 Torsten 给大家推荐了调试方法、所以我昨天没有回复。
如果您需要进一步的帮助、请告诉我们。
谢谢。此致、
瓦姆西
感谢您的回复!
是的、我认为我将所有需要的函数都放在了 RAM 中。
在我 的擦除/编程过程中删除了 SeizeFlashPump ()和 ReleaseFlashPump ()之后,我可以立即继续固件升级。 但我不确定此操作是否会导致一些错误。
卢卡斯
好的、由于它现在正在工作、请告诉我们是否可以关闭此帖子。
如果您有其他问题、可以打开新帖子。
谢谢。此致、
瓦姆西
Vamsi、
您可以关闭此帖子。
感谢您的建议。