完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位高手,小弟正在基于DSP开发语音处理功能,采集语音数据,进行压缩、解压缩和播放。第三方的DEMO中提供了语音采集与播放代码,已经测试通过。从网上下载了G.711压缩解压缩算法源码,将压缩解压缩代码添加到第三方的DEMO中,编译的时候提示“program will not fitinto available”。修改链接命令文件28335_RAM_lnk.cmd,将其中一行 “RAML:origin= 0x008000,Length = 0x004000”改为 “RAML:origin= 0x008000,Length = 0x00A000” 重新编译通过。点击DEBUG按钮进行调试,系统提示:“loader:oneor more sections of your program falls into a memory region that is notwritable”。请教其中的原因。谢谢!语音采集、压缩、解压缩以及播放部分代码如下: interrupt void ISRMcbspSend(void) { inttemp; //int encode_buf[500]; unsignedcharencode_buf[512]; int*outputSizeBytesE; int*outputSizeBytesD; PieCtrlRegs.PIEACK.all = PIEACK_GROUP6;//中断组6的请求被发送至CPU,其他中断被阻塞 temp=McbspaRegs.DRR1.all;//接收音频数据 /*设置接收缓冲区的指针,缓冲区最大值为500*/ DA_rptr++; if(DA_rptr>=500) { //g711_encode->Encode(ADbuf, 500 , encode_buf , outputSizeBytes); DA_rptr=0; } g711_encode->Encode(&temp , 2 , encode_buf ,outputSizeBytesE); g711_encode->Decode(encode_buf, *outputSizeBytesE , &temp,outputSizeBytesD); ADbuf[DA_rptr]=temp; //保存录音数据 if(play_mode==0) McbspaRegs.DXR1.all = y; //警报声的幅值 else McbspaRegs.DXR1.all = temp; //放音 } 链接命令文件如下: /* Contiguous SARAM memory blocks can becombined if required to create a larger memoryblock. */ MEMORY { PAGE 0 : /* BEGIN is used for the "boot toSARAM" bootloader mode */ /* BOOT_RSVD is used by the boot ROM forstack. */ /* This section is only reserved to keepthe BOOT ROM from */ /* corrupting this area during the debugprocess */ BEGIN : origin = 0x000000,length = 0x000002 /* Boot to M0 will go here */ BOOT_RSVD : origin = 0x000002,length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ RAMM0 : origin = 0x000050,length = 0x0003B0 /* RAML0 : origin = 0x008000,length = 0x001000 RAML1 : origin = 0x009000,length = 0x001000 RAML2 : origin = 0x00A000,length = 0x001000 RAML3 : origin = 0x00B000,length = 0x001000 */ RAML : origin = 0x008000,length = 0x004000 //RAML : origin = 0x00A000, length = 0x004000 ZONE7A : origin = 0x200000,length = 0x00FC00 /* XINTF zone 7 - program space */ CSM_RSVD : origin = 0x33FF80,length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ CSM_PWL : origin = 0x33FFF8,length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ ADC_CAL : origin = 0x380080,length = 0x000009 RESET : origin = 0x3FFFC0,length = 0x000002 IQTABLES : origin = 0x3FE000,length = 0x000b50 IQTABLES2 : origin = 0x3FEB50,length = 0x00008c FPUTABLES : origin = 0x3FEBDC,length = 0x0006A0 BOOTROM : origin = 0x3FF27C,length = 0x000D44 PAGE 1 : RAMM : origin = 0x000400,length = 0x000400 /* on-chip RAM block M1 */ /* RAML4 : origin = 0x00C000,length = 0x001000 RAML5 : origin = 0x00D000,length = 0x001000 RAML6 : origin = 0x00E000,length = 0x001000 RAML7 : origin = 0x00F000,length = 0x001000 */ //RAMH : origin = 0x00C000, length = 0x004000 RAMH : origin = 0x00C000,length = 0x004000 ZONE7B : origin = 0x20FC00,length = 0x000400 /* XINTF zone 7 - data space */ } SECTIONS { /* Setup for "boot to SARAM"mode: The codestart section (found inDSP28_CodeStartBranch.asm) re-directs execution to the start of usercode. */ codestart : >BEGIN, PAGE = 0 ramfuncs : > RAML, PAGE = 0 .text : > RAML, PAGE = 0 .cinit : > RAML, PAGE = 0 .pinit : > RAML, PAGE = 0 .switch : > RAML, PAGE = 0 .stack : > RAMM, PAGE = 1 .ebss : > RAMH, PAGE = 1 .econst : > RAMH, PAGE = 1 .esysmem : > RAMM, PAGE = 1 IQmath : > RAML, PAGE = 0 IQmathTables : >IQTABLES, PAGE = 0, TYPE = NOLOAD IQmathTables2 : > IQTABLES2,PAGE= 0, TYPE= NOLOAD FPUmathTables : > FPUTABLES,PAGE= 0, TYPE= NOLOAD /* DMARAML4 : >RAML4, PAGE = 1 DMARAML5 : >RAML5, PAGE = 1 DMARAML6 : >RAML6, PAGE = 1 DMARAML7 : >RAML7, PAGE = 1 */ ZONE7DATA : >ZONE7B, PAGE = 1 .reset : >RESET, PAGE = 0, TYPE = DSECT /* notused */ csm_rsvd : >CSM_RSVD PAGE = 0, TYPE = DSECT /* not used forSARAM examples */ csmpasswds : >CSM_PWL PAGE = 0, TYPE = DSECT /* not used forSARAM examples */ /* Allocate ADC_cal function(pre-programmed by factory into TI reserved memory) */ .adc_cal : load =ADC_CAL, PAGE = 0, TYPE = NOLOAD } /* //=========================================================================== // End of file. //=========================================================================== */ |
|
相关推荐
2个回答
|
|
这个问题应该是编译的程序过大,无法载入内存中导致的,看你的修改
“RAML:origin= 0x008000,Length = 0x004000”改为 “RAML:origin= 0x008000,Length = 0x00A000” 计算一下,0x008000+0x00A000 = 0x012000 再看看PAGE1的RAMH,是从0xC000开始的,就是说PAGE0的RAML已经覆盖PAGE1的RAMH,这样编译的时候可能没问题,但是载入的时候当然不行 你应该按实际的使用情况,重新分配L0-L7内存的使用,程序区和数据区不应该重叠,而且要满足需求 我看你ZONE7也使用了,说明你的板子上有外部存储器,可以考虑使用这个,把代码段全部放到外部空间,不就不用纠结内存够不够啦 .text : > ZONE7A, PAGE = 0 |
|
|
|
谢谢您,我按照您说的改进了存储分配,但是问题依然存在。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2426 浏览 0 评论
695 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2865 浏览 0 评论
3629 浏览 1 评论
1205 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 09:14 , Processed in 0.481807 second(s), Total 45, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号