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:
0x real_ramcode_size ~ 0x 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
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.
. = 0x _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
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.