定义了某个位域占多少个bit;但是python为了字节对齐,还是会在中间插入很多0;
后来加了_pack_ = 1
对某些情况还是有0插入;_pack_ = 1
感觉有bug存在
在使用ctypes的时候, 位域必须用8bit对齐,只有人工把原来的位域拆开,才能解决这个问题
class mac_table_s(Structure):
_pack_ = 1
_fields_ =[("outer_ethtype_sel",c_uint8,3), #b0 2:0
("outer_pcp_data",c_uint8,3), #b0 5:3
("outer_pcp_operation",c_uint8,2) #b0 7:6
]
class mac_table_u(Union):
_fields_ = [("fields", mac_table_s),
("packed", c_uint32*MAC_TABLE_SIZE_32BITWORDS) ]
union 共享内存 fields
和packed
共享内存,
可以实现在fields
中定义各个位域,然后使用packed
以32bit为单位将reg写入