python将一些数据读取两次设备文件

python将一些数据读取两次设备文件,python,linux,file-io,linux-device-driver,bit,Python,Linux,File Io,Linux Device Driver,Bit,我正在zedboard上运行Xilinux(或多或少是Ubuntu12.04)。Zedboard将arm与fpga相结合 现在,我们已经编写了一个python脚本,从设备驱动程序(/dev/xillybus\u read\u 32)读取数据 现在我知道我收到的数据是完整和正确的(我使用了一个预写程序,将所有数据存储在一个转储文件中,我将这个转储文件分为几个帧,并检查内容是否正确(每个帧都包含一个加法,很容易检查) 现在,当我尝试使用以下python脚本从设备驱动程序接收数据时: #Read da

我正在zedboard上运行Xilinux(或多或少是Ubuntu12.04)。Zedboard将arm与fpga相结合

现在,我们已经编写了一个python脚本,从设备驱动程序(/dev/xillybus\u read\u 32)读取数据

现在我知道我收到的数据是完整和正确的(我使用了一个预写程序,将所有数据存储在一个转储文件中,我将这个转储文件分为几个帧,并检查内容是否正确(每个帧都包含一个加法,很容易检查)

现在,当我尝试使用以下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()
我收到了所有的数据,但有时我会得到我的32位字两次。就像它有时会读32位字两次。我没有丢失数据,它只是读了32位字两次。非常奇怪


Thnx

你能展示你真正使用的代码吗?这个应该在“比较goldendata和frame”(这是一个注释,对吧?)。似乎您可以使用一个独立脚本来验证此问题,该脚本从设备读取
CONST_FRAMESIZE/4
32位单词并打印出来,以查看是否实际获得了两次单词。如果是,则可能是设备驱动程序问题。编辑了“将goldendata与帧进行比较”,设备驱动程序工作正常。如果我使用例如,cat/dev/xillybus_read_32>dumpfile。我没有两次收到任何位字。我发布之前的代码只创建了一个包含正确数据的goldendata文件。使用
cat/dev/xillybus_read_32>dumpfile
与编写一个独立的Python脚本不同,该脚本通过从设备读取数据并打印数据而不做任何事情。整个我的想法是创建显示问题的最简单的东西,然后使用它进行调试。我知道设备驱动程序是正确的,它是来自xillybus.com的一个项目。我不明白的是为什么python脚本不能正常工作。如果我使用预写的fifo.c(来自xillybus.com),它工作正常,我收到的所有数据都是正确的。