【问题标题】:Loading code from External Flash to RAM将代码从外部闪存加载到 RAM
【发布时间】:2015-12-23 11:28:07
【问题描述】:

我使用的是 ARM Cortex M3 架构,当我的电路板连续使用一段时间时,我的当前代码面临数据损坏问题,因为我使用的是内部闪存和 RAM,这可能导致在数据部分重写了一些数据。现在我打算使用一个带有程序的外部闪存,内部闪存将进行所有必要的初始化,一旦板子启动,内部闪存程序就会执行,然后我希望将外部闪存中的代码加载进去ram 并继续流动。请帮助我的方法或建议我更好的方法。

【问题讨论】:

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

标签: arm


【解决方案1】:

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

您是否进行任何闪存写入?检查这些周围的代码,看看是否是问题所在。

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

【讨论】:

    【解决方案2】:

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

    如果您想确定使用,请继续,获取基于 spi 的闪存或您想要的任何设备,内部闪存启动,将程序从外部复制到 ram 并运行它。

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

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 1970-01-01
      • 2018-07-03
      • 2013-03-17
      • 2018-03-16
      • 2011-03-29
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多