Hi Lukas,
Thanks for the code provided. It gave us a good starting point for writing our own BL code.
But I have an issue while writing SREC file into the flash. It doesnt get write fully. We try to read the flash area for some 200 bytes and only 100 bytes of the App srec are written.
Can you explain what the below statements mean in your code?
/* Select all blocks except blocks occupied by bootloader */
lowBlockSelect = 0x17C;
midBlockSelect = 0x3FE;
highBlockSelect = 0x0;
n256KBlockSelect.first256KBlockSelect = 0x003FFFFF;
n256KBlockSelect.second256KBlockSelect = 0x0;
How this mapping is done in terms of "0x00F8C000--0x00F8FFFF and 0x00F90000--0x00F93FFF".
We have provided like this:
blockSelect.lowBlockSelect = 0x100U;
blockSelect.midBlockSelect = 0x0U;
blockSelect.highBlockSelect = 0x0U;
blockSelect.first256KBlockSelect = 0x0FFFU; // Select all blocks except blocks occupied by boot-loader
blockSelect.second256KBlockSelect = 0x0U;
g_usrCnt = 0U;
and our BL linker is :
/* Define FLASH */
FLASH_BASE_ADDR = DEFINED(__flash_base_addr__) ? __flash_base_addr__ : 0x00FB0000;
FLASH_SIZE = DEFINED(__flash_size__) ? __flash_size__ : 160k;
/* Define SRAM */
SRAM_BASE_ADDR = DEFINED(__sram_base_addr__) ? __sram_base_addr__ : 0x40000000;
SRAM_SIZE = DEFINED(__sram_size__) ? __sram_size__ : 256K;
/* Define RAppID boot data address */
RAPPID_BOOT_APP_DELAY_ADDR = 0x00FA0008;
RAPPID_BOOT_APP_KEY_ADDR = 0x00FA000C;
MEMORY
{
flash_rchw : org = 0x00FA0000, len = 0x4
cpu0_reset_vec : org = 0x00FA0000+0x10, len = 0x4
cpu1_reset_vec : org = 0x00FA0000+0x14, len = 0x4
cpu2_reset_vec : org = 0x00FA0000+0x04, len = 0x4
rappid_boot_data : org = 0x00FA0000+0x08, len = 0x8
m_text : org = FLASH_BASE_ADDR, len = FLASH_SIZE
m_data : org = SRAM_BASE_ADDR, len = SRAM_SIZE
}
Please guide us where are we going wrong.