Skip to main content
Mateusz Grosik
Associate II
December 13, 2016
Question

SPC56 BAM bootloader

  • December 13, 2016
  • 2 replies
  • 1114 views
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 topic has been closed for replies.

    2 replies

    Erwan YVIN
    ST Employee
    December 14, 2016
    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
    February 23, 2017
    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