Hello all,
I'm doing a flash programming utility via SCI mode. I made the following steps:
1)First
program is downloaded on M0 and M1 SARAM, is executing correctly. It
must set the baudrate and pll and receive a second program which is
using L0 SARAM.
2)Sent the second program. When the program is
written the first program make a jump to the main of the second program
starting from 0x8000. This program has the flashing library.
After the jump I receive no answer from the second program. I exclude that the jump routine is not working.
Here the linkers for the two programs: do you see any mistake?
--------FIRST PROGRAM - WORKING--------
MEMORY
{
PAGE 0 :
/* For this example, L0 is split between PAGE 0 and PAGE 1 */
/* BEGIN is used for the "boot to SARAM" bootloader mode */
BEGIN : origin = 0x000000, length = 0x000002
RAMM0 : origin = 0x000050, length = 0x0003B0
PRAML0 : origin = 0x008000, length = 0x000900
RESET : origin = 0x3FFFC0, length = 0x000002
IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
BOOTROM : origin = 0x3FF27C, length = 0x000D44
PAGE 1 :
/* For this example, L0 is split between PAGE 0 and PAGE 1 */
BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
DRAML0 : origin = 0x008900, length = 0x000700
}
SECTIONS
{
/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
codestart : > RAMM0, PAGE = 0
ramfuncs : > RAMM0 PAGE = 0
.text : > RAMM0, PAGE = 0
.cinit : > RAMM0, PAGE = 0
.pinit : > RAMM0, PAGE = 0
.switch : > RAMM0, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
sci_func : > RAMM0, PAGE = 0
APIstart : > PRAML0, PAGE = 0
.stack : > RAMM1, PAGE = 1
.ebss : > DRAML0, PAGE = 1
.econst : > DRAML0, PAGE = 1
.esysmem : > RAMM1, PAGE = 1
IQmath : > PRAML0, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
---------SECOND PROGRAM - NOT WORKING--------
MEMORY
{
PAGE 0 :
/* For this example, L0 is split between PAGE 0 and PAGE 1 */
/* BEGIN is used for the "boot to SARAM" bootloader mode */
BEGIN : origin = 0x000000, length = 0x000002
RAMM0 : origin = 0x000050, length = 0x0003B0
PRAML0_0 : origin = 0x008000, length = 0x000004
PRAML0 : origin = 0x008004, length = 0x001000 /*modified*/
RESET : origin = 0x3FFFC0, length = 0x000002
IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
BOOTROM : origin = 0x3FF27C, length = 0x000D44
PAGE 1 :
/* For this example, L0 is split between PAGE 0 and PAGE 1 */
BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
/*DRAML0 : origin = 0x008900, length = 0x000700*/ /*modified*/
}
SECTIONS
{
/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
ramfuncs : > PRAML0 PAGE = 0
.text : > PRAML0, PAGE = 0 /*modified*/
.cinit : > PRAML0, PAGE = 0 /*modified*/
.pinit : > PRAML0, PAGE = 0 /*modified*/
.switch : > PRAML0, PAGE = 0 /*modified*/
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
sci_func : > PRAML0, PAGE = 0
APIstart : > PRAML0_0, PAGE = 0
.stack : > PRAML0, PAGE = 0 /*modified*/
.ebss : > PRAML0, PAGE = 0 /*modified*/
.econst : > PRAML0, PAGE = 0 /*modified*/
.esysmem : > PRAML0, PAGE = 0 /*modified*/
data_buffer : > PRAML0, PAGE = 0 /*added*/
IQmath : > PRAML0, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD