STL_UTILITY_assertEvenAddress:
MOVL ACC,@XAR4
AND @AL,#0x1
NOT AL
AND @AL,#0x1
LB *XAR7
SelfTestStatus = STL_CRC_TEST_testRam((uint32_t *)0x8C01,(uint32_t *)0x8FFF,(uint64_t *)&gGoldenCRC[2]);
比如使用0x8C00会无法通过。但是0x8C01就可以
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.
STL_UTILITY_assertEvenAddress:
MOVL ACC,@XAR4
AND @AL,#0x1
NOT AL
AND @AL,#0x1
LB *XAR7
SelfTestStatus = STL_CRC_TEST_testRam((uint32_t *)0x8C01,(uint32_t *)0x8FFF,(uint64_t *)&gGoldenCRC[2]);
比如使用0x8C00会无法通过。但是0x8C01就可以
你好,我这边的工程师测试后没能复现你的问题,他在自己的工程中尝试了相同的奇数地址,程序正确地跳出函数并在 STL_UTILITY_assertEvenAddress 运行后返回错误。
当你使用偶数地址运行时会发生什么?是在其中一个assert中出问题还是一直运行到golden CRC comparison才出问题?
FFC XAR7,STL_UTILITY_assertEvenAddress
CMPB AL, #TEST_FAILED ;这里跳出故障
B end_RAM_CRC_test,EQ ; Exit if start address is not even
开始地址使用偶数跳出,奇数不跳出(使用单步调试观察)
SelfTestStatus = STL_CRC_TEST_testRam((uint32_t *)0x008000,(uint32_t *)0x0080FF,(uint64_t *)&gGoldenCRC[0]);
gStructCrcResult.l0RamCrc = STL_CRC_TEST_getCrcResult();
CRC已经对了,但还是一直通不过
当单步执行 STL_UTILITY_assertEvenAddress 时,是否还观察了 CCS 中Core Register 中的 XAR4 和 ACC 以确保它们包含预期值?
你说的 CRC 校验正确,意思是 l0RamCrc == gGoldenCRC[0]?
请注意,在代码中设置断点和单步执行会影响用于计算 CRC 的 PSA,因此如果 CRC 检查确实失败,应该确保让其自动运行。不过这可能不是问题所在,但最好注意一下这一点。
目前发现问题在于0x008000-8100这个区间内导致的异常,83FE-8FFF是可以正常使用的,就是83FE-9FFF区间中好像是破坏性测试所以导致的程序异常崩溃
方便详细说明一下异常具体是什么样的异常吗?
以及,我的提问中Core Register 中的 XAR4 和 ACC的值是怎么样的?
地址设置为8C00-8FFF时,异常表现:首地址奇偶判断不正常,TEST_FAILED1已设置为1,正常运行时发现函数读出值是1,与TEST_FAILED1匹配,单步调试时发现确实判断不通过跳出,且函数读出值为1。函数:STL_CRC_TEST_testRam((uint32_t *)0x008C00,(uint32_t *)0x008FFF,(uint64_t *)&gGoldenCRC[0])

OK,那我这边先处理另外两个,这个先为你关闭了,后续还有问题的话最好新建一个帖子。
之前的帖子我按发布的时间顺序来处理,还请留意对应帖子的回复