主题中讨论的其他器件:SFRA
工具/软件:Code Composer Studio
您好!
当我将一个 RAM 重新构建为闪存模式的项目时、这个奇怪的问题。
错误信息为"
错误#10430-D:".TI.ramfunc"段由__attribute__((ramfunc))或--ramfunc=on 生成、需要段规范才能运行。
错误#10010:链接期间遇到错误;未生成"main.out"
"
以及随附的链接命令文件。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//如果使用、用户必须在项目链接器设置中定义 CLA_C
// CLA C 编译器
//项目属性-> C2000链接器->高级选项->命令文件
//预处理->--define
//#ifdef CLA_C
//为将要使用的 CLA 暂存区定义大小
//由 CLA 编译器生成局部符号和 temps
//还强制引用标记的特殊符号
//暂存区是。
CLA_ScratchPad_size = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
//#endif CLA_C
存储器
{
第0页:
/* begin 用于"引导至 SARAM"引导加载程序模式 */
#IF 定义(RAM)
开始 :origin = 0x000000,length = 0x000002
#Elif defined (闪存)
开始 :origin = 0x080000,length = 0x000002
#endif
RAMM0 :origin = 0x000122、length = 0x0002DE
RAMD0 :origin = 0x00B000、length = 0x000800
RAMD1 :origin = 0x00B800,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
RAMLS5 :origin = 0x00A800,length = 0x000800
RAMGS0 :origin = 0x00C000、length = 0x001000
RAMGS12 :origin = 0x018000,length = 0x001000
RAMGS13 :origin = 0x019000,length = 0x001000
RAMGS14 :origin = 0x01A000,length = 0x001000
RAMGS15 :origin = 0x01B000,length = 0x001000
FLASHA :origin = 0x080002,length = 0x001FFE /*片上闪存*/
FLASHC :origin = 0x084000,length = 0x002000 //片上闪存*/
FLASHD :origin = 0x086000、length = 0x002000 //片上闪存*/
FLASHE :origin = 0x088000、length = 0x008000 //片上闪存*/
FLASHF :origin = 0x090000,length = 0x008000 //片上闪存*
FLASHG :origin = 0x098000、length = 0x008000 //片上闪存*/
FLASHH :origin = 0x0A0000,length = 0x008000 //片上闪存*/
FLASHI :origin = 0x0A8000、length = 0x008000 //片上闪存*/
FLASHJ :origin = 0x0B0000,length = 0x008000 //片上闪存*/
FLASHK :origin = 0x0B8000、length = 0x002000 //片上闪存*/
FLASHL :origin = 0x0BA000、length = 0x002000 //片上闪存*/
FLASHM :origin = 0x0BC000、length = 0x002000 //片上闪存*/
FLASHN :origin = 0x0BE000、length = 0x002000 //片上闪存*/
复位 :origin = 0x3FFFC0,length = 0x000002
第1页:
BOOT_RSVD :origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1 :origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMLS0 :origin = 0x008000、length = 0x000800
RAMLS1 :origin = 0x008800,length = 0x000800
RAMLS2 :origin = 0x009000,length = 0x000800
RAMLS3 :origin = 0x009800,length = 0x000800
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
RAMGS45 :origin = 0x010000,length = 0x002000
RAMGS67 :origin = 0x012000,length = 0x002000
RAMGS89 :origin = 0x014000,length = 0x002000
RAMGS1011 :origin = 0x016000,length = 0x002000
FLASHB :origin = 0x082000、length = 0x002000 //片上闪存*
CLA1_MSGRAMLOW :origin = 0x001480,length = 0x000080
CLA1_MSGRAMHIGH :origin = 0x001500,length = 0x000080
}
部分
{
#IF 定义(RAM)
codestart :> begin, page = 0
ramfuncs :>RAMM0 page = 0
.text :>> RAMM0|RAMD0|RAMD1|RAMLS0|RAMLS1|RAMLS2|RAMLS3|RAMLS4|RAMLS5|RAMGS0|RAMGS12|RAMGS13|RAMGS14|RAMGS15, page = 0
.cinit :>> RAMM0|RAMGS14|RAMGS15, page = 0
.pinit :> RAMM0, page = 0
switch :>RAMM0, page = 0
econst :>RAMLS3, page = 1.
#Elif defined (闪存)
codestart :> begin, page = 0
ramfuncs : load = FLASHC,
运行= RAMLS1、
run_start (_RamfuncsRunStart)、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
PAGE = 0
.text :>> FLASHJ | FLASHK | FLASHL | FLASHN, PAGE = 0
.cinit :> FLASHM, PAGE = 0
.pinit :> FLASHM, PAGE = 0
.switch :> FLASHM, PAGE = 0
econst :> FLASHB, PAGE = 1.
其他
#ERROR 将"RAM"或"flash"添加到 C2000链接器->高级选项->命令文件预处理->-define
ENDIF//RAM
/*测试特定部分*/
// RFFTdata1 :> RAMGS45, page = 1//,align = RFFT_alignment
// RFFTdata2 :> RAMGS67, page = 1.
// RFFTdata3 :> RAMGS89, page = 1.
// RFFTdata4 :> RAMGS1011,page = 1.
FPUmathTables :>> RAMGS12|RAMGS13|RAMGS14, page = 0
.reset :> reset, page = 0,type = DSECT //未使用,*/
.cio :>RAMLS3, page = 1.
.sysmem :> RAMLS3, page = 1.
.stack :>RAMM1, PAGE = 1.
ebss :>> RAMGS1| RAMGS45| RAMGS67 | RAMGS89 | RAMGS1011, PAGE = 1
econst :>RAMLS3, page = 1.
.esysmem :>RAMLS3, page = 1.
filter_RegsFile :>RAMGS1, page = 1.
/* CLA 特定部分*/
Cla1Prog :>> RAMLS4 | RAMLS5,PAGE=0
CLADataLS0 :>RAMLS0,PAGE=1
CLADataLS1 :> RAMLS1,PAGE=1
Cla1ToCpuMsgRAM :> CLA1_MSGRAMLOW, page = 1.
CpuToCla1MsgRAM :>CLA1_MSGRAMHIGH, PAGE = 1.
/*以下部分定义适用于 SDFM 示例*/
filter1_RegsFile:> RAMGS1, PAGE = 1,fill=0x1111
Filter2_RegsFile:> RAMGS2, PAGE = 1,fill=0x2222
Filter3_RegsFile:> RAMGS3, PAGE = 1,fill=0x3333
Filter4_RegsFile:> RAMGS45, PAGE = 1,fill=0x4444
SFRA_F_Data :>RAMGS2,ALIGN = 64,PAGE = 1
SFRA_Data :>RAMGS2,ALIGN = 64,PAGE=1
FPUmathTables :>RAMGS3,page =1
CNTL_COEFF_RAM :>RAMGS3,PAGE = 1.
CNTL_var_RAM :>RAMGS2,PAGE = 1.
CNTL_COEFF_RAM2 :> RAMGS3,PAGE = 1.
CNTL_var_RAM2 :> RAMGS2,PAGE = 1.
#ifdef CLA_C
/* CLA C 编译器段*/
//
//必须被分配给 CLA 具有写入访问权限的内存
//
CLAscratch :
{*。obj (CLAscratch)
。 += CLA_ScratchPad_size;
*。obj (CLAscratch_end)}> RAMLS1、 PAGE = 1
暂存区 :>RAMLS1, 页=1
.bss_cla :> RAMLS1, page = 1.
.const_cla :> RAMLS1, PAGE = 1.
#endif CLA_C
}
/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在此链接命令文件中、没有任何有关".TI.ramfunc"段的内容。
我该怎么做?
任何建议均可获得采纳。