小弟在quartusII中建立了工程,然后在nios中写了一个很基本的程序,程序如下:
#include <stdio.h>
#include <altera_avalon_pio_regs.h>
int main()
{
IOWR(0x00003800, 0, 1);
IOWR(0x00003810, 0, 1);
IOWR(0x00003820, 0, 1);
IOWR(0x00003830, 0, 0);
IOWR(0x00003840, 0, 0);
IOWR(0x00003850, 0, 0);
/*printf("Hello from Nios II!\n");*/
return 0;
}
可是在编译的时候总是出现"onchip memory is full"
不知道问题出在哪儿,大侠们不要笑话啊,指点下小弟,谢了!
顾名思义,nochip memory满了啊
最终的代码比你实际想象的还要大很多,估计你的程序至少几十K
如果你的系统有SDRAM的话,就将代码映射到SDRAM
我用的板子只有一块cycloneII芯片EP2C20F484C8 ,板上其他的芯片另有用途,此芯片没有外连其他存储器了.这款芯片有52*4K的存储空间,我在定义onchip memory的大小时,即使选满了这么多的存储空间也会在编译的时候出现同样的错误.
那会是什么问题呢,空间应该够了啊,会不会是我的程序有问题呢?
“这款芯片有52*4K的”中的是4Kbit,26KB
如果实在不行,你可以用hello world small来写,会小得多,或者在存在片外。
我用hello world small来写了,还是不行!!!片外又没有存储器,怎么办啊,还是出现同样的错误?!
片内总共有52块ram,其中每块ram的空间是4KByte,跑这么一个简单的程序应该够了啊,是怎么回事呢,欲哭无泪啊??!!!
怎么没有人回答啊???
是4Kbit
你的问题在于不了解NiosII软件架构,所以你还没能力优化代码
Ø NiosII IDE为用户提供了很多的支持和服务,比如系统初始化、外设初始化等等操作都是由IDE自动完成的,用户可以把全部精力放在应用程序即main函数的开发上;上述自动化操作是由NiosII的软件架构决定的,它将自动加载crt0.S、alt_main.c、alt_sys_init.c、相关外设驱动以及中断处理函数等代码到最终的可执行文件,从而使得最终的代码量大大超出了用户的想象;
更详细的介绍请再过几天参考:【置顶】NiosII之常见问题解答静态加密版本-2007.08.31更新
过几天我将把这个问题添加进去!
恩,用hello world small 代码会很小.
[此贴子已经被作者于2007-9-15 21:08:19编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |