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.
工具/软件:TI C/C++编译器
请仔细阅读以下详细信息、并告知我为何无法注入和测试 ECC DATA_ERROR。
------------------------------------------------------------------
以下行取自函数'main':
if (软件版本=0x300)
{
while (1);
}
注意: const UINT16软件版本= 0x0300;
------------------------------------------------------------------
以下行取自映射文件:
页 地址 名称
0 0000c1f2 _SoftwareVersion
------------------------------------------------------------------
构建目标:"XYZ.OUT"
调用:C2000链接器
"c:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 -float_support=fpu32 -tmu_support=tmu0 -vcu_support=vcu0 -off -advice:performance=all -define=cpu1 -define -define -define=-diag_suppress=10063 -vcu_support=vcu-off-0x42=cla_display-ram_error-ram_background-ram_off-ram_error-cn-cn-recon_display-ram_off-ram_error-cn-recon-ram_background-cn=0x42=econ_off-recon_error-rab-rab-rab-recon_display-rab-rab-rab-rab-rab-rab-rab-rab-rabout-rab-rab-rab-rab-rabout-rab-/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/include /ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/lib xml_link_info="XYZ_linkInfo.xml"--entry_point=code_start -- rom_model -o "XYZ.out""./O2_SST_funcs.obj""./O2_CLA_Init.obj""./f28004x_code.obj "./f28004x_funf28004x_funobj ./f28004x./f28004x./f28004x./f2800_exfiltisobj /f284x./f284x./f284x./f28004x./f284x./f28004x.obj /driverlib/pmbus.obj /driverlib/pga.obj /driverlib/memcfg.obj /driverlib/lin.obj /driverlib/interrupt.obj /driverlib/i2c.obj /driverlib/hrpwm.obj /driverlib/hrcap.obj /driverlib/gpio.obj /driverlib/fsi.obj /driverlib/flash.obj /driverlib/eqep.obj /driverlib/epwm.obj /driverlib/ecap.obj /driverlib/dma.obj /driverlib/dcsm.obj /driverlib/dcc.obj /driverlib/dac.obj /driverlib/cputimer.obj /driverlib/cmpss.obj /driverlib/clapromcrc.obj /driverlib/cla.obj /driverlib/can.obj /driverlib/asysctl.obj /driverlib/adc.obj /device/device.obj "./driverlib/sci.obj "./driverlib/sdfm.obj "./driverlib/spi.obj "./driverlib/sysctl.obj "./ti/c2000/C2000Ware_2_00_00_02/libraries/flash_api/f28004x/lib/F021_ROM_API_F28004x_FPU32.lib "./driverlib/version.obj "./driverlib/xbar.obj "./vcu/vcu0_crc_32.obj "../O2_Flash_lnk.cmd""./driverlib.lib""./f28004x_headers_nonbios.cmd""./driverlib/ccs/Debug/driverlib.lib /Development/XYZ/driverlib.lib "./driverlib/ccs/Release/driverlib.lib -l"/ti/C2000/C2000Ware_2_00_00_02/libraries/math/CLAmath/c28/lib/cla2_math_library_fpu32.lib -l":C:/ti/c2000/C2000Ware_2_00_00_02/libraries/flash_api/f28004x/lib/F021_API_F28004x_FPU32.lib /ti/C2000/C2000Ware_2_00_00_02/libraries/dsp/FPU/c28/lib/c28x_fpu_dsp_library.lib
错误#10404-D:位错误应该是两个或三个逗号分隔的整数、带有可选的基本符号:[symbol+]address、[page、]error_mask
警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"RAM_Test_Block"
错误#10010:链接期间遇到错误;未生成"XYZ.OUT"
>>编译失败
Makefile:217:目标'XYZ.OUT"的配方失败
gmake.1]:***[XYZ.OUT]错误1
gmake[1]:目标"辅助输出"不会由于错误而重新生成。
Makefile:213:目标'all'的配方失败
gmake:***[全部]错误2.
****构建完成****
Sandeep、
配置 --ecc:data_error=0xC1F2+1,0x42时,要包含 ECC 错误的地址是什么?
谢谢、此致、
Vamsi
我认为"const UINT16 SoftwareVersion = 0x0300;"被分配在.econst 中、进入"flash_BANK0_HALF1"部分。 但是映射文件中显示的"SoftwareVersion"的地址为0xC1F2。 如何在 FLASH_BANK0_HALF1中选择常量变量来引入 ECC:DATA_ERROR?
存储器
{
第0页:
RAMM0:origin = 0x0000F5,length = 0x00030B
RAMLS0LS1:origin = 0x008000、length = 0x001000
RAMLS2:origin = 0x009000,length = 0x000800
RAMLS3:origin = 0x009800,length = 0x000800
RAMLS4:origin = 0x00A000,length = 0x000800
复位:origin = 0x3FFFC0,length = 0x000002
/*闪存扇区*/
/*组0 */
FLASH_BANK0_HALF1:origin = 0x00080000,length = 0x008000 vfill=0xFFFF //*段0到7 */
FLASH_BANK0_HALF2:origin = 0x00088000、length = 0x008000 vfill=0xFFFF /* SECTIONS 8至15 */
/*银行1 */
FLASH_BANK1_SEC0:origin = 0x00090000,length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC1:origin = 0x00091000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC2:origin = 0x00092000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC3:origin = 0x00093000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC4:origin = 0x00094000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC5:origin = 0x00095000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC6:origin = 0x00096000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC7:origin = 0x00097000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC8:origin = 0x00098000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC9:origin = 0x00099000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC10:origin = 0x0009A000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC11:origin = 0x0009B000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC12:origin = 0x0009C000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC13:origin = 0x0009D000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC14:origin = 0x0009E000、length = 0x001000 vfill=0xFFFF //片上闪存*
FLASH_BANK1_SEC15:origin = 0x0009F000、length = 0x000FF8 vfill=0xFFFF //片上闪存*
PROG_CRC32:origin = 0x0009FFF8,length = 0x000008 vfill=0xFFFF //片上闪存*/
RAMGS0GS3:origin = 0x0000C000,length = 0x008000
ECC_FLAX0:origin = 0x01080000,
长度= 0x001000、
ECC ={INPUT_RANGE = FLASH_BANK0_HALF1、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAX1:origin = 0x01081000,
长度= 0x001000、
ECC ={INPUT_RANGE = FLASH_BANK0_HALF2、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
// ECC_FLAY0:origin = 0x01082000,
//长度= 0x000200、
// ECC ={input_range = flash_bank1_SEC0、input_page = 0、算法= c2000_Algo、fill = true}
// ECC_FLAY1:origin = 0x01082200,
//长度= 0x000200、
// ECC ={input_range = flash_bank1_SEC1、input_page = 0、算法= c2000_Algo、fill = true}
ECC_FLAY2:origin = 0x01082400,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC2、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY3:origin = 0x01082600、
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC3、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY4:origin = 0x01082800,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC4、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY5:origin = 0x01082A00,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC5、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY6:origin = 0x01082C00,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC6、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY7:origin = 0x01082E00,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC7、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY8:origin = 0x01083000,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC8、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY9:origin = 0x01083200,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC9、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY10:origin = 0x01083400,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC10、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY11:origin = 0x01083600,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC11、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY12:origin = 0x01083800、
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC12、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY13:origin = 0x01083A00,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC13、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY14:origin = 0x01083C00,
长度= 0x000200、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC14、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY15:origin = 0x01083E00,
长度= 0x0001FF、
ECC ={INPUT_RANGE = FLASH_BANK1_SEC15、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
ECC_FLAY16:origin = 0x01083FFF,
长度= 0x000001、
ECC ={INPUT_RANGE = PROG_CRC32、INPUT_PAGE = 0、算法= C2000_ALGO、Fill = true}
第1页:
/*闪存扇区*/
/*组0 */
//flash_BANK0_HALF1:origin = 0x080002,length = 0x007FFE //*段0到7 */
//FLASH_BANK0_HALF2:origin = 0x088000、length = 0x008000 //* SECTIONS 8至15 */
BOOT_RSVD:origin = 0x000002,length = 0x0000F3 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMLS5:origin = 0x00A800,length = 0x000800
RAMLS6:origin = 0x00B000、length = 0x000800
RAMLS7:origin = 0x00B800,length = 0x000800
CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080
}
ECC { c2000_算法:奇偶校验掩码= 0xFC 镜像= F021 }
部分
{
codestart:> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
.text:> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
.cinit:> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
.pinit:> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
.switch:> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
.reset:> reset,page = 0,type = DSECT //未使用,*/
.cio:> RAMGS0GS3,PAGE = 0
.stack:>RAMM1,PAGE = 1.
.ebss:> RAMGS0GS3,PAGE = 0
.esysmem:> RAMGS0GS3,PAGE = 0
.econst:> FLASH_BANK0_HALF1、
运行= RAMGS0GS3、
load_start (_econst_loadstart)、
run_start (_econst_runstart)、
load_size (_econst_loadsize)、page = 0、PALIGN (4)
/*
.cio:>RAMS3LS7,page = 0
.stack:>RAMM1,PAGE = 1.
.ebss:> RAMGS0GS3,PAGE = 0
.esysmem:>RAMS3LS7,PAGE = 0
.econst:> RAMS3LS7,
运行= RAMS3LS7、
load_start (_econst_loadstart)、
run_start (_econst_runstart)、
load_size (_econst_loadsize)、page = 0、PALIGN (4)
*
O2_OperParms:> FLASH_BANK1_SEC0 PAGE = 0
O2_CalCoeffs:> FLASH_BANK1_SEC1 PAGE = 0
STORE_Prog_CRC32:> PROG_CRC32 PAGE = 0
// CLA 段
Cla1Prog:> FLASH_BANK0_HALF2、
运行= RAMLS0LS1、
run_start (_Cla1ProgRunStart)、
Load_start (_Cla1ProgLoadStart)、
load_size (_Cla1ProgLoadSize)、page = 0、PALIGN (4)
暂存区:> RAMLS0LS1,PAGE = 0
.bss_cla:> RAMLS0LS1,page = 0
.CONST_CLA:> FLASH_BANK0_HALF2、
运行= RAMLS0LS1、
run_start (_Cla1ConstRunStart)、
Load_start (_Cla1ConstLoadStart)、
load_size (_Cla1ConstLoadSize)、page = 0、PALIGN (4)
Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.
Cla1DataRam:> RAMLS2,page = 0
/* RAM 函数*/
.TI.ramfunc:load = flash_BANK0_HALF1,
运行= RAMGS0GS3、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、PALIGN (4)
/*
econst.ram:load = flash_BANK0_HALF1,
运行= RAMGS0GS3、
load_start (_econst_loadstart)、
run_start (_econst_runstart)、
load_size (_econst_loadsize)、
PAGE = 0、PALIGN (4)
Cla1Prog:LOAD = FLASH_BANK0_HALF2、
运行= RAMLS0LS1、
Load_start (Cla1ProgLoadStart)、
Load_size (Cla1ProgLoadSize)、
RUN_START (Cla1ProgRunStart)、
PAGE = 0、PALIGN (4)
const_CLA:load = flash_BANK0_HALF2、
运行= RAMLS3、
RUN_START (Cla1ConstRunStart)、
Load_start (Cla1ConstLoadStart)、
load_size (Cla1ConstLoadSize)、
PAGE = 0、PALIGN (4)
*
}
/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
之前:
.econst:> FLASH_BANK0_HALF1、
运行= RAMGS0GS3、
load_start (_econst_loadstart)、
run_start (_econst_runstart)、
load_size (_econst_loadsize)、page = 0、PALIGN (4)
--------------------------------------------------------------------
现在、我在链接器文件中按如下方式进行了更改、将"软件版本"放置在 FLASH_BANK0_HALF1中。
.econst :> FLASH_BANK0_HALF1,PAGE = 0,PALIGN (4)
现在、映射文件显示:
页地址 名称
0 0008105e _SoftwareVersion
--------------------------------------------------------------------
构建目标:"XYZ.OUT"
调用:C2000链接器
"c:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/bin/cl2000 -v28 -ml -mt --cla_support=cla2 -float_support=fpu32 -tmu_support=tmu0 -vcu_support=vcu0 -off -advice:performance=all -define=cpu1 -define -define -tag_suppress=10063 --vcu_support=vcu-off-0x8105_error-rabi_ram_display-ram_ram_background-out-0x02=ecnature=ecnate-display-display-ram_background-out-out-display-命令/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/lib -命令0x8105_error-recnate-ram_display-ram_off-out-recnate-background-out-out-out-out-命令-recnecnate-display-命令/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_18.12.4.LTS/include -命令0x80_display-de-de-de-de-de-display-rab-recnecnecnecnate-display xml_link_info="XYZ_linkInfo.xml"--entry_point=code_start -- rom_model -o "XYZ.out""./O2_SST_funcs.obj""./O2_CLA_Init.obj""./f28004x_code.obj "./f28004x_funf28004x_funobj ./f28004x./f28004x./f28004x./f2800_exfiltisobj /f284x./f284x./f284x./f28004x./f284x./f28004x.obj /driverlib/pmbus.obj /driverlib/pga.obj /driverlib/memcfg.obj /driverlib/lin.obj /driverlib/interrupt.obj /driverlib/i2c.obj /driverlib/hrpwm.obj /driverlib/hrcap.obj /driverlib/gpio.obj /driverlib/fsi.obj /driverlib/flash.obj /driverlib/eqep.obj /driverlib/epwm.obj /driverlib/ecap.obj /driverlib/dma.obj /driverlib/dcsm.obj /driverlib/dcc.obj /driverlib/dac.obj /driverlib/cputimer.obj /driverlib/cmpss.obj /driverlib/clapromcrc.obj /driverlib/cla.obj /driverlib/can.obj /driverlib/asysctl.obj /driverlib/adc.obj /device/device.obj "./driverlib/sci.obj "./driverlib/sdfm.obj "./driverlib/spi.obj "./driverlib/sysctl.obj "./ti/c2000/C2000Ware_2_00_00_02/libraries/flash_api/f28004x/lib/F021_ROM_API_F28004x_FPU32.lib "./driverlib/version.obj "./driverlib/xbar.obj "./vcu/vcu0_crc_32.obj "../O2_Flash_lnk.cmd""./driverlib.lib""./f28004x_headers_nonbios.cmd""./driverlib/ccs/Debug/driverlib.lib /Development/XYZ/driverlib.lib "./driverlib/ccs/Release/driverlib.lib -l"/ti/C2000/C2000Ware_2_00_00_02/libraries/math/CLAmath/c28/lib/cla2_math_library_fpu32.lib -l":C:/ti/c2000/C2000Ware_2_00_00_02/libraries/flash_api/f28004x/lib/F021_API_F28004x_FPU32.lib /ti/C2000/C2000Ware_2_00_00_02/libraries/dsp/FPU/c28/lib/c28x_fpu_dsp_library.lib
错误#10404-D:位错误应该是两个或三个逗号分隔的整数、带有可选的基本符号:[symbol+]address、[page、]error_mask
警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"RAM_Test_Block"
错误#10010:链接期间遇到错误;未生成"XYZ.OUT"
>>编译失败
Makefile:217:目标'XYZ.OUT"的配方失败
gmake.1]:***[XYZ.OUT]错误1
gmake[1]:目标"辅助输出"不会由于错误而重新生成。
Makefile:213:目标'all'的配方失败
gmake:***[全部]错误2.
****构建完成****
我发现我不应该在地址旁边提到"+0"。 这使得链接正常、但当读取符号"SoftwareVersion"时、我预计会导致不可纠正的错误和未发生的 NMI 中断。 有什么建议?
"-ecc:data_error=0x8105e+0、0、0x42"
Sandeep、
很高兴讨论有所帮助。
关于 NMI/不可纠正的错误: 您是否在 CCS 闪存插件 GUI 中禁用了 AutoEccGeneration? 如果没有、请禁用它-如果它保持启用状态、ECC 将被正确编程。
谢谢、此致、
Vamsi