2020-07-18 10:52 PM
I am using a stm8s103f which has 8K flash. My project compiles fine using the cosmic compiler. I get a map that looks like this .
start 00008080 end 00008080 length 0 segment .const
start 000080a1 end 00008924 length 2179 segment .text
start 00004000 end 00004000 length 0 segment .eeprom
start 00000000 end 00000019 length 25 segment .bsct, initialized
start 00008088 end 000080a1 length 25 segment .bsct, from
start 00000019 end 000000b9 length 160 segment .ubsct
start 000000b9 end 000000b9 length 0 segment .bit
start 000000b9 end 000000b9 length 0 segment .share
start 00000100 end 00000100 length 0 segment .data
start 00000100 end 00000100 length 0 segment .bss
start 00000000 end 0000074e length 1870 segment .info.
start 00000000 end 00001a11 length 6673 segment .debug
start 00008000 end 00008080 length 128 segment .const
start 00008080 end 00008088 length 8 segment .init
When I try to add a large constant array with
const u16 tempTable[867] = {
<snip>
}
I get the build error "segment .text size overflow (14)".
What am I doing wrong? 2179 plus 2*867 is less than 8K.
2020-07-19 12:57 AM
check the map file when linker fail, reduce the table by binary search to find out the limit, check the linker parameter file in case the memory range is wrong. also check thatthere is no float ansi lib plugged in and bloating the flash for example.
2020-07-19 02:26 AM
const isnt definition for placement of data, but protected against write. Some compilers place it to data area.
2020-07-19 04:38 AM
static const
2020-07-19 10:52 AM
> check the linker parameter file
Thks. Which file/location is that? I'll look for it.
> Some compilers place it to data area
The error specifically says it is .text that is overflowing. That is the 8K code segment, right?
> static const
I just tried that and it didn't help.