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() 。
但仍无法继续完成闪存编程。 擦除后一直停止。
您能提供一些建议吗?
谢谢。此致、
卢卡斯
如果将修改后的链接器命令文件与闪存 API 使用示例一起使用、它是否起作用?
是的、它可以擦除自身和编程。
除了链接器命令文件、您在应用程序中做了哪些更改?
在每次写入和擦除之前,我 在开始时运行 SeizeFlashPump (),在结束时运行 ReleaseFlashPump ()。 并且我发现,如果我擦除程序本身,然后运行 ReleaseFlashPump ()将失败并停止。
如果我删除这两个函数、它可以继续对数据进行编程。 如果我不调用这两个函数、会产生什么影响。
如果您已考虑到、调用闪存 API 函数的函数也必须驻留在 RAM 中、否则、该函数也将被擦除。 此外、请确保要么没有启用中断、要么中断服务例程也驻留在 RAM 中。 因此、在擦除固件时调用的所有函数也必须位于 RAM 中。
Vamsi、
您可以关闭此帖子。
感谢您的建议。