我在做一个使用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/