我在 zedboard 上运行 xillinux(或多或少 ubuntu 12.04)。Zedboard 结合了 arm 和 fpga。
现在已经编写了一个从设备驱动程序(/dev/xillybus_read_32)读取数据的python脚本。
现在我知道我收到的数据是完整且正确的(我使用了一个预先编写的程序,将所有数据存储在一个转储文件中,我将此转储文件拆分为帧并检查内容是否正确(每个帧都包含一个附加项,因此很容易检查)。
现在,当我尝试使用以下 python 脚本从设备驱动程序接收数据时:
#Read data
#Framesize
CONST_FRAMESIZE = (640*480*16)/8
#Info
frame_true = 0
frame_false = 0
#Open file
pipe_in = open("/dev/xillybus_read_32","r")
count = 0
count_false = 0
for z in xrange(1000):
frame = "frame" + str(count) + ".raw"
pipe_out = open(frame,"wb")
for r in xrange(CONST_FRAMESIZE/4):
value = pipe_in.read(4)
pipe_out.write(value)
pipe_out.close()
#Compare goldendata with frame
if filecmp.cmp("goldendata",frame):
frame_true = frame_true + 1
if count >= 1:
os.remove(frame_last)
frame_last = frame
else:
print "frame_true:", frame_true
pipe_in.close()
sys.exit()
#frame_false = frame_false + 1
#os.remove(frame)
count = count + 1;
#Close opend file
pipe_in.close()
我收到了所有数据,但有时我得到了 2 次 32 位字。就像它有时会读取两次 32 位字一样。我不会丢失数据,它有时只是读取 32 位数据 2 次。很奇怪。
谢谢