The KS8695P System Configuration Registers are 32 bits wide.
They are 32-bit word aligned and must be accessed using word instructions.
Интерпретация прочитанных данных
Код:
В реализации ioctl, где эти регистры читаются:
Код:
UINT32 *pReg; // unsigned int *
// ...
pReg = pIoCtrl->u.uData;
for (i = 0; i <= REG_SNMP_MAX ; i++, pReg++) {
*pReg = swReadSNMPReg(Adapter, i);
DelayInMicroseconds(10); }
// ...
pReg = pIoCtrl->u.uData;
for (i = 0; i <= REG_SNMP_MAX ; i++, pReg++) {
*pReg = swReadSNMPReg(Adapter, i);
DelayInMicroseconds(10); }
Но когда я в своей программе вывожу это на печать:
Код:
UINT32 *pReg;
// ...
pReg = pIoCtrl->u.uData;
for (j = 0; j <= REG_SNMP_MAX ; j++, pReg++) {
printf("0x%02X:%u\t",j,*pReg);
if( !((j+1)%4))printf("\n");
}
// ...
pReg = pIoCtrl->u.uData;
for (j = 0; j <= REG_SNMP_MAX ; j++, pReg++) {
printf("0x%02X:%u\t",j,*pReg);
if( !((j+1)%4))printf("\n");
}
есть подозрения, основанные на работе другой программы, что цифры выводятся не те (сравнить выводы двух программ напрямую нельзя, т.к. значения меняются).
Я что-то делаю неправильно?