0

私の目的は、Python スクリプトを使用して FPGA 上のいくつかのレジスタを読み取ることです。ハードウェア (FPGA) にいくつかのレジスタを実装しましたが、レジスタを読み取ろうとしています。レジスタを読み取ることができる C のプログラムがいくつかあります。しかし、検証環境 (python で記述) と統合できるように、読み取り/書き込みプログラムを 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)
4

1 に答える 1

1

純粋な Python ではそれを行うことはできません。C コードが既に共有ライブラリ (Windows では .dll、Linux では .so) にある場合は、ctypes モジュールを使用してアクセスできる場合があります。そうでない場合は、その C コードを共有ライブラリまたは Python 拡張モジュールのいずれかにラップする必要があります (C 側ではより複雑になり、Python 側ではより単純になります)。

この種の良い例として、JM Hughes によるO'Reilly の本「Real World Instrumentation with Python」をお勧めします。

于 2013-05-04T09:54:17.643 に答える