TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] #10099-D 错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1021267/10099-d-error

你好

我使用 Code Composer 10为 TMSF28379D 构建了一个应用。

我为 CCS 和28379D 创建了电机控制器项目。

添加代码前的正常操作。 但是、当我添加一些代码时、CCS 尚未构建。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这是我的错误

>编译失败
Makefile:164:目标'ix_ph_control_CPU1.out'的配方失败
"./2837x_RAM_lnk_CPU1.cmd"、第60行:错误#10099-D:程序不能放入可用存储器、或者该段包含需要无法为此段生成的 trampoline 的调用站点。 对齐/分块放置在".text"大小为0x3a6cpage 0的位置失败。 可用存储器范围:
RAMM0大小:0x2DE 未使用:0x0最大空洞:0x0
RAMD0大小:0x800未使用:0x0最大孔:0x0
RAMLS0大小:0x800未使用:0x0最大空洞:0x0
RAMLS1大小:0x800未使用:0x0最大空洞:0x0
RAMLS2大小:0x800未使用:0x0最大空洞:0x0
RAMLS3大小:0x800未使用:0x0最大空洞:0x0
RAMLS4大小:0x800未使用:0x2e8最大孔:0x2e8
错误#10010:链接期间遇到错误;未生成"Six _pH_control_CPU1.out"
gmake.1]:***[6_ph_control_CPU1.out]错误1.
Makefile:160:目标'all'的配方失败
gmake:***[全部]错误2.

****构建完成****

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是我的存储器代码。


存储器

第0页:
/* begin 用于"引导至 SARAM"引导加载程序模式*/

开始:origin = 0x000000,length = 0x000002
RAMM0:origin = 0x000122、length = 0x0002DE
RAMD0:origin = 0x00B000、length = 0x000800
RAMLS0:origin = 0x008000、length = 0x000800
RAMLS1:origin = 0x008800,length = 0x000800
RAMLS2:origin = 0x009000,length = 0x000800
RAMLS3:origin = 0x009800,length = 0x000800
RAMLS4:origin = 0x00A000,length = 0x000800
复位:origin = 0x3FFFC0,length = 0x000002

第1页:

BOOT_RSVD:origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMD1:origin = 0x00B800,length = 0x000800


RAMLS5:origin = 0x00A800,length = 0x000800

RAMGS0:origin = 0x00C000、length = 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2:origin = 0x00E000、length = 0x001000
RAMGS3:origin = 0x00F000、length = 0x001000
RAMGS4:origin = 0x010000,length = 0x001000
RAMGS5:origin = 0x011000,length = 0x001000
RAMGS6:origin = 0x012000,length = 0x001000
RAMGS7:origin = 0x013000,length = 0x001000
RAMGS8:origin = 0x014000,length = 0x001000
RAMGS9:origin = 0x015000,length = 0x001000
RAMGS10:origin = 0x016000,length = 0x001000
// RAMGS11:origin = 0x017000,length = 0x001000
// RAMGS12:origin = 0x018000,length = 0x001000
// RAMGS13:origin = 0x019000,length = 0x001000
RAMGS14:origin = 0x01A000,length = 0x001000
RAMGS15:origin = 0x01B000,length = 0x001000

CPU2TOCPU1RAM:origin = 0x03F800,length = 0x000400
CPU1TOCPU2RAM:origin = 0x03FC00,length = 0x000400

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是我的部分代码。


部分

codestart:> begin,page = 0

#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}> RAMM0,PAGE = 0
其他
ramfuncs:>RAMM0 page = 0
#endif
#endif

.text:>>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,page = 0     
.cinit:> RAMLS4,page = 0
.pinit:> RAMM0,page = 0
switch:>RAMM0,page = 0
.reset:> reset,page = 0,type = DSECT //未使用,*/

.stack:>RAMM1,PAGE = 1.
.bss:> RAMLS5,page = 1.
.const:> RAMLS5,page = 1.
.sysmem:> RAMLS5,page = 1.
.data :> RAMLS5,page = 1.
filter_RegsFile:> RAMGS0,PAGE = 1

RAMS0:>RAMGS0,PAGE = 1
ramgs1:>RAMGS1,page = 1.
init_array:> RAMGS2,page = 1.
motorData:> RAMGS3,page = 1.
ControlData:> RAMGS3,PAGE = 1.
ipcData:>RAMGS4,PAGE = 1
状态1:>> RAMGS5 | RAMGS6,PAGE = 1
状态2:>> RAMGS7 | RAMGS8,PAGE = 1
LUT:>> RAMGS9,PAGE = 1
/*使用 IPC API 驱动程序时需要以下部分定义*/
组:> CPU1TOCPU2RAM,PAGE = 1

PUTBUFFER
PUTWRITEIDX
GETREADIDX


组:> CPU2TOCPU1RAM,PAGE = 1

GETBUFFER:TYPE = DSECT
GETWRITEIDX:TYPE = DSECT
PUTREADIDX:TYPE = DSECT


/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如何增加第0页的内存部分?

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

    即使您已为.text 段分配了多个存储器、但如果有一个函数恰好跨越了.cmd 文件第一段中定义的存储器边界之一。

    而不是生成.text;如
    .text:>>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,page = 0   

    让我们使 RAMLS0更大、即

    RAMLS0:origin = 0x008000、length = 0x002800

    然后像那样分配.text

    .text :>> RAMLS0,page = 0  

    查看这是否起作用(现在让 M0和 D0离开分配、因为它们不是连续地址)。

    最棒的

    Matthew