Chapter 4. API Guides
# Non-preferred
[sections:text]
entries:
.text
.text.*
.literal
.literal.*
# Preferred, equivalent to the one above
[sections:text]
entries:
.text+ # means .text and .text.*
.literal+ # means .literal and .literal.*
Scheme
Scheme fragments define what target a sections fragment is assigned to.
[scheme:name]
entries:
sections -> target
sections -> target
...
Example:
[scheme:noflash]
entries:
text -> iram0_text # the entries under the sections fragment named␣
,→text will go to iram0_text
rodata -> dram0_data # the entries under the sections fragment named␣
,→rodata will go to dram0_data
The default scheme
There exists a special scheme with the name default. This scheme is special because catch-all placement rules
are generated from its entries. This means that, if one of its entries is text -> flash_text, the placement rule
will be generated for the target flash_text.
*(.literal .literal.* .text .text.*)
These catch-all rules then effectively serve as fallback rules for those whose mappings were not specified.
The default scheme is defined in esp_system/app.lf. The noflash and rtc scheme fragments which are
built-in schemes referenced in the quick start guide are also defined in this file.
Mapping
Mapping fragments define what scheme fragment to use for mappable entities, i.e. object files, function names,
variable names, archives.
[mapping:name]
archive: archive # output archive file name, as built (i.e. libxxx.
,→a)
entries:
object:symbol (scheme) # symbol granularity
object (scheme) # object granularity
* (scheme) # archive granularity
There are three levels of placement granularity:
• symbol: The object file name and symbol name are specified. The symbol name can be a function name or a
variable name.
• object: Only the object file name is specified.
Espressif Systems 1417
Submit Document Feedback
Release v4.4