【发布时间】:2013-02-07 21:30:27
【问题描述】:
我正在尝试将 C 库(beaglebone PRU 驱动程序 prussdrv.c)与 Python 连接。我要访问的特定函数返回一个 mmap 指针,如下所示:
int __prussdrv_memmap_init(void) {
prussdrv.pru0_dataram_base = mmap(0, prussdrv.pruss_map_size, PROT_READ | PROT_WRITE,
MAP_SHARED, prussdrv.mmap_fd, PRUSS_UIO_MAP_OFFSET_PRUSS);
...
int prussdrv_map_prumem(unsigned int pru_ram_id, void **address) {
switch (pru_ram_id) {
case PRUSS0_PRU0_DATARAM:
*address = prussdrv.pru0_dataram_base;
break;
prussdrv_map_prumem (DATARAM[PRU_NUM], &pruDataMem);
pruDataMem_byte = (unsigned char*) pruDataMem;
我想封装 pruDataMem 或 pruDataMem_byte 并将其作为 mmap 对象传递给 Python。有没有一种简单的方法可以做到这一点?我查看了 capsule 和 ctypes,但它们似乎没有达到我想要的效果?
【问题讨论】:
-
它是否必须是一个您可以操作的
mmap对象,或者只是一些类似缓冲区的东西,您可以像使用@ 一样将其视为字符串/列表/迭代器987654323@?
标签: python c pointers mmap word-wrap