Hi
Presently the linker script file is not correct:
MEMORY {
m_reset (RX) : ORIGIN = 0x8080, LENGTH = 0x20
prog_flash (RX) : ORIGIN = 0x80a0, LENGTH = 0x80000-0x80a0
m_interrupts (RX) : ORIGIN = 0x8080, LENGTH = 0x000001E0
m_text (RX) : ORIGIN = 0x00000800, LENGTH = 0x0007F800
m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00020000
m_cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
}
This is only locating the reset vector, interrupt vectors and program to be above 0x8000. m_text and m_cfmprotrom are still at their original locations which means that they overlap with the boot loader area. The result is that there is a large space between the two and the first bytes in the file belong to m_cfmprotrom (m_cfmprotrom is of no consequence for the application since the bot loader defines this area - it can be either removed or left as dummy data).
You need to do something like:
MEMORY {
m_reset (RX) : ORIGIN = 0x8080, LENGTH = 0x20
prog_flash (RX) : ORIGIN = 0x80a0, LENGTH = 0x80000-0x80a0
m_interrupts (RX) : ORIGIN = 0x8080, LENGTH = 0x000001E0
m_text (RX) : ORIGIN = 0x00008800, LENGTH = 0x0007F800-0x8000
m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00020000
m_cfmprotrom (RX) : ORIGIN = 0x00080400, LENGTH = 0x00000010
}
In the resulting map file these shoudl be NO code or const data below 0x8080 - if there is there is an error.
The file raw.bin is also not correct. It contains HEX coding and is not binary (?) Check the use of the conversion program.
Regards
Mark