This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

66ak读取寄存器值到临时变量出错



大家好

我在调试66AK SRIO时发现一个奇怪的问题,在调用Srio_sockBind_DIO()时绑定失败,单步调试发现在函数调用如下CSL时有问题,

CSL_IDEF_INLINE void CSL_SRIO_GetDevideIDCSR

(

       CSL_SrioHandle hSrio,

        Uint8*                    baseID8Bit,

        Uint16*                  baseID16Bit

)

{

           Uint32 value = hSrio->RIO_BASE_ID;         //这里的hSrio->RIO_BASE_ID值是0x00ABBEEF,执行完这一步后value的值确是另外一个值,

            *baseID8Bit    = CSL_FEXT(value, SRIO_RIO_BASE_ID_BASE_ID);   //这时baseID8Bit的值也就是value移位后的值,是错的

            *baseID16Bit  = CSL_FEXT(value, SRIO_RIO_BASE_ID_LARGE_BASE_ID);

}

将函数改成:(这样就对了)

{

            *baseID8Bit    = CSL_FEXT(hSrio->RIO_BASE_ID, SRIO_RIO_BASE_ID_BASE_ID);

            *baseID16Bit  = CSL_FEXT(hSrio->RIO_BASE_ID, SRIO_RIO_BASE_ID_LARGE_BASE_ID);

}

这样*baseID8Bit的值才是0xAB, *baseID16Bit = 0xBEEF

单步执行进入几个CSL函数都有这个问题,请问这是什么原因造成的?