Rga*_*ddi 5 python device-driver
有没有人想出一个在Python下使用内存映射设备寄存器的好解决方案?理想情况下,某些东西可以让我使用命名寄存器,甚至在这些寄存器中命名位域,这种方式不完全是临时的?理想的跨平台,但我只能使用Linux.
似乎mmap和ctypes Structs的某些组合可能能够处理它,但是a)Structs似乎不允许你指定位域位置(它们也不是在C中,所以......),和b)我可以弄清楚如何在mmap上删除Struct映射.
或者我从根本上问我如何使用圆锯作为螺丝刀?(即它没有这样做,为什么你想要?)
C中的一个例子(未经测试,不使用)将是这样的:
volatile struct {
uint32_t mfr_id;
uint32_t prod_id;
uint32_t ctl;
uint32_t dummy[5];
...
} * pDev;
hFile = open('/dev/bridge', O_RDWR)
pDev = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, hFile, 0);
assert(pDev->mfr_id == 0x12345678);
assert(pDev->prod_id == 0xDEADBEEF);
uint32_t temp = pDev->ctl;
temp &= CTL_ACCESS_MASK | CTL_SHIFT_MASK;
temp |= CTL_ACCESS_RO | CTL_SHIFT_5;
pDev->ctl = temp;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |