我在做一个使用altera cyclone 5 fpga soc的嵌入式系统项目。
在真正的处理器(arm)上,我将使用linux,而用于fpga通信的脚本将在python 2中实现。
我需要一个内存映射来通过/dev/mem向fpga发送和接收数据。
为了开发这个脚本,我在虚拟机上使用了lubuntu系统。下面是我在lubuntu vm上用pycharm测试的代码:

def open(self):
    file = os.open("/dev/mem", os.O_RDWR | os.O_SYNC)
    self.map = mmap.mmap(file,
                         self.CONST_mapLength,
                         mmap.MAP_SHARED,
                         prot = mmap.PROT_READ | mmap.PROT_WRITE,
                         offset = self.CONST_offset)
    return

我的问题是无法打开\dev\mem。脚本以以下文本结尾:
file = os.open("/dev/mem", os.O_RDWR | os.O_SYNC)
OSError: [Errno 13] Permission denied: '/dev/mem'
Process finished with exit code 1

问题是什么?我该怎么解决?

最佳答案

在我看来,您无权访问文件/dev/mem
所以在你打开它之前,你必须找到正确的答案。
有四种方法可以得到它。
以根用户身份运行脚本,但这很危险,因为根用户可以在系统中执行任何操作。
使用sudo运行应用程序,例如sudo your_python.py
您可以运行此命令sudo chmod 777 /dev/men,向所有用户打开权限。
使用命令sudo usermod -g kmem yourID将您添加到拥有/dev/mem的kmem组

关于python - 在python中的“/dev/mem”上尝试os.open时,权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45222559/

10-10 14:08