C 微控制器中的主存储器是如何组织的?

C 微控制器中的主存储器是如何组织的?,c,memory,microcontroller,memory-address,C,Memory,Microcontroller,Memory Address,我的问题是:微控制器中的内存是如何组织和管理的? (它没有任何操作系统,即不存在MMU) 我在zynq 7000(ZC702)FPGA上工作,它有独立的arm内核和独立的DDR内存,通过axi互连连接在一起 我在DDR(10 1)中写了11 1111 1111,读了之后也给了我同样的结果。 当我将1111111111十进制写入DDR(11 1)时,它给出-1 在这里,整个物理内存都被消耗掉了。当我使用任何微控制器时,都不会出现这种情况。 谁来管理微控制器中的内存?好的,这是cortex-A9,无

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

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

我在DDR(10 1)中写了11 1111 1111,读了之后也给了我同样的结果。 当我将1111111111十进制写入DDR(11 1)时,它给出-1

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

好的,这是cortex-A9,无论形状或形式都不是微控制器

当您阅读该体系结构的arm文档时,您将在其中找到mmu。正如所料,它是大脑皮层的一部分——核心

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

有256K的片上ram,也许你应该先处理一下

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

在MMU中,你只需阅读arm文档就可以了解有关该内核的所有信息。然后与xilinx文档合作了解更多信息,然后当然是谁完成了将arm内核连接到dram的其余fpga设计?他们使用什么地址空间,什么解码,他们支持什么对齐,支持什么axi传输,等等?这不是这里的任何人都能做到的,你必须和fpga逻辑设计师谈谈你的具体设计


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

请注意,MMU和操作系统是两个不同的概念。现在,SoC和微控制器是不同的术语。你的问题很不清楚。没有单一的SoC类型,也没有单一的微控制器。基于FPGA的SOC甚至更加灵活。你应该学习更多的基础知识,你看起来很困惑(无意冒犯)。微控制器有很多不同之处,你必须阅读它们的手册。我的意思是,由于您没有一个操作系统来处理不同的体系结构,所以您必须自己做。看看制造商是否提供了一些开发工具包。@AUS:你是说在微控制器上,它可以在制造商级别完成。我可以说,在ARM启动中。s也会这样做吗???不知道。但是当我在嵌入式系统(ARM)上工作时,我从制造商那里得到了工具链。然后我就能够正确地为它交叉编译一个操作系统。