首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许/dev/mem的部分内存映射

允许/dev/mem的部分内存映射
EN

Unix & Linux用户
提问于 2019-04-30 16:50:08
回答 1查看 1.4K关注 0票数 1

我有一个soc(DE0-nano-soc),它包含一个ARM-Cortex-A9 cpu和一个Cyclone在单片芯片上。CPU可以访问1gb的DDR3内存,但是FPGA也可以访问这个内存,这样他们就可以共享数据。

现在,我已经将linux配置为使用引导参数mem=900M只看到总内存的900米。这样,我就有了一些剩下的RAM,linux不碰它,我可以用它与FPGA通信。我想用/dev/mem写到内存的那一部分。当我的内存映射适当的地址时,我会得到一个被拒绝的错误,我猜这是因为我的内核设置了CONFIG_STRICT_DEVMEM

现在我真的不想取消这个设置,因为我只需要写到linux不使用的附件中。有没有办法告诉linux内核,写到这个特定的部分是可以的,但是正常的内存仍然是有限的?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-04-30 18:20:41

我发现了这个:https://docs.pmem.io/getting-started-guide/creating-development-environments/linux-environments/linux-memmap

假设您有一个新的足够的内核,添加memmap=124!900应该使所需的内存可以作为/dev/pmem0访问。

它还建议添加nokaslr,否则可能会出现随机系统错误。KASLR是一种安全特性,它使内核更难被利用。

虽然这已经被用于迷人的黑客,但我不能为您的情况推荐它。我不知道如何管理来自FPGA (也就是DMA)的CPU缓存和更新。我们对其他问题的建议是不要这样做:-)。

还有另一种选择,尽管它没有按书面回答问题。我认为您可以使用iomem=relaxed启动,如果您想暂时禁用STRICT_DEVMEM而不编译一个全新的内核。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/516416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档