Debugging 运行MMU时调试处理器寄存器

Debugging 运行MMU时调试处理器寄存器,debugging,linux-kernel,arm,linux-device-driver,Debugging,Linux Kernel,Arm,Linux Device Driver,我目前正在尝试使用作为SDK一部分提供的XIlinx的XMD工具访问Zynq Z702 SoC上ARM9内核的寄存器。当我试图读取内存的一部分时,我得到了一个与MMU相关的错误。在处理器上运行操作系统时,是否需要一些专用硬件来读写这些寄存器。请帮忙 注意:我在处理器上运行Linux 3.x.x内核,我试图访问的内存区域是内存映射区域,没有被任何内核或用户空间代码占用 谷歌ioremap并获得类似的参考资料。如果你有,也许会有帮助。通常,您必须在外围设备响应总线请求之前对其进行时钟设置。从控制台(

我目前正在尝试使用作为SDK一部分提供的XIlinx的XMD工具访问Zynq Z702 SoC上ARM9内核的寄存器。当我试图读取内存的一部分时,我得到了一个与MMU相关的错误。在处理器上运行操作系统时,是否需要一些专用硬件来读写这些寄存器。请帮忙


注意:我在处理器上运行Linux 3.x.x内核,我试图访问的内存区域是内存映射区域,没有被任何内核或用户空间代码占用

谷歌
ioremap
并获得类似的参考资料。如果你有,也许会有帮助。通常,您必须在外围设备响应总线请求之前对其进行时钟设置。从控制台(google early console等和文档目录中的look/
grep
)提供特定错误将提供有关错误类型的更多信息。请通过获取与MMU相关错误的详细信息来缩小问题范围。“这些死机错误是什么”问题给出了一个简单的答案。“我试图访问的内存区域是内存映射区域”——一旦内核启用MMU进行虚拟内存操作,所有指令都使用虚拟地址。SoC文档将列出这些内存映射寄存器的物理地址。为了访问这些寄存器,您必须将这些物理地址映射到虚拟地址。MMU错误可能是因为您试图使用物理地址,而物理地址被视为虚拟地址。感谢大家提供信息@关于虚拟地址和物理地址转换,您是正确的。但是我想访问与我在用户空间中映射的虚拟地址相对应的物理地址。我希望你能理解我在这里要表达的意思。当CPU使用MMU设置为虚拟内存时,你不能使用物理地址。(只有DMA控制器需要使用内存缓冲区的物理地址进行编程。)如果您有物理位置的虚拟映射,则只需读取或写入该虚拟地址即可访问该物理位置。MMU将自动将每个虚拟地址转换为其映射的物理位置。