使用python在hw中读取寄存器

时间:2013-05-04 09:31:51

标签: python cpu-registers

我的目标是使用python脚本读取FPGA上的一些寄存器。 我在硬件(FPGA)上实现了一些寄存器,我正在尝试读取寄存器.C中有一些能够读取寄存器的程序。但是我必须在python中编写读/写程序,以便我可以将它与我的verifcation环境(用python编写)集成。我是python(初学者级别)的新手,所以我希望你能引导我完成你的建议和评论。以下是我实施的代码。

这是我的代码。

#!/usr/bin/env python


import array
import fcntl
import re
import socket
import struct
import os

#connectedSockets = {}

# IOCTL Commands
SIOCREGREAD = 0x89F0
SIOCREGWRITE = 0x89F1

reg = 0x58000008

# open the NF descriptor
# Open a file
nf = os.open( "/dev/nf10", os.O_RDWR )
print "Opened NF descriptor"

# Now get a file object for the above file.
nf0 = os.fdopen(nf, "w+")

#print "opened nf0 file object"
inner_struct = struct.pack("II", reg, 0x0)
inner_struct_pinned = array.array('c', inner_struct)
print inner_struct_pinned
fcntl.ioctl(nf0, SIOCREGREAD,)
retval = struct.unpack("II", inner_struct_pinned)[0]
print retval

os.fdclose(nf)

1 个答案:

答案 0 :(得分:1)

您将无法在纯Python中执行此操作。如果您拥有的C代码已经在共享库中(Windows中的.dll,Linux中的.so),那么您可以使用ctypes模块访问它。如果没有,您将不得不将C代码包装在共享库或Python扩展模块中(在C端更复杂,在Python端更简单)。

对于这类事情的一些很好的例子,我推荐J.M. Hughes撰写的O'Reilly书"Real World Instrumentation with Python"