我正在使用altera cyclone 5 fpga-soc进行嵌入式系统项目。 在真实处理器(ARM)上,我将使用Linux,用于FPGA通信的脚本将在Python 2中实现。
我需要一个存储器映射来通过/dev/mem
向FPGA发送数据和从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
问题是什么,我该如何解决?
答案 0 :(得分:2)
从我看来,您无权访问文件/ dev / mem。
所以在你打开它之前,你必须得到正确的。
有四种方法可以获得它。
以root身份运行您的脚本,但这很危险,因为root可以在系统中执行任何操作。
使用sodu运行您的应用程序,例如" sudo your_python.py"。
您可以运行此命令" sudo chmod 777 / dev / men",向所有用户开放权限。
使用命令" sudo usermod -g kmem yourID"
答案 1 :(得分:0)
我会非常谨慎地编辑甚至打开/dev/mem
,特别是因为你似乎没有关闭它 ...(使用{{1} })
但无论如何,如果您希望linux中的权限访问close()
中的任何内容,您应该是root用户或具有sudo权限的用户,因此不要使用以下命令访问您的程序:
dev
你应该:
python whatever.py
假设允许您的用户这样做。如果没有,这意味着你真的是一个没有足够权限的用户,你应该向系统管理员寻求帮助