您的位置:控制工程论坛网论坛 » 嵌入式系统 » 关于niosII IDE中存储空间的优化

zhiy66

zhiy66   |   当前状态:在线

总积分:6528  2024年可用积分:0

注册时间: 2007-12-18

最后登录时间: 2012-01-11

空间 发短消息加为好友

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

zhiy66  发表于 2009/1/9 15:38:11      849 查看 0 回复  [上一主题]  [下一主题]

手机阅读

最近一直在做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即可完成优化,编译后可以比较和优化前的存储器的利用,你会发现工程对存储器的使用减少很多。

1楼 0 0 回复