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.

In Reset



您好~我的一个多核程序,跑着跑着就会出现如图所示的情况,但我在程序中并没有进行Reset的操作,觉得可能是我使用的地址越界,给相应的Reset寄存器进行了赋值,但是我并没有查到相应的寄存器的地址。希望各位能指点下,帮忙分析是什么原因?如果跟我想的一样的话,希望能将相应的地址告诉我一下。谢谢~

  • 可能是代码跑飞了所导致的,可以在代码中加入打点信息,先判断在代码跑飞的范围,然后一点点定位。

    控制CPU local reset的寄存器是MDCTL23-28,具体地址对于不同芯片是不同的,

    6670底下是从0x02350a5c到0x02350a70

    其他芯片可以从芯片手册中找到

  • 您好~谢谢回答!我现在基本将问题定位在SRIO的DOORBELL中断服务函数中,但当我进入DOORBELL中断服务函数,单跑一次的话,并没问题。但是如果继续往下跑,一次次地相应DOORBELL中断,就会出现如图情况,所以情况并不好定位。我用的是6678,翻了下文档,并没有找到相应的地址,不知道哪个文档能找到相应地址,谢谢~

  • MDCTL寄存器的偏移地址在sprugv4a PSC手册中Table3.1有定义,

    要计算出寄存器的绝对地址,还需要参考6678 data manul中table2-2 memory map summary中PSC的起始地址(现在是0x02350000)

  • 好的,谢谢~除了可能是地址越界,将这些寄存器赋值,还有别的原因么?按照我的CMD设定,我觉得地址应该是不会越界的!谢谢啊~

  • 你上面提到的Doorbell中断一直进的问题,是不是因为在中断中没有清楚SRIO的一些中断指示状态位,

    或者是发送端发的时候有问题,从现象看你的情况很像是代码跑飞。

  • 您好~谢谢!上面我所说的DOORBELL一直进是正确的,SRIO的中断每次都有清除。发送端因为发的也没问题!代码跑飞可能的原因有哪些呢??谢谢~

  • 你好,

           代码跑飞的原因一般有:

           (1) 代码访问了空指针

           (2)代码段被改写

           (3)堆栈溢出

          你现在使用的doorbell中断的频率是多大啊,会不会有可能因为doorbell频率太快,CPU中断响应不过来?