想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我的查询是:如何在微控制器中组织和管理内存?
(它没有任何操作系统,即不存在MMU)。
我正在通过zynq 7000(ZC702)FPGA进行工作,它具有独立的臂核心和独立的DDR内存,并通过axi互连连接在一起。
我以十进制形式将11 1111 1111写到了DDR(10 1's)中,它在读取后给了我相同的信息。
当我将十进制的111 1111 1111写到DDR(11 1's)时,它给我-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文档进行更多工作,然后剩下的fpga设计中的谁将臂核连接到DRAM?他们使用什么地址空间,什么解码,他们支持哪些对齐方式,支持哪些轴传输等等?这不是这里的任何人都可以做的事情,您必须与fpga逻辑设计人员讨论您的特定设计。
如果没有操作系统,则说明您正在运行裸机。您,程序员负责内存管理。您不一定需要mmu,有时它会有所帮助,有时它只会增加更多工作。完全取决于您的编程任务以及软件和系统的总体设计。 mmu是硬件,操作系统是在硬件上运行的软件。一件事可能会使用另一件事,但是它们之间的联系绝非比中断控制器或dram控制器或uart等与操作系统有关。操作系统或其他软件可以使用该硬件,但是您也可以将它们与其他软件一起使用。