cancel
Showing results for 
Search instead for 
Did you mean: 

SPC56 BAM bootloader

Mateusz Grosik
Associate II
Posted on December 13, 2016 at 21:48

Hello

In my Engineering Thesis i make a SPC56 BAM bootloader using CAN. A board with STM32 f103 'sending' code via CAN to CAN on taget board with SPC560B and program uP using BAM.

Can i do this in SPC5 studio? Becouse i cant find any options and configuration in program.

Best regards

This discussion has been locked for participation. If you have a question, please start a new topic in order to ask your question
2 REPLIES 2
Erwan YVIN
ST Employee
Posted on December 14, 2016 at 09:49

Hello Mateusz ,

Yes , it is possible , better to use  user.ld to customize your own linker file

 you can find any information in the RM SPC56B (reference manual) (chap 6 Microcontroller boot)  (Bolero B)

Between 2 boards , you should use some CAN Transceivers between the 2 boards.

              Best regards

                                    Erwan

Mateusz Grosik
Associate II
Posted on February 24, 2017 at 00:04

Ok thanks, i used transceivers between the 2 boards. Now i want to run uC in BAM mode. I generate a CAN example using project wizard, can i change here application.ld file to make BAM mode or how i can make a user.ld?

I make some standalone_ram.ld in ghs, here is my file, it is correct to ran uC in BAM mode?

Here is code:

MEMORY {

// 384k Internal Flash

flash_rsvd1 : ORIGIN = 0x00000000, LENGTH = 8

flash_memory : ORIGIN = ., LENGTH = 384K-8

flash_rsvd2 : ORIGIN = ., LENGTH = 0

// 24KB of internal SRAM starting at 0x40000000

dram_rsvd1 : ORIGIN = 0x40000000, LENGTH = 0

dram_reset : ORIGIN = ., LENGTH = 0

dram_memory : ORIGIN = ., LENGTH = 24K-256

heap_reserve:origin = ., LENGTH = 8K

stack_reserve:origin = ., LENGTH = 8K

dram_rsvd2 : ORIGIN = ., LENGTH = 16

}

DEFAULTS {

stack_reserve = 4K

heap_reserve = 4K

}

//

// Program layout for running out of RAM.

//

//

SECTIONS

{

.PPC.EMB.sdata0 ABS : > dram_memory

.PPC.EMB.sbss0 CLEAR ABS : > .

.text : > dram_memory

.vletext : > .

.syscall : > .

.rchw NOCHECKSUM : > .

.secinfo : > .

.rodata : > .

.sdata2 : > .

.fixaddr : > .

.fixtype : > .

.sdabase ALIGN(16) : > dram_memory

.sdata : > .

.sbss : > .

.data : > .

.bss : > .

.heap ALIGN(16) PAD(heap_reserve) : > .

.stack ALIGN(16) PAD(stack_reserve) : > .

//

// These special symbols mark the bounds of RAM and ROM memory.

// They are used by the MULTI debugger.

//

__ghs_ramstart = MEMADDR(dram_rsvd1);

__ghs_ramend = MEMENDADDR(dram_memory);

__ghs_romstart = MEMADDR(flash_rsvd1);

__ghs_romend = MEMENDADDR(flash_rsvd2);

_ram_image_heap = ENDADDR (heap_reserve);

_ram_image_stack = ENDADDR (stack_reserve);

_ram_image_end = ENDADDR (.bss);

}

Best regards

Mateusz