zedboard で xillinux (多かれ少なかれ ubuntu 12.04) を実行しています。Zedboard はアームと 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()
すべてのデータを受信しますが、32 ビット ワードを 2 回取得することがあります。32ビットワードを2回読み取ることがあるようです。私はデータを失うことはありません.32ビットを2回読み取るだけです。非常に奇妙な。
thnx