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