SLAA450G April 2010 – April 2020
To be able to use all BSL functions, some code need to be placed in the other than BSL information memory area. One most important thing to be considered is that the BSL area in the information memory is protected by default, but not with the main memory. The user needs to understand the BSL flow to erase the memory carefully during programming so that the BSL code will not be accidentally erased.
It is recommended to also place the additional section after the interrupt vector area in the main memory which is located from 0xFF80-0xFFFF.
To allocate BSL in main memory, the linker command file need to have second flash section. For example:
Memory sections of BSL code
ZAREA : origin = 0x1000, length = 0x0010
BSL430_VERSION_VENDOR : origin = 0x1010, length = 0x0001
BSL430_VERSION_CI : origin = 0x1011, length = 0x0001
BSL430_VERSION_API : origin = 0x1012, length = 0x0001
BSL430_VERSION_PI : origin = 0x1013, length = 0x0001
ZAREA_CODE : origin = 0x1014, length = 0x002E
FLASH : origin = 0x1042, length = 0x07AE
FLASH2 : origin = 0x10000,length = 0x1000
BSLSIG : origin = 0x17F0, length = 0x000C
JTAGLOCKKEY : origin = 0x17FC, length = 0x0004
|
Assignment between build binary and memory sections
...
.text : {}>> FLASH | FLASH2 /* CODE */
.text:_isr : {} > FLASH | FLASH2 /* ISR CODE SPACE */
.cinit : {} > FLASH | FLASH2 /* INITIALIZATION TABLES */
.const : {} > FLASH | FLASH2 /* CONSTANT DATA */
.cio : {} > RAM /* C I/O BUFFER */
.pinit : {} > FLASH | FLASH2 /* C++ CONSTRUCTOR TABLES */
.init_array : {} > FLASH | FLASH2 /* C++ CONSTRUCTOR TABLES */
.mspabi.exidx : {} > FLASH | FLASH2 /* C++ CONSTRUCTOR TABLES */
.mspabi.extab : {} > FLASH | FLASH2 /* C++ CONSTRUCTOR TABLES */
...
|