大家好!
我是 TMS320F28335用户。 我需要更多内存。
由于".ebss"数据过多、RAM 块 L0 ~ L7已集成、但还不够。
目前、95%的 RAM 区域正在使用、还有一些变量我尚未声明。
在本例中、是否有可以替代的区域? 请帮我。
例如、 SRAM_DATA 或 ZONE7? (未在使用中)
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好!
我是 TMS320F28335用户。 我需要更多内存。
由于".ebss"数据过多、RAM 块 L0 ~ L7已集成、但还不够。
目前、95%的 RAM 区域正在使用、还有一些变量我尚未声明。
在本例中、是否有可以替代的区域? 请帮我。
例如、 SRAM_DATA 或 ZONE7? (未在使用中)
MEMORY {
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
//RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */
//RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */
//RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */
//RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */
//RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L4 */
//RAML5 : origin = 0x00D000, length = 0x001000 /* on-chip RAM block L5 */
//RAML6 : origin = 0x00E000, length = 0x001000 /* on-chip RAM block L6 */
//RAML7 : origin = 0x00F000, length = 0x001000 /* on-chip RAM block L7 */
RAML : origin = 0x008000, length = 0x008000 /* on-chip RAM block L0-L7 */
FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */
FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */
FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */
FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */
FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */
FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */
FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */
FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */
CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */
IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
ZONE7A : origin = 0x0200000, length = 0x00FC00 /* XINTF zone 7 - program space */
ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */
ZONE6 : origin = 0x100000, length = 0x100000 /* XINTF zone 6 */
}
/* Allocate sections to memory blocks.
Note: codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/
SECTIONS {
/* Allocate program areas: */
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD, RUN = RAML,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
csmpasswds : > CSM_PWL PAGE = 0
csm_rsvd : > CSM_RSVD PAGE = 0
/* Allocate uninitalized data sections: */
.stack : > RAMM0 PAGE = 1
.ebss : > RAML PAGE = 0
.esysmem : > RAMM1 PAGE = 1
/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHA PAGE = 0
.switch : > FLASHA PAGE = 0
/* Allocate IQ math areas: */
IQmath : > FLASHC PAGE = 0 /* Math Code */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{
IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)
}
*/
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
/* Allocate DMA-accessible RAM sections: */
DMARAML4 : > RAML, PAGE = 0
DMARAML5 : > RAML, PAGE = 0
DMARAML6 : > RAML, PAGE = 0
DMARAML7 : > RAML, PAGE = 0
/* Allocate 0x400 of XINTF Zone 7 to storing data */
ZONE7DATA : > ZONE7B, PAGE = 0
/* .reset is a standard section used by the compiler. It contains the */
/* the address of the start of _c_int00 for C Code. /*
/* When using the boot ROM this section and the CPU vector */
/* table is not needed. Thus the default type is set here to */
/* DSECT */
.reset : > RESET, PAGE = 0, TYPE = DSECT
vectors : > VECTORS PAGE = 0, TYPE = DSECT
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
}
/*
//===========================================================================
// End of file.
//===========================================================================
*/
你好
我上传我的"28335.cmd"文件。
目前、在 cmd 文件中、RAML0 - RAML7区域已集成并用作 RAML。
(95%的 RAML 存储器区域正在使用)
我想使用大约120%的 RAML 面积。
我的产品使用的是 ZONE0、ZONE6和 ZONE7、未使用。
在这种情况下、是否有办法可以通过在不更改 CPU 或更改 SRAM 等其他 H/W 的情况下修改 cmd 文件来解决它?
您好!
感谢您对我的问题的真诚回答。
已发布了两个问题、您能否回答另一侧并删除此帖子?
我不知道如何删除这个帖子。。
↓这是另一个帖子。
我来关闭该主题、而不是删除。
这是 e2e.ti.com/.../tms320f28335-out-of-memory-issue 的副本
谢谢。
Veena
您好!
片上可使用的 RAM 数量是有限的。 遗憾的是、如果你需要 RAML 的120%、那么 RAM 中没有这个大容量的存储器(数据表中列出的 F28335器件的 RAM 容量为34K x 16、你所要求的大约为39K x 16)。 有几个不同的解决方案:
我知道更换器件是否不切实际、但其他解决方案应该可行。 如果您希望仅使用片上 RAM、而不影响在其上存储的内容、则不可能在其上容纳更多数据。
此致、
Omer Amir
您好,感谢您的答复。
您的评论与我们团队先前的评论有许多相似之处。
1.优化内存->这是一项努力、但似乎有局限性
3.使用外部记忆->我们的硬件团队正在审查
4.使用另一个 C2000 CPU ->我们的软件团队正在审查
目前、4个新兴市场是最高选择、但我们正在努力解决价格问题和电路板上的空闲空间。
然而,由于你的意见2已经成为一个新的选择,我认为有必要审查2。
您想问的任何其他问题:
由于我们的产品不使用 XINTF Zone7、我想问是否可以写入存储器、但不可能?