2013-05-04 2 views
0

제 목표는 파이썬 스크립트를 사용하여 FPGA의 일부 레지스터를 읽는 것입니다. 하드웨어 (FPGA)에서 일부 레지스터를 구현했으며 레지스터를 읽으려고합니다. C에서 레지스터를 읽을 수있는 일부 프로그램이 있습니다. 하지만 필자는 python으로 읽기/쓰기 프로그램을 작성해야하므로 (python으로 작성된) 내 verifcation 환경과 통합 할 수 있습니다. 나는 파이썬 (초보자 수준)에 익숙하지 않으므로 제안과 의견을 통해 나를 안내 할 수 있기를 바랍니다. 아래는 내가 구현 한 코드입니다.파이썬을 사용하여 hw에서 레지스터 읽기

이것은 내 코드입니다.

#!/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) 
+0

코드가 작동합니까? 당신은 실제로 문제가 무엇인지 말하지 않았습니다. –

답변

1

순수 파이썬에서는이 작업을 수행 할 수 없습니다. 가지고있는 C 코드가 이미 공유 라이브러리 (Windows의 경우 .dll, Linux의 경우 .so)에 있으면 ctypes 모듈을 사용하여 액세스 할 수 있습니다. 그렇지 않다면, 공유 라이브러리 나 파이썬 확장 모듈 (파이썬 측에서는 C 코드가 더 복잡하다)에서 C 코드를 래핑해야 할 것이다.

이런 종류의 좋은 예를 보려면 J.M. Hughes의 O'Reilly book "Real World Instrumentation with Python"을 권장합니다.

+0

고마워요. 리. 도와 주셔서 감사합니다. 나는 ctypes를 시도 할 것이다 .. – user2349460

+0

첫 번째 링크를 제거한 이유는 불법 복제 된 전자 책을 호스팅하는 사이트에 있다는 것입니다. 우리는 이것을 허용하지 않으므로, O'Reilly의 실제 사이트를 지적했습니다. –

+0

내게 합법적 인 표정을 지어 주었지만 그 말을 듣겠습니다. –

관련 문제