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 Studio
尊敬的先生:
我尝试将以下内容添加到链接器命令文件中、但编译时显示错误。 请帮帮我。
dclfuncs:>RAML4,page = 0
我的链接器命令文件包含以下内容
MEMORY { PAGE 0: /* BEGIN 用于“引导至 SARAM”引导加载程序模式 */ 开始 :origin = 0x000000,length = 0x000002 /*从此处引导至 M0 */ RAMM0 :origin = 0x000050、length = 0x0003B0 RAML0 :origin = 0x008000、length = 0x001000 RAML1 :origin = 0x009000、length = 0x001000 RAML2 :origin = 0x00A000、length = 0x001000 RAML3 :origin = 0x00B000、length = 0x001000 ZONE7A :origin = 0x200000、length = 0x00FC00 // XINTF 区域7 -程序空间*/ csm_RSVD:origin = 0x33FF80、length = 0x000076 /* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 // csm_PWL:origin = 0x33FFF8,length = 0x000008 /* FLASHA 的一部分。 FLASHA 中的 CSM 密码位置 */ ADC_CAL:origin = 0x380080,length = 0x000009 reset :origin = 0x3FFFC0,length = 0x000002 IQTABLES:origin = 0x3FE000,length = 0x000b50 IQTABLES2:origin = 0x3FEB50,length = 0x00008c FPUTABLES:origin = 0x3FEBDC,length = 0x0006A0 BootROM:origin = 0x3FF27C: page length:length = 0x0001FF27C:page:length: /* 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 区域7 -数据空间*/ } SECTIONS { //设置"引导至 SARAM"模式: codestart 段(可在 DSP28_CodeStartBranch.asm 中找到) 将执行重定向到用户代码的开始。 */ codestart :>开始, PAGE = 0 ramfuncs :> RAML0, PAGE = 0.text :>> RAML1 | RAML2, PAGE = 0 .InitBoot :> 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 //如果调用 IQNexp()或 IQexp(),取消注释以下段 库中的函数、以便利用 引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM 1个等待状态)。 如果此部分未注释、则为 IQmathTables2 将被加载到其他存储器(SARAM、闪存等)中并将采用 上行空间、但0等待状态是可能的。 // /* IQmathTables2:> IQTABLES2,page = 0,type = NoLoad { IQMath.lib (IQmathTablesRam) } */ FPUmathTables:> FPUTABLES,page = 0,type = NoLoad dclfuncs :> RAML4, PAGE = 0 DMARAML4 :> RAML4, PAGE = 1 DMARAML5 :> RAML5, PAGE = 1 DMARAML6 :> RAML6, PAGE = 1 DMARAML7 :> RAML7, PAGE = 1 ZONE7DATA :>ZONE7B,PAGE=1 .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 = NoLoad }
"dclfuncs"将包含您从 DCL 库中使用的任何控制器的代码、因此需要将其映射到链接器命令文件中的第0页。 这里的问题是您选择了 RAML4来保存该段、并且在链接器命令文件的存储器部分、RAML4映射到第1页。 您无法更改.cmd 文件的 SECTIONS 部分中的页面映射。 您已将 RAML3分配给第0页、这似乎未在您的段分配中使用、因此请尝试:
dclfuncs:>RAML3,page = 0
此致、
Richard