jiangjx 发表于 2010-9-5 18:04:27

很纠结的一个问题,NIOS 程序两种写法 运行结果大不相同,令人费解!!!

写法一:
#include "system.h"
#include <stdio.h>
#include <stdlib.h>
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_jtag_uart.h"

#include "alt_types.h"

//int main (void) __attribute__ ((weak, alias ("alt_main")));

int main (void)
{
alt_u8 led = 0x2;
int i =0;

FILE* fp;

fp = fopen ("/dev/jtag_uart", "r+");
   
while (1)
{      
      if( fp )
      {
            printf("\r\nOK!");   
      }
      
      IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 7) ;      
      usleep(500000);
      IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 0) ;      
      usleep(500000);   
}

fclose(fp);

return 0;
}

写法二:

#include "system.h"
#include <stdio.h>
#include <stdlib.h>
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_jtag_uart.h"

#include "alt_types.h"

//int main (void) __attribute__ ((weak, alias ("alt_main")));

int main (void)
{
alt_u8 led = 0x2;
int i =0;

FILE* fp;
   
while (1)
{      
      fp = fopen ("/dev/jtag_uart", "r+");
      if( fp )
      {
            printf("\r\nOK!");   
            fclose(fp);
      }
      
      IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 7) ;      
      usleep(500000);
      IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 0) ;      
      usleep(500000);   
}
return 0;
}

测试平台:
1、芯片为EP2C8Q208;
2、使用外部8M SDRAM;

实验结果:
1、写法一 无论下载到板上还是debug模式,始终运行正常,1S灯闪烁一次;
2、写法二 下载到板上以后,闪烁2下就不闪了,然后一直亮,但是,使用debug时,无论多长时间,会一直闪烁。

以上测试结果经过反复论证,实在令人费解,哪位知道是何故也?

not_at_all 发表于 2010-9-6 21:19:51

弱弱问一句fp = fopen ("/dev/jtag_uart", "r+");   起什么作用的
页: [1]
查看完整版本: 很纠结的一个问题,NIOS 程序两种写法 运行结果大不相同,令人费解!!!