gpt4 book ai didi

python - Python 中的内存映射寄存器

转载 作者:太空狗 更新时间:2023-10-30 01:38:43 25 4
gpt4 key购买 nike

有没有人提出在 Python 下使用内存映射设备寄存器的好的解决方案?理想情况下,允许我以一种不完全是临时的方式使用命名寄存器,甚至这些寄存器中的命名位域的东西?理想情况下是跨平台的,但我只能使用 Linux。

似乎 mmap 和 ctypes Structs 的某种组合可能能够处理它,但是 a) Structs 似乎不允许您指定位域位置(在 C 中也不允许,所以...),以及 b ) 我不知道如何将结构映射放在 mmap 之上。

或者我是在问如何将圆锯用作 Screwdriver ? (即它不会那样做,你到底为什么要这么做?)

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;

最佳答案

我认为最简单的方法是用 C 编写访问器函数并从 Python 调用它们(在 ctypes 和 Cython 之间,从 Python 调用 C 代码并不难)。

关于python - Python 中的内存映射寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com