我正在尝试编写一个 python 程序来读写硬件中的寄存器。我的阅读写得很好,但我的写作不起作用。我认为问题出在我执行 struct.pack 时。你们谁能告诉我为什么。如果有更好的方法通过设备描述符写入寄存器,如果您可以分享,那将是非常棒的。我已经尝试过(ctypes)并且我更喜欢使用本机 python 代码来进行读/写。谢谢你的时间..
#!/usr/bin/python
import os
from struct import *
from fcntl import *
SIOCDEVPRIVATE = 35312
NF10_IOCTL_CMD_READ_STAT = SIOCDEVPRIVATE + 0
NF10_IOCTL_CMD_WRITE_REG = SIOCDEVPRIVATE + 1
NF10_IOCTL_CMD_READ_REG = SIOCDEVPRIVATE + 2
addr= '0x7d400000'
value= '0x1234'
# Function for writing
f = open("/dev/nf10", "w")
arg = (int(addr, 16) << 32) + int(value, 16)
arg = pack("q",arg)
ioctl(f, NF10_IOCTL_CMD_WRITE_REG, arg)
f.close()
# Function for reading
f = open("/dev/nf10", "r+")
arg = pack("q",int(addr, 16))
value = ioctl(f, NF10_IOCTL_CMD_READ_REG, arg)
value = unpack("q", value)
value = value[0]
value = hex(value & int("0xffffffff", 16))
print value
f.close()