【问题标题】:How primary memory is organised in a microcontroller? [closed]微控制器中的主存储器是如何组织的? [关闭]
【发布时间】:2016-07-20 09:07:04
【问题描述】:

我的问题是:微控制器中的内存是如何组织和管理的? (它没有任何操作系统,即没有 MMU)。

我正在使用 zynq 7000 (ZC702) FPGA,它有独立的 arm 内核和独立的 DDR 内存,通过 axi 互连连接在一起。

我用十进制写了 11 1111 1111 到 DDR(10 1's),读完后它给了我同样的结果。 当我将十进制的 111 1111 1111 写入 DDR(11 个 1)时,它给了我 -1。

这里消耗了整个物理内存。当我使用任何微控制器时都不会出现这种情况。 谁来管理微控制器中的内存?

【问题讨论】:

  • 请注意,MMU 和 OS 是不同的概念。你可能有一个没有另一个。
  • 现在 SoC 和微控制器是不同的术语。你的问题很不清楚。既没有单一的 SoC 类型,也没有单一的微控制器。基于 FPGA 的 SoC 更加灵活。你应该多了解一些基础知识,你似乎很困惑(没有冒犯)。
  • 微控制器差异很大,你必须阅读他们的手册。我的意思是,由于您没有操作系统来处理不同的架构,因此您必须自己做。看看制造商是否提供一些开发套件。
  • @AUS :你的意思是在微控制器上它可以在制造商级别完成。我可以说,在 ARM startup.s 中也会这样做吗????
  • 不知道。但是当我在嵌入式系统(ARM)上工作时,我从制造商那里得到了工具链。然后我就能够为它正确交叉编译一个操作系统。

标签: c memory microcontroller memory-address


【解决方案1】:

好吧,这是一个 cortex-A9,在任何形状或形式上都不是微控制器。

当您阅读该架构的 arm 文档时,您会在其中找到 mmu。正如预期的那样,它是 Cortex-A 内核的一部分。

谁/如何/何时初始化 ddr?必须有人对其进行初始化,然后您才能对其进行写入和读回。十进制的 10 个适合 32 位写入/读取,11 个,占用 33 位,您使用什么大小的写入/读取?你有多少ddr?我怀疑你还没准备好和 ddr 说话

有 256K 的片上 ram,也许你应该先弄乱它。

所有这些都在 zilinx 和 arm 文档中。经验丰富的引导加载程序开发人员可能需要几个月的时间来初始化 DDR,如何/谁/何时完成,如果您不是初始化它的人,您是否有 DRAM 测试以确认它已启动并正常工作? zilinx 是否为此提供了例程(您的 ddr 是如何初始化的,是谁做的(您的代码、您之前的一些代码、逻辑等)以及何时完成,在您的代码运行之前?)。也许初始化是你的工作。

您刚刚阅读 arm 文档的 MMU 以及有关该内核的所有内容。然后使用 xilinx 文档获取更多信息,当然还有谁负责将 arm 内核连接到 dram 的 fpga 设计的其余部分?他们使用什么地址空间,什么解码,他们支持什么对齐,支持什么轴传输,等等?这不是这里任何人都能做到的,您必须与 fpga 逻辑设计人员讨论您的具体设计。

如果您没有操作系统,那么您正在运行裸机。你程序员负责内存管理。您不一定需要 mmu,有时它会有所帮助,有时它只会增加更多工作。完全取决于您的编程任务以及软件和系统的整体设计。 mmu 是硬件,操作系统是在硬件上运行的软件。一件事可能会使用另一件事,但它们与中断控制器或DRAM控制器或uart等与操作系统无关。操作系统或其他软件可能会使用该硬件,但您也可以将它们与其他软件一起使用。

【讨论】:

    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多