Board logo

标题: 求助在继续 [打印本页]

作者: xrb11    时间: 2007-2-8 18:30     标题: 求助在继续

EP1C12,NIOS s系统,系统上电后,有时运行,有时候不启动,加看门狗也没用,会是什么原因?我看了时钟信号,是好的。以前用nios e系统,同样程序电路,没有出现过这样的问题,急急求助诸位大虾。

另外,不知nios系统一般如何读写外部地址,没有如C51,DSP等中的WE信号,地址线,数据线,完全靠pio控制,好像不方便,请大虾解疑。


作者: caopengly    时间: 2007-2-8 19:40

“系统上电后,有时运行,有时候不启动,加看门狗也没用”

你的思路可以使先硬件到软件。

由于sopc给你建的系统,所以你可以先建一个最小的片上系统。然后,看有没有问题。然后将外设一个一个往上加。然后你比较你在硬件上与nios e的区别,如pll的时间延时有没有考虑。你要培养一种调试,找问题的技能。

在nios software tutorial.pdf上面有一些定义了的API。不过你可以自己用nios的汇编写一些api,然后再封装成api,你就会觉得方便了。


作者: xrb11    时间: 2007-2-10 00:41

老兄,“pll时间延时”是什么意思?我将pll输出引到输出管脚察看,100M时钟始终是存在的。

看门狗确实没起作用,请看下面的精简程序,用PSEVEN.7管脚控制LED闪烁一阵子,然后停止闪烁,通过WATCHDOG复位重启,看不到结果。程序编译通过,并已写入EPCS4,难道串行器件不支持复位重启?非常郁闷,有劳各位大虾指点一二。

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"
#include "alt_types.h"
#include "alt_irq.h"
volatile alt_u8 count,try=0;
alt_u16 in = 0;
int main (void)
{
  IOWR_ALTERA_AVALON_TIMER_CONTROL(WATCHDOG_BASE,ALTERA_AVALON_TIMER_CONTROL_START_MSK); 
  for(in=0;in<10000;in++)
    {
      IOWR_ALTERA_AVALON_TIMER_PERIODL(WATCHDOG_BASE,0X1234); 
      try=try+0x80;
      IOWR_ALTERA_AVALON_PIO_DATA(PSEVEN_BASE, try);
     }
  while (1)
     {
       in=0;
       in=0;
      }
}


作者: caopengly    时间: 2007-2-10 15:31

pll时间延时

   pll输出clk和输入clk之间有一个延时,容易使cpu reset出错。

你可以先不加看门狗,因为你的目的不是看看门狗能不能运行,而是看系统能不能稳定,你加了看门狗(先不管正确否)在这样的led闪烁程序中就不能判断系统能不能稳定了。如果看门狗的设置有问题就不能判断哪里出了问题了。

你先降点频,循环闪行不行。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0