在调试DP1.4时,使用selftest无法通过的问题,记录如下
问题描述
项目当中要使用DP1.4,SDK中的代码当然是老套路:
XDpTxSs_LookupConfig();
XDpTxSs_CfgInitialize();
XDpTxSs_SelfTest();
结果在XDpTxSs_SelfTest()失败,导入官方例程xdptxss_selftest_example跑起来也一样,在XDpTxSs_SelfTest此函数中会失败,如图
debug一步步跟进DpTxss_SelfTestExample->XDpTxSs_SelfTest->XDp_SelfTest->XDp_TxSelfTest
跟到此函数下发现问题如下三图
图1
图2
图3
由以上代码可知:寄存器在0x800000F8处需要为0x07000000,在0x800000FC处为0x01020A00的时候,该函数才会不返回failure,但是通过Memory窗口看到的是:
这两个值就是不对。
解决问题
查看PG299可以看到
在0x800000FC这个地址值的描述上,官方文档与在Memory窗口看到的值是一致的为0x01040000,文档中没有找到对0xf8这个寄存器的描述,但还是有信心认为是与Memory窗口中看到的一致(软件版本问题?官方代码bug?既然0xfc这里不对,那0xf8也有可能不对)。
于是对Xdp_selftest.c作以下更改:
然后官方例程运行成功: