【发布时间】:2021-08-18 06:51:30
【问题描述】:
Python /dev/mem 应用程序问题 我们的项目是通过socket应用访问BRAM。我正在尝试通过 python /dev/mem 文件对 BRAM 进行读写。当我尝试访问超过 4000 字节的大小时,出现总线错误。而且我没有获得正确的 API 来将数据写入 BRAM。
我期待一个合适的 /dev/mem 应用程序对 BRAM 执行读写操作
我的python代码如图所示
从 BRAM 读取数据
base_addr = raddr
virt_base = base_addr & ~(mmap.PAGESIZE - 1)
virt_offset = base_addr - virt_base
length = size
mmap_file = os.open('/dev/mem', os.O_RDWR | os.O_SYNC)
mem = mmap.mmap(mmap_file, length + virt_offset,
mmap.MAP_SHARED, mmap.PROT_READ |
mmap.PROT_WRITE, offset=virt_base)
rdbuf = np.frombuffer(mem, np.uint32, length >> 2, virt_offset)
将数据写入 BRAM
base_addr = 0xa0000000
virt_base = base_addr & ~(mmap.PAGESIZE - 1)
virt_offset = base_addr - virt_base
length = size
mmap_file = os.open('/dev/mem', os.O_RDWR | os.O_SYNC)
mem = mmap.mmap(mmap_file, length + virt_offset,
mmap.MAP_SHARED, mmap.PROT_READ |
mmap.PROT_WRITE, offset=virt_base)
array = np.frombuffer(mem, np.uint32, length >> 2, virt_offset)
array[0:length] = data
问候,
内存
【问题讨论】:
标签: python python-3.x numpy mmap