这是因为名字不一致引起的比如,在生成SOPC系统时,双击PIO(Parallel I/O)(在Avalon Modules -> Other 下),为系统添加输出接口,你没有把该组件改名成LED_PIO,而是保留了原始的名字:PIO_0;但你又通过IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);这个函数肯定是你从别人的工程复制过来的,来向该组件写入数据,就会导致上述错误。
打开Qsys,open?之前的.qsys文件,发现确实pio IP核没有改名字,所以在eclipse中system.h头文件,打开可以发现
#define ALT_MODULE_CLASS_pio_0 altera_avalon_pio
#define PIO_0_BASE
0x1800
是这样的,所以这就解释了这一系列问题。
解决办法:1.可以修改sopc系统,为该PIO改名为LED_PIO ;(这个比较麻烦,还得另外构建一遍nios,不推荐)
2.IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE , led);这样就行了,把LED_PIO_BASE改为PIO_0_BASE