我的疑问是:如何在微控制器中组织和管理存储器? (它没有任何操作系统,即没有MMU)。
我正在研究zynq 7000(ZC702)FPGA,它具有独立的臂芯和独立的DDR存储器,与axi互连连接在一起。
我写了11 1111 1111十进制到DDR(10 1' s),它在阅读后给了我同样的东西。 当我用十进制的1111111111写入DDR(11 1' s)时,它给了我-1。
这里消耗了整个物理内存。当我使用任何微控制器时,情况并非如此。 谁将在微控制器中管理内存?
答案 0 :(得分:1)
好的,这是一个皮质-A9,绝不是微控制器的形状或形式。
当您阅读该架构的arm文档时,您会在那里找到mmu。正如预期的那样,它是Cortex-A核心的一部分。
ddr初始化的人/方式/时间?有人必须先将其初始化,然后才能写入并将其读回。十进制的10个适合32位写/读,11个,需要33位,你使用的是什么大小的写/读?你有多少ddr?我怀疑你还没准备好和ddr谈话
片上RAM有256K,也许你应该先把它搞得一团糟。
所有这些都在zilinx和arm文档中。经验丰富的bootloader开发人员可能需要几个月的时间来初始化DDR,如何/谁/何时完成,你是否进行了dram测试以确认它是否已启动并且如果你不是初始化它的话? zilinx为此提供了例程(你的ddr如何初始化,是谁(你的代码,一些代码在你的代码之前,逻辑等)以及什么时候完成,在你的代码运行之前?)。也许你的工作是初始化。
你刚刚阅读了关于该核心的所有内容的MMU。然后再与xilinx文档合作,然后当然是谁做了fpga设计的其余部分来将arm核心连接到dram?他们使用什么地址空间,解码什么,他们支持什么路线,支持什么轴转移等?这不是任何人都可以做到的,你必须与fpga逻辑设计师讨论你的特定设计。如果您没有操作系统,那么您正在运行裸机。程序员负责内存管理。你不一定需要mmu,有时它会帮助它增加更多的工作。完全取决于您的编程任务以及软件和系统的整体设计。 mmu是硬件,操作系统是在硬件上运行的软件。有一件事可能会使用另一件事,但除了中断控制器或dram控制器或uart等与操作系统相关之外,它们绝不会相互联系。操作系统或其他软件可以使用该硬件,但您也可以将它们与其他软件一起使用。