Telink TLSR8232 BLE SDK Developer Handbook
AN-19112700-E1 28 Ver.1.0.0
3) cache
The starting address and ending address of cache are:
0x808000 + real_ramcode_size ~ 0x808900 + real_ramcode_size
0x809800 ~ 0x80a100
cache related information is not shown in the list file.
4) text
“text” section contains 0x6f30 bytes (size = 0x86c0 – 0x1790) with starting address being
0x1790 (ending address of “ram_code”), ending address 0x86c0, the same as what
shown in Figure 2-3 above.
5) rodata
The starting address of “rodata” is the ending address of “text” 0x86c0 and the ending
address is 0x9124.
As shown in “5316_ble_remote.bin”, the actual bin size is 0x92c4. According to the
analysis above, the remaining firmware space 0x9124 ~ 0x92c4 is actually “data init
value”, i.e. initial values of initialized global variables in Firmware. “data init value” is not a
specific section in the list file. Users can search the keyword “_dstored_” and find the
value “0x9124” which is the starting address of “data init value”.
00009124 g *ABS* 00000000 _dstored_
The “_dstored_” definition in the “boot.link is shown below. It tells the compiler that initial
values of initialized global variables in the “data” section are all stored in “_dstored_” of
Firmware.
. = 0x808900 + _ramcode_size_div_256_ * 0x100;
.data :
AT ( _dstored_ )
{
. = (((. + 3) / 4)*4);
PROVIDE(_start_data_ = . );
*(.data);
*(.data.*);
. = (((. + 3) / 4)*4);
PROVIDE(_end_data_ = . );
}
6) data
The starting address of “data” is the ending address of cache 0x80a100. The size of
“data” shown in Figure 2-3 is 0x194.
The final variable in “data” section is “ota_firmware_size_k”, a int variable. Its address is
0x80a290 and its size is 4-byte. Therefore the ending address of “data” is 0x80a294, and
the size of “data” is 0x80a294 - 0x80a100 = 0x194, as shown in Figure 2-3.