热度 19
2015-5-21 21:23
3337 次阅读|
1 个评论
关于Quartus II 13.0对应开发NIOS II软件程序时报错Symbol 'NULL' could not be resolved问题的解决方法。 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是 Quartus II 13.0 的版本,一路下来,在 Qsys 系统中搭建 NIOS II 片上系统,在 Quartus II 中建立工程文件等等过程,没有太多的问题,这里暂且不表。只是在 NIOS II Software build tools for Eclipse 中进行软件开发时,一个非常让人不解的问题就是:我在工程向导中创建一个 Hello World 的模版工程,然后编译下载运行都没问题。然后关闭 NIOS II Software build tools for Eclipse 软件,再次打开时,结果就冒出一大堆错误,错误描述如下: 在 alt_sys_init.c 这个文件中,报错 “ Symbol 'NULL' could not be resolved ” ,此报错主要集中在分配设备存储( Allocate the device storage )这一部分,例如,我的系统中报错如下所示: 提示我 NULL 未定义。可是 NULL 明明是在 stddef.h 这样一个标准头文件中明确定义了的,怎么还会发生这种情况呢? 另外,由于本系统中使用到了 UART IP ,所以系统在自动生成时也提供了对应的驱动,打开一个驱动程序 “altera_avalon_uart_write.c”, 发现同样有报错的地方,这里主要提示: “ Symbol 'O_NONBLOCK' could not be resolved ” ,其它文件中也有类似的提示,这就让人很是纳闷了。 O_NONBLOCK 这个宏定义明明是在 ” sys/_default_fcntl.h ” 这个文件中定义了的,为什么总是说找不到呢? 参考网上的方法,说是需要手动添加包头文件包含路径,怀着试一试的心态,我打开了 bsp 工程的选项对话框(选中 XXX_bsp 工程,单击右键,选中 properties ),在打开的对话框中,切换到 C/C++ general 选项下的 paths and Symbols 选项栏,选择 GUN C ,在里面添加了三个路径 /hello_bsp/HAL/inc/os /hello_bsp/HAL/inc/priv /hello_bsp/HAL/inc/sys 如下图所示: 添加完成之后点击 Apply ,此时会弹出如下对话框: 点击 YES 即可,然后点击 OK 关闭设置窗口。 此时对 XXX_bsp 工程执行 Clean 操作,然后 build 。待 build 完成之后,再次打开前面提到的报错的若干文件,发现没有了报错信息,关闭 NIOS II Software build tools for Eclipse 软件,然后再打开,都没有再出现这种报错信息,因此问题成功解决。 反思这个问题出现的原因,应该是 Altera 在升级该开发环境时,对 HAL/inc 文件夹下原本的文件进行了重新分组,建立了三个新的文件夹 os 、 priv 、 sys ,将以前的文件分别存在了这三个文件夹下,而在开发环境中并未对此进行设置说明,导致出错。这里仅个人猜测,与 quartus ii 9.0 软件自带的 nios ii ide 一经对比即可知晓,小梅哥电脑上硬盘空间告急,就不去装 9.0 来进行对比了,希望各位熟悉 9.0 的筒子帮我验证一下,有不同意见的请一定记得告诉我哦。 小梅哥 2015年5月21日于北京至芯科技