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.
你好
我使用 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