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.
您好
我将为 UL1998编写 RAM 测试。 下面是我的代码...
X++;
如果(pattern_index < 12)
{
ramR1_Copy =* ramR1Address_pr;
ramR1_NextCopy = * ramR1AddressNext_pr;
* ramR1AddressNext_pr = 0x00;
* ramR1Address_pr = pattern_array[pattern_index];
error_r1 =(* ramR1Address_pr!= pattern_array[pattern_index])? 对:错;
error_r1 =(* ramR1AddressNext_pr!= 0x00)? 对:错;
* ramR1Address_pr = 0x00;
* ramR1AddressNext_pr = pattern_array[pattern_index];
error_r1 =(* ramR1AddressNext_pr!= pattern_array[pattern_index])? 对:错;
error_r1 =(* ramR1Address_pr!= 0x00)? 对:错;
* ramR1Address_pr = ramR1_Copy;
* ramR1AddressNext_pr = ramR1_NextCopy;
pattern_index++;
}
否则
{
如果(x > 4000)
{
if (ramR1Address_pr ==(uint32_t *) 0x000007F2)//指针必须是偶数,因为指针增加2
{
ramR1Address_pr =(uint32_t *) 0x0000A000;
ramR1AddressNext_pr =(uint32_t *) 0x0000A002;
}否则、如果(ramR1Address_pr =(uint32_t *) 0x0000C7B2)
{
ramR1Address_pr =(uint32_t *) 0x00000128;
ramR1AddressNext_pr =(uint32_t *) 0x000012A;
}
否则
{
ramR1AddressNext_pr++;
ramR1Address_pr++;
}
pattern_index = 0;
X = 0;
}
}
其中 ramR1_Copy/ramR1_NextCopy /pattern_index 是在无需测试的 RAM 范围内定义的。
它在主循环中运行没问题。 但是,如果 illegalOperationHandler()在 ISR 函数中运行,它将被触发。
有什么建议吗?
您好!
您是否验证了它进入非法操作处理程序的确切指令是什么? 您是否已确保当前或附近发生的数组索引和地址访问有效? 当您到达非法操作处理程序时、您能看到 CPU 中的返回地址寄存器指向了哪个函数吗?
此致、
阿米尔·奥马尔
您好
您好!
将 值从临时存储恢复回原始地址期间触发非法操作处理程序
您的代码中的这一行是什么? 我不 知道这是在您上面的代码中还是在您的程序中的其他位置。
的某个值从地址0x128到0xAA 的代码是否正常工作? 非法操作处理程序始终触发地址0xAA?
这话具体是什么意思? 您是否在至中 使用指针或数组来访问0x128至0xAA 处的存储器?
您提到"CPU 中的返回地址寄存器指向了什么函数?",我不知道如何检查它
此返回地址存储在 RPC (返回程序计数器)中。 您可以在调试会话的"Registers"窗口中找到此信息。
上面的屏幕截图来自 C28x 指令集。
此致、
阿米尔·奥马尔
您好
我的代码会将测试 RAM 的内容复制到0xC7B2后面的临时 RAM 中。 该区域不通过代码进行测试。 下面是测试 RAM 中内容的代码副本、
ramR1_Copy =* ramR1Address_pr;
ramR1_NextCopy = * ramR1AddressNext_pr;
其中 ramR1_Copy 和 ram_NextCopy 是在0xC7B2后面定义的、ramR1Address_pr/ramR1AddressNext_pr 是指向测试 RAM 地址的指针。
指针用以下代码定义、Ram_Temp 2在0xC782后面。
#pragma DATA_SECTION (ramR1Address_pr、"pragma Ram_Temp 2002");
uint32_t * ramR1Address_pr =(uint32_t *) 0x00000128;
#pragma DATA_SECTION (ramR1AddressNext_pr、" Ram_Temp 452");
uint32_t * ramR1AddressNext_pr =(uint32_t *) 0x0000012A;
在 March 测试(使用12个模式写入/读取到测试地址)之后、内容被从临时区域恢复到测试地址。
* ramR1Address_pr = ramR1_Copy;
* ramR1AddressNext_pr = ramR1_NextCopy;
ramR1Address_pr 和 ramR1AddressNext_pr、增加了1
如果(x > 4000)
{
if (ramR1Address_pr ==(uint32_t *) 0x000007F2)//指针必须是偶数,因为指针增加2
{
ramR1Address_pr =(uint32_t *) 0x0000A000;
ramR1AddressNext_pr =(uint32_t *) 0x0000A002;
}否则、如果(ramR1Address_pr =(uint32_t *) 0x0000C7B2)
{
ramR1Address_pr =(uint32_t *) 0x00000128;
ramR1AddressNext_pr =(uint32_t *) 0x000012A;
}
否则
{
ramR1AddressNext_pr++;
ramR1Address_pr++;
}
pattern_index = 0;
X = 0;
}
}
您会发现代码将跳过某个地址、因为链接器信息表明不应访问跳过的地址、它不是 RAM 的地址。
关于"0x0128"至"0xAA"的含义?" 正常工作。 这意味着代码执行从0x128到0xAA 的指针的测试? 正确配置。 在这里、"??" 指针的最后2位。 该值在不同的编译中没有固定值。
我在亚洲。 是否有可能让一些来自亚洲的 FAE 来支持这个问题。 这是因为它非常紧迫。 安全代理等待我们为应用解决此问题。
您好!
我位于亚洲。 是否可能有一些来自亚洲的 FAE 来支持这个问题。
FAE 很可能也会针对这种问题通过 E2E、因此问题也会以同样的速度解决。
在 March 测试(使用12个模式写入/读取到测试地址)之后、内容被从临时区域恢复到测试地址。
* ramR1Address_pr = ramR1_Copy;
[/报价]
* ramR1AddressNext_pr = ramR1_NextCopy;根据您之前所说的、执行此代码时好像会发生非法操作处理程序、是这样吗? 如果是这样、您是否介意单步执行这里的代码以查看是否有任何 CPU 寄存器被错误地更改? 另请查看"Disassembly"窗口和"Memory Browser"、以便您验证所发生的更改符合预期。
此致、
阿米尔·奥马尔
1.内容是内存浏览器正确。
我不熟悉汇编代码。
3.我们是否可以通过在线电话核实问题?
我在 CCS 中使用"Disassembly"功能时发现了一些奇怪的地方。
我在反汇编过程中捕获了以下代码、该代码在程序运行时未出现任何问题
437 *ramR1AddressNext_pr = ramR1_NextCopy;
00AA37: 0638 MOVL ACC、@0x38
00aa38: 761F031E MOVW DP、#0x31e
00aa3a: 1EC5 MOVL *+ XAR5[0]、ACC
438 * ramR1Address_pr = ramR1_Copy;
00aa3b: 0636 MOVL ACC、@0x36
00aa3c: 1EC6 MOVL *+ XAR6[0]、ACC
我在触发非法操作的情况下运行程序时在反汇编中捕获了代码
437 *ramR1AddressNext_pr = ramR1_NextCopy;
00AA37: 0F0F Cmpl ACC、@0xF
00aa38: 0000 ITRAP0
00aa39: 0000 ITRAP0
00aa3a: 1EC5 MOVL *+ XAR5[0]、ACC
438 * ramR1Address_pr = ramR1_Copy;
00aa3b: 0636 MOVL ACC、@0x36
00aa3c: 1EC6 MOVL *+ XAR6[0]、ACC
您可以找到* ramR1AddressNext_pr = ramR1_NextCopy;已充电的程序集。
有任何意见吗?
您好!
我之前在您的帖子中看到了存储器地址、如果非法操作处理程序仅发生在地址0xAA__中、这可能必须对链接器命令文件执行某些操作、您可以在此处附加它吗? 0xAA00-0xAAFF 是在 LS5 RAM 中、所以访问应该没有问题、但我可能遗漏了其他东西。
此致、
阿米尔·奥马尔