我正在研究一个小型嵌入式系统。当我的 linux 启动到用户空间时,我知道我的设备在物理内存中的位置。我想将它们映射到用户空间虚拟地址。目前,我正在通过内核模块进行操作。我使用 vmalloc/kmalloc(取决于大小),然后在返回的虚拟地址上使用 ioremap_page_range 来映射我的物理地址。我不认为这是正确的做法。首先我正在分配内存,然后我要求内核将该虚拟地址空间重新映射到一些不同的物理地址空间。(最初在 vmcall/kmalloc 中映射的物理->虚拟有点没用,因为我不关心那些物理页面。这绝对不好。)
取而代之的是一种将已知物理内存映射到用户空间进程的更好方法。(我知道除了我的用户空间进程之外,没有人会碰那个内存。)
谢谢