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.
Tool/software: TI C/C++ Compiler
Hello:
I try to save data in 28235 flash memory.
The linker make a warning #10068-D: no matching section at line : -l Flash28235_API_V210.lib(.econst)
Flash28_API:
{
-lFlash28235_API_V210.lib(.econst)
-lFlash28235_API_V210.lib(.text)
}
LOAD = FLASHA,
RUN = RAML_lib,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
PAGE = 0
Someone could help me?
The diagnostic means this line ...
user3815859 said:-lFlash28235_API_V210.lib(.econst)
... does not pick up any input sections. That is probably because some earlier line like this ...
.econst > FLASHA
... picks up all the input sections named .econst, including the ones from this library. The usual fix is to move this general .econst line so it appears after the library specific .econst line.
Thanks and regards,
-George
Dear George,
Thank you for your reply. There is no earlier line like .const :> FLASHA in the .cmd file. The linker make a warning #10068-D: no matching section at line : -l Flash28235_API_V210.lib(.econst) and line: -lFlash28235_API_V210.lib(.text).
Is there any other reason for this problem?
MEMORY
{
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */
RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */
FLSDRV_AREA : origin = 0x009800, length = 0x000800
RAML_lib : origin = 0x00A000, length = 0x00800 /* on-chip RAM block L0 */
/*RAML1 : origin = 0x009000, length = 0x0000b0 */ /* on-chip RAM block L1 */
RAML2 : origin = 0x00A800, length = 0x000800 /* on-chip RAM block L2 */
RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */
/* FLASHA : origin = 0x33C000, length = 0x003F80 on-chip FLASH */
FLASHB : origin = 0x300062, length = 0x0070 /* on-chip Flash */
BOOTVER : origin = 0x3000e0, length = 0x0020
PARTNUM : origin = 0x300100, length = 0x0020
BOOTIDF : origin = 0x300160, length = 0x0020
FLASHC : origin = 0x300180, length = 0x000100
FLASHA : origin = 0x300280, length = 0x005F00
/* CSM_RSVD : origin = 0x33FF80, length = 0x000076 Part of FLASHA. Program with all 0x0000 when CSM is in use. */
/* BEGIN : origin = 0x33fff6, length = 0x000002*/
BEGIN : origin = 0x300060, length = 0x000002 /*Part of FLASHA. Used for "boot to Flash" bootloader mode. */
/* CSM_PWL : origin = 0x33FFF8, length = 0x000008 Part of FLASHA. CSM password locations in FLASHA */
/* OTP : origin = 0x380400, length = 0x000400 on-chip OTP */
/* ADC_CAL : origin = 0x380080, length = 0x000009 ADC_cal function in Reserved memory */
OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */
IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */
RAML5 : origin = 0x00D000, length = 0x001000 /* on-chip RAM block L1 */
RAML6 : origin = 0x00E000, length = 0x001000 /* on-chip RAM block L1 */
RAML7 : origin = 0x00F000, length = 0x001000 /* on-chip RAM block L1 */
/* ZONE7B : origin = 0x20FC00, length = 0x000400 XINTF zone 7 - data space */
/*FLASHB : origin = 0x338000, length = 0x004000 */ /* on-chip FLASH */
}
/* Allocate sections to memory blocks.
Note:
codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/
SECTIONS
{
/* Allocate program areas: */
/* The Flash API functions can be grouped together as shown below.
The defined symbols _Flash28_API_LoadStart, _Flash28_API_LoadEnd
and _Flash28_API_RunStart are used to copy the API functions out
of flash memory and into SARAM
*/
/*GROUP */
codestart : > BEGIN PAGE = 0
initboot : > FLASHB PAGE = 0
Flash28_API:
{
//bl_flash.obj
-lFlash28235_API_V210.lib(.econst)
-lFlash28235_API_V210.lib(.text)
}
LOAD = FLASHA,
RUN = RAML_lib,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
PAGE = 0
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
boot_ver : > BOOTVER PAGE = 0
part_num : > PARTNUM PAGE = 0
BOOTID : > BOOTIDF PAGE = 0
ramfuncs : LOAD = FLASHC,
RUN = RAML_lib,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
/* csmpasswds : > CSM_PWL PAGE = 0*/
/* csm_rsvd : > CSM_RSVD PAGE = 0*/
FLSDRV : > FLSDRV_AREA PAGE = 0
/* Allocate uninitalized data sections: */
.stack : > RAMM1 PAGE = 1
.ebss : > RAML4 PAGE = 1
.esysmem : > RAMM1 PAGE = 1
/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHA PAGE = 0
.switch : > FLASHA PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT
/**/
vectors : > VECTORS PAGE = 0, TYPE = DSECT
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
}
There is no warns when link the F28234 Flash API. But the MCU I used is 28235. There may be a problem with the project settings. I don't know how to deal with this problem.
I presume the library Flash28235_API_V210.lib comes from C2000Ware. This library contains two input sections named .econst. One is in the object file Flash28_DepRecover.obj and the other one is in the object file Flash28_Erase.obj. If your program never calls any functions, or uses any data, in either of these object files, then this library contributes no .econst input sections, and the linker issues that warning. Does that describe what is happening?
Thanks and regards,
-George
Is the description in my previous post accurate?
Thanks and regards,
-George
Since it has been a while, I presume you have resolved your problem. I'd appreciate hearing how you resolved it.
Thanks and regards,
-George