【问题标题】:Getting Bus Error when trying to access size more than 4000 bytes through /dev/mem尝试通过 /dev/mem 访问超过 4000 字节的大小时出现总线错误
【发布时间】: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


    【解决方案1】:

    很高兴通知我在使用 python /dev/mem 应用程序访问超过 4000 字节的数据时解决了总线错误。 首先我们需要在DTS中保留完整的BRAM,并使BRAM的状态为disabled。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 2017-06-29
      • 2019-12-25
      相关资源
      最近更新 更多