Loader init code in Second Stage Loader (SSL) and in application

Hi,

let's assume that I have two projects: 1) an SSL and 2) an application. Both CCES projects include a CCES Blackfin Loader step which points to an initialization file.

When both the SSL and the application are flashed and the system boots (BF70x family), is it possible that only the init code of the SSL gets executed?

(The application is booted in the SSL via adi_rom_boot function.)

If so, how is this mechanism controlled?

Kind regards,

Matthias

  • 0
    •  Analog Employees 
    on Jan 29, 2019 2:41 PM over 1 year ago

    Hi Matthias,

    Regarding,"is it possible that only the init code of the SSL gets executed?"

    >> Yes it is possible. I have attached the one simple LED code for your requirement, This code will turn on the LED4. I have taken the Init code from the below mentioned Installation Path and modified to turn on the LED3. While creating loader file I have used modified init code. So when am booting this application the LED3&LED4 will turn on.
    Installation Path: Analog Devices\CrossCore Embedded Studio 2.8.2\Blackfin\ldr\init_code\BF70x_Init\BF707_init

    According to your scenario I have add the "asm("JUMP 0;");" after LED3 configuration. So that when am booting the application that booting will stop in init code asm("JUMP 0;"); line.

    Regarding, "how is this mechanism controlled?"

    >> Please refer EE-374 application note, which describes what an SSL is , how to create loader (LDR) files from DXEs, and how to write LDR  files  to  SPI flash  memory. And also example code associated with that. Please find the application note and associated from below link,
    EE-374 application note: www.analog.com/.../EE374v01.pdf
    Code: www.analog.com/.../EE374v01.zip

    For more information you can also refer the Boot ROM and Booting the Processor section(PageNo:1871 / 2223) in the HRM of ADSP-BF707. Please find the HRM from below link,
    www.analog.com/.../BF70x_BlackfinProcessorHardwareReference.pdf

    Regards,
    Lalitha.S

  • Hi Lathila,

    thank you for my reply. I think my formulation was misleading. Let me correct my question to:

    If I use init code in the bootloader and I use init code in the application, does the processor only execute the init code in the bootloader and not in the application?

    If so, why? And what makes the processor control it?

    If no, I see another effect.

    Regards,

    Matthias

  • 0
    •  Analog Employees 
    on Feb 9, 2019 11:19 AM over 1 year ago in reply to matthiaswe
    Hello Matthias,

    Can you please let me know, Since the SSL code is already having the init code? why are again adding the init code in the application, Is there any reason for this?
    Usually, if you use the second stage loader (SSL), you need not use init code in the application, since former can perform the default code performs operations such as initializing SDRAM Controller settings & PLL settings . User may even change PLL settings, if required.
    Regards,
    Lalitha
  • Hello Lalitha,

    there's currently not really a requirement to have the init code in both, the SSL and the application(s) - but this is the current configuration.

    So I was wondering how the DSP would behave if both had init code in it, as this can be set in the CCES project.

    If we have init code in both, how does the system behave?

    Kind regards,
    Matthias

  • 0
    •  Analog Employees 
    on May 22, 2019 3:18 PM over 1 year ago in reply to matthiaswe

    Hello Matthias,

    Regarding, "If we have init code in both, how does the system behave?"
    >> The first project init_code initialize the clock configuration and DDR configuration while coming out of reset. After when the second application called upon the first application, if the init_code again exists on the second application, the clock configuration and DDR configuration has been reinitialized.
    This is no longer necessary for the normal application until this must be a requirement for the application to change the processor state from one to another.

    Probably, the purpose of init_code is used to sustain the processor in expected operational condition via initializing SDRAM Controller settings & PLL settings before entering into main application. This suits for SSL implementation as well.

    Regards,
    Lalitha