难道这个newlib的stdc++本身有问题?我怀疑是链接脚本里没有加什么段,导致没有链接进代码中,但是在ld的手册上并没有找到相关的说明,贴出我的链接脚本供各位大神分析:
.text :
{
. = ALIGN(4);
_stext = .;
KEEP((.isr_vector)) / Startup code /
. = ALIGN(4); (.text) / remaining code /
(.text.) / remaining code /
(.rodata) / read-only data (constants) / (.rodata) (.glue_7)
(.glue_7t) (.gnu.linkonce.t*)
*(.ARM.extab* .gnu.linkonce.armextab.*)
*(.gcc_except_table)
/* section information for module symbol */
. = ALIGN(4);
__rtmsymtab_start = .;
KEEP(*(RTMSymTab))
__rtmsymtab_end = .;
/* section information for finsh shell */
. = ALIGN(4);
__fsymtab_start = .;
KEEP(*(FSymTab))
__fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
. = ALIGN(4);
/* section information for initial. */
. = ALIGN(4);
__rt_init_start = .;
KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
PROVIDE(__ctors_start__ = .);
/* old GCC version uses .ctors */
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
PROVIDE(__ctors_end__ = .);
. = ALIGN(4);
/* .data section which is used for initialized data */
PROVIDE(__dtors_start__ = .);
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
PROVIDE(__dtors_end__ = .);
. = ALIGN(4);
_etext = .;
} > FLASH = 0
关于407做voip资源的问题,现在实现的一对一通话407资源够用(必须用上ccm内存),用speex编解码也没有问题,很流畅。考虑我们这个项目需要多方通话,407的ram就不够用了,因此用了外部的sram。用外部sram后speex编解码就不行了,延迟越来越大,看来内部ram和外部ram对浮点运算性能的影响还是很大的,改用pcma编码就没问题,毕竟只是在局域网内通话,网络带宽不是问题。