Arm 将代码从外部闪存加载到RAM

Arm 将代码从外部闪存加载到RAM,arm,Arm,我使用的是ARM Cortex M3体系结构,当我的主板持续运行时,我的当前代码面临数据损坏的问题,因为我使用的是内部闪存和ram,这可能导致数据部分中的一些数据被重写。现在我计划使用的是一个外部闪存,它将有程序,内部闪存将有所有必要的初始化,一旦板启动,内部闪存程序被执行,然后我希望外部闪存的代码被加载到ram中,并继续流动。请帮助我的方法或建议我一个更好的方法。如果不经过微控制器特定的许多步骤,例如解锁闪存、提供擦除地址、写入地址和执行指令,就不可能写入内部闪存。如果这是随机发生的,我会感到

我使用的是ARM Cortex M3体系结构,当我的主板持续运行时,我的当前代码面临数据损坏的问题,因为我使用的是内部闪存和ram,这可能导致数据部分中的一些数据被重写。现在我计划使用的是一个外部闪存,它将有程序,内部闪存将有所有必要的初始化,一旦板启动,内部闪存程序被执行,然后我希望外部闪存的代码被加载到ram中,并继续流动。请帮助我的方法或建议我一个更好的方法。

如果不经过微控制器特定的许多步骤,例如解锁闪存、提供擦除地址、写入地址和执行指令,就不可能写入内部闪存。如果这是随机发生的,我会感到惊讶

你会写flash吗?检查这些代码,看看这是否是问题所在


你确定这就是发生在你身上的事吗

更好的方法是按照设计使用内部闪存和ram。应该没有理由使用此外部闪存。听起来像是错误代码,你做了什么来证明它不是

如果您希望使用一个“确定”,那么就使用一个基于spi的闪存或任何您想要的设备,内部闪存引导,将程序从外部复制到ram并运行它


为什么不直接从内部闪存复制到ram并在ram中运行呢?如果您信任内部闪存从中引导和从中初始化,那么您应该信任它从中复制。

您是否在不修改闪存等待状态的情况下增加了主时钟?当你关闭电源时,它是否损坏,或者它是否工作,然后在以后出现损坏?当你转储闪存时,你看到了什么,它与你认为你编程的不匹配吗?啊。数据即ram,通常与处理器运行速度一样快,但可能不取决于设计,可能你正在超频ram?听起来这只是代码中的一个简单错误。长时间运行可能会增加出现故障的几率,因为在某个地方处于计时边缘,允许您没有计划的事件/中断,或者您计划的事件/中断太接近或出现故障,您的代码被破坏,等等…我的频率是50Mhz,我的电路板设计用于从服务器接收数据,并通过7seg显示器显示数据。开始时,我设置了电路板的IP,但经过一段时间(7天及以上),当我检查IP时,它会发生变化。但是我的板仍然接收并显示数据。我被困在这一点上。是否存在闪存或ram等待状态设置,当您将时钟设置为50Mhz时,您必须增加等待状态?您是直接从微控制器驱动显示器,还是其中有晶体管来提高功率?你确定微控制器可以驱动这些部分,尤其是在最坏的情况下,当它们全部启动时?它不会耗尽芯片,使其在保持ram或其他逻辑正确方面处于边缘?同样地,无论你同时驾驶多少个信号灯,当你从全开到全关时,地面都会反弹?您已经构建了多少个,有多少个存在此问题?您是否已经在没有连接显示器的情况下运行了很长一段时间,以消除负载,并查看它是否仍然损坏?