原创 关于niosII IDE中存储空间的优化

2009-1-8 21:19 3385 3 3 分类: FPGA/CPLD


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


        最近一直在做SOPC的开发,也遇到了很多问题,现在就把其中一些问题在这里供大家分享一下。

本人才疏学浅,可能这些问题有些简单,但我认为还是值得拿出来同大家分享,以防和我一样的初学者范和我同样的错误。当然高手们也可提出不同的见解。


1. 首先在刚开始用SOPC自定义外设时总是添加不到系统中。具体症状如下描述:


元件生成没有报错,也没wanning,但是当添入SOPC系统中后,下面的


infor:your system is ready to generate 提示信息消失了,generate系统后工程目录中没有生成对应外设的实例,因此在整体编译工程时会抱错。


这个问题也困扰了我很长时间,请教了很多高手也没解决问题。到最后换了一个版本后居然有可以生成了。因此,归结原因如下:7.2版本(特别是sp1)不支持,有bug;目前我用的是8.0版本,一切正常。所以,各位类似的原因很有可能就是软件的问题,并不是程序得问题。但是也不能把所有的问题都归到软件上,首先还是要搜集各方面的信息,确保自己的程序没有错误。


2.  下面进入今天的主题---关于niosII IDE中存储空间的优化


最近在做niosIDE上面的编程时总是报错,提示存储空间不足(本人由于一系列原因没法添加sdram,只能用onchip_ram/rom。)比如:


ld: region onchip_mem is full (sopc.elf section .text). Region needs to


be 920 bytes larger.


ld: section .rodata [00001020 -> 0000102f] overlaps section .text [00001020 -> 00002397]
ld: section .rwdata [00001030 -> 000019c3] overlaps section .text [00001020 -> 00002397]



经过高人的建议后我对nios 工程进行了优化,以减少存储空间的占用。以下是优化的效果:


 


优化前:


 

**** Build of configuration Debug for project sopc ****


 


make -s all includes


Compiling main.c...


Linking sopc.elf...


Info: (sopc.elf) 7760 Bytes program size (code + initialized data).


Info:            432 Bytes free for stack + heap.


Creating generated_app.sh...


Build completed in 3.828 seconds


 


优化后:


 

**** Build of configuration Debug for project sopc ****


 


make -s all includes


Compiling main.c...


Linking sopc.elf...


Info: (sopc.elf) 1512 Bytes program size (code + initialized data).


Info:            6680 Bytes free for stack + heap.


Creating generated_app.sh...


Build completed in 4.172 seconds


 

很明显,优化后需求的空间明显变小。优化前存储空间剩余432bytes,优化后剩余6680bytes,这已经是非常可观的数字了。


下面就开始讲述如何优化了:


 


(1)右键工程,选择proterties,选择c/c++ Build.在NiosII Coompiler选项卡中选择General,在Optimization Levels选择优化等级,如Optimize size(-os)。


 


(2)同样步骤选择***_syslib工程库,选择优化等级。


(3)再在***_syslib工程属性中选择system Library选项,选择Reduced device drivers和small C library选项,勾除Clean exit(flush buffers)。


单击OK即可完成优化,编译后可以比较和优化前的存储器的利用,你会发现工程对存储器的使用减少很多。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条