我試圖用Python與C庫(beaglebone PRU驅動程序prussdrv.c)進行接口。特定的功能我想要訪問回報MMAP指針,如下圖所示:將mmap指針從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並將它傳遞給Python作爲一個MMAP對象。有沒有一個簡單的方法來做到這一點?我看過膠囊和ctypes,但他們似乎沒有做我想找的東西?
它是否必須實際上是一個你可以操作的'mmap'對象,或者只是一些類似緩衝區的東西,你可以像使用'mmap'一樣的方式將它視爲字符串/列表/迭代器? – abarnert