TI专家、各位朋友:
通过如下代码读到ALIVE寄存器的值是0,而实际值是1(后面有表述)
unsigned int MDIOPhyAliveStatusGet(unsigned int baseAddr) { unsigned int state=0; state=(HWREG(baseAddr + MDIO_ALIVE)); printf("address=%x\n",baseAddr + MDIO_ALIVE); printf("state=%d\n",state); return state; }
设置断点,打印信息如下:
问题是:读到state的值是0,而查看寄存器和通过memory browser看到的值都是1,非常奇怪的问题,ALIVE寄存器的地址和手册对照了下,也没有什么问题。
Tony Tang:
是不是工程序的堆栈不够啊?
在程序进来位置设个断点,看State的物理地址在哪,然后单步看这个物理地址的值的变化。