因此,我需要使用pythonmemoryview.cast('I')
来访问FPGA,避免双重读/写选通。不要惊慌,您不需要FPGA来回答下面的问题...
所以这里有一个失败的python示例("testfile"可以是这里的任何文件 - 只是超过20字节 - 但对我来说,最终它将是一个IO映射的FPGA硬件(:
#!/usr/bin/python
import struct
import mmap
with open('testfile', "r+b") as f:
mm=memoryview(mmap.mmap(f.fileno(), 20)).cast('I')
# now try to assign the 2 first U32 of the file new values 1 and 2
# mm[0]=1; mm[1]=2 would work, but the following fails:
mm[0:1]=memoryview(struct.pack('II',1,2)).cast('I') #assignement error
错误是:
./test.py
Traceback (most recent call last):
File "./test.py", line 8, in <module>
mm[0:1]=memoryview(struct.pack('II',1,2)).cast('I')
ValueError: memoryview assignment: lvalue and rvalue have different structures
我不承认错误...我们在谈论什么"不同的结构"??
如何重写赋值表达式的右侧以使其正常工作? 更改左侧对于 FPGA 来说将失败...因为似乎其他任何东西都会向硬件产生错误的信号......
更一般地说,我应该如何重新设计我的 32 位整数数组以适应作业的左侧......?
是的,@Monica是对的:错误比我简单。左手边的切片确实是错误的。