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:内存分配问题

Guru**** 2553360 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1355130/tms320f28335-memory-allocation-problem

器件型号:TMS320F28335

您好!

我面临与"/28335_RAM_lnk.cmd"相关的问题、第132行 error#10099-D 程序无法装入可用内存。 请帮帮我。


内存
{
第0页:
/* begin 用于"boot to SARAM"引导加载程序模式*/

begin:origin = 0x000000、length = 0x000002 /* Boot to M0将转至此处*/
RAMM0:origin = 0x000050、length = 0x0003B0
RAML0:origin = 0x008000、length = 0x001000
RAML1L2L3:origin = 0x009000、length = 0x003000

// RAML1:origin = 0x009000,length = 0x001000
// RAML2L3:origin = 0x00A000,length = 0x002000
// RAML2:origin = 0x00A000,length = 0x001000
// RAML3:origin = 0x00B000,length = 0x001000
ZONE7A:origin = 0x200000,length = 0x00FC00 /* XINTF zone 7 - program space */
CSM_RSVD:origin = 0x33FF80、length = 0x000076 /*部分 FLASHA。 当 CSM 正在使用时、全为0x0000编程。 */
CSM_PWL:origin = 0x33FFF8,length = 0x000008 /*部分 FLASHA。 FLASHA 中的 CSM 密码位置*/
ADC_CAL:origin = 0x380080、length = 0x000009
复位:origin = 0x3FFFC0、length = 0x000002
IQTABLES:origin = 0x3FE000、length = 0x000b50
IQTABLES2:origin = 0x3FEB50、length = 0x00008c
FPUBLES:origin = 0x3FEBDC、length = 0x0006A0
BootROM:origin = 0x3FF27C、length = 0x000D44


第1页:
/* boot_RSVD 由引导 ROM 用于堆栈。 */
/*此段仅保留,用于将引导 ROM 保留在*/
/*在调试过程中损坏此区域*/

BOOT_RSVD:origin = 0x000002、length = 0x00004E /* M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400,length = 0x000400 /*片上 RAM 块 M1 */
RAML4:origin = 0x00C000、length = 0x001000
RAML5:origin = 0x00D000、length = 0x001000
RAML6:origin = 0x00E000、length = 0x001000
RAML7:origin = 0x00F000、length = 0x001000
ZONE7B:origin = 0x20FC00,length = 0x000400 /* XINTF zone 7 - data space */


部分
{
/*针对"引导至 SARAM"模式的设置:
codestart 段(位于 DSP28_CodeStartBranch.asm 中)
将执行指令重新指向用户代码的起始位置。 */
codestart :> begin, page = 0
ramfuncs:> RAML0,page = 0

.text >> RAML1L2L3|RAMM0|RAML0、page = 0
//.text >> RAML1|RAML2|RAMM0|RAML0|RAML3|RAML3,page = 0
//.text:> RAML1,page = 0
.cinit:> RAML0、page = 0
.pinit:> RAML0、page = 0
.switch:> RAML0、PAGE = 0

.stack:> RAMM1、page = 1
.ebss:> RAML4、page = 1
econst:> RAML5、page = 1
.esysmem :> RAMM1, page = 1

IQMath >> RAML1L2L3、PAGE = 0
IQmathTables :> IQTABLES , PAGE = 0, TYPE = NOLOAD

/*
codestart :> begin, page = 0
ramfuncs:> RAML0,page = 0

.text >> RAML1|RAML2L3|RAMM0|RAML0、page = 0
//.text >> RAML1|RAML2|RAMM0|RAML0|RAML3|RAML3,page = 0
//.text:> RAML1,page = 0
.cinit:> RAML0、page = 0
.pinit:> RAML0、page = 0
.switch:> RAML0、PAGE = 0

.stack:> RAMM1、page = 1
.ebss:> RAML4、page = 1
econst:> RAML5、page = 1
.esysmem :> RAMM1, page = 1

IQMath:> RAML1、PAGE = 0
IQmathTables :> IQTABLES , PAGE = 0, TYPE = NOLOAD
*/
/*
IQmathTables2:>IQTABLES2、PAGE = 0、TYPE = NOLOAD
{

IQmath.lib (IQmathTablesRam)


*/

FPUmathTables :> FPUTABLES , PAGE = 0, TYPE = NoLoad

DMARAML4 :> RAML4, page = 1
DMARAML5 :> RAML5 ,页面= 1
DMARAML6 :> RAML6 ,页面= 1
DMARAML7 :> RAML7, page = 1

ZONE7DATA :> ZONE7B, PAGE = 1

.reset:>RESET、PAGE = 0、TYPE = DSECT /*未使用*/
csm_rsvd :> csm_RSVD page = 0,type = DSECT /*不用于 SARAM 示例*/
csmpasswds:>csm_PWL page = 0、type = DSECT /*不用于 SARAM 示例*/

/*分配 ADC_cal 函数(工厂预编程到 TI 保留的存储器中)*/
.adc_cal:load = adc_CAL、page = 0、type =空载

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的代码很大。 并显示已满内存。 如何为此分配存储器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Anupam:

    我认为存储器不足以使 cinit 段保存数据。 您能否向此部分添加更多 LS RAM。

    例如  

    .cinit       :> RAML1L2L3

    如果还不够、您也可以添加 LS0 (即 .cinit)       :>> RAMLS0 | RAML1L2L3 )

    此致

    阿斯温

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何为文本文档添加更多 RAM? 我指的是如何初始化? 正如您提到的、添加更多 LS RAM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Anupam:

    文本段后面缺少冒号":"。 请更新它。

    .text:>> RAML1|RAML2L3|RAMM0|RAML0,page = 0

    谢谢

    阿斯温

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Aswin、

    感谢您的答复。 但你可以看到我已经使用了 RAML1、L2和 L3每个4MB (总共12MB) 我想。 我可以使用 RAML7 (动态 RAM 我猜)从第1页和它们一起(第0页). 如果是、则如何操作。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    或者如果我想使用 zone7a 作为 RAM . 那么如何使用它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Anupam:

    您的.text 段的总大小是多少? 它是否超出了组合存储器的总大小?

    如果需要使用第1页中的 RAMLS7、那么最好删除 page1属性并将每个 RAM 放入 page0中并相应地使用。

    是否可以以 zip 格式发送您的项目、以便我可以从侧面重现问题并对此进行进一步调试?

    添加缺失的冒号后,您是否仍遇到此问题?

    谢谢

    阿斯温

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Aswin、

    感谢你的帮助。 问题现已解决。 我添加 RAML6到第0页,然后到文本. 现在、我有足够的空间、如果需要、我还可以添加 RAM L7。 再次感谢 您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Anupam:

    很高兴您能够解决此问题。

    因此关闭此票证。 请单击"已解决"按钮以关闭主题帖。

    谢谢

    阿斯温