大家好
我在调试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函数都有这个问题,请问这是什么原因造成的?