Selective Booting using an internal variable

Hi I am working with the ADSP-21489 and following the EE-345 application note. On the example in EE-345, case 1 approach 1, it does load a differnent application, but using the FLAG0 pin.

My question is, is there a way to boot different applications, depending on a value stored in an external E2PROM memory? Or bootloader restricted size will not allow me to do that and I will need to use a SSL?

Thanks in advance.

Parents
  • 0
    •  Analog Employees 
    on Aug 9, 2019 6:25 AM over 1 year ago

    Hi Alenjandro,

    Regarding, "My question is, is there a way to boot different applications, depending on a value stored in an external E2PROM memory? Or boot loader restricted size will not allow me to do that and I will need to use a SSL?"

    >> Can you explain more in detail ? what kind of application are you using? are looking for Case 2 approach ?

    Please find the attachment. It contains Led_test and ADSP-21489 boot loader Projects. It follows EE-345 Case 2: " Using a Boot Kernel for a Second-Stage Loader approach ".
    boot loader will flashed in sector 0 and Led_test will flashed in sector 1. Whenever the reset occurs. it will load and run the code from sector 1.

    Regards,
    Lalitha S

    Bootloader.zip

  • Thanks for your reply. Giving more explanations,  I wanted to do is a case 1 approach 1 boot type. In the EE-345 example the application launched is selected by pushing a button connected to  the FLAG0 pin. In my case instead for using that pin, I wanted to use a variable stored on an external E2PROM.

    However, the design team decided a different aproach. We will have only an application with the bootloader. That application will decide if it launches the other one.

    the problem we are facing now is if it is possible to load a .ldr and a .dxe on the same DSP but in different memory areas?

    Thanks in advance

  • 0
    •  Analog Employees 
    on Sep 11, 2019 6:21 AM over 1 year ago in reply to AlejandroSolis

    Hi Alenjandro ,

    Regarding, "However, the design team decided a different approach. We will have only an application with the bootloader. That application will decide if it launches the other one."

    >> For this method you can also use Case2 approach. Where the bootloader will decide which application to be loaded. In this method bootloader will flashed in sector 0 and other application's
    will flashed in different sectors. Based on the sector offset address used in the bootloader the particular application will be loaded.

    Regards,
    Anand Selvaraj.

  • Hi there,

    I am trying to use the projects on Bootloader.zip, but they do not work. After the instruction on the main file of the 21489_Bootloader project "asm("jump _load_application;");"  the application is suposed to start reading the flash with the application offset (0x10000).

    The problem is that the processor hangs on the instruction "IF EQ JUMP INIT_EXT16;  jump(pc,0);" on the line 84, in the file boot_kernel.asm

    I did not change anything on any of both projects (Bootloader and LEDs).

    Could you tell me if it has worked on your platform?

    Thanks in advance.

    Alex

  • 0
    •  Analog Employees 
    on Dec 6, 2019 8:48 AM 11 months ago in reply to AlejandroSolis

    Hi Alex,

    1) Yes, it was worked with our ADSP-21489 Ez-kit. Can you share your Bootloader and LED projects that you have used in your board?
    2) Are you using custom board or Ez-kit?

    Regards,
    Anand Selvaraj.

Reply Children
  • Hi Anand,

    1. The projects are the ones that LalithaS attached on this forum. Bootloader prroject works and does the instruction asm("jump _load_application;"); but the problem is that when it starts getting the data from the SPI flash it reads a non valid value and the processor hangs. READ_BOOT_INFO tag on boot_kernel.asm expects a certaint value from function READ_THREEx32, but the value stored on R0 does not correcpond with any of the ones valid.

    2. I am using a custom board, and I think that the problem might be that spi port is configured in different pins from the EZ-kit board for 21489.

    SPI PIN Configuration

    SRU(SPI_MOSI_O, DPI_PB01_I);
    SRU(SPI_MOSI_PBEN_O, DPI_PBEN01_I);
    SRU(DPI_PB01_O, SPI_MOSI_I);


    SRU(SPI_MISO_O, DPI_PB02_I);
    SRU(SPI_MISO_PBEN_O, DPI_PBEN02_I);
    SRU(DPI_PB02_O, SPI_MISO_I);


    SRU(SPI_CLK_O, DPI_PB03_I);
    SRU(SPI_CLK_PBEN_O, DPI_PBEN03_I); // SPI mode 3 for NOR FLASH (CLKPL = CPHASE = 1), so pin enable
    // must be "SPIx_CLK_PBEN_O".
    SRU(DPI_PB03_O, SPI_CLK_I);

    SRU(HIGH, DPI_PB05_I); // Drive the FLASH_CS# high initially.
    SRU(HIGH, DPI_PBEN05_I);

    4857.Bootloader.zip

  • 0
    •  Analog Employees 
    on Dec 27, 2019 12:15 PM 11 months ago in reply to AlejandroSolis

    Hi Alex,

    1) Are you still facing issues?
    2) Is it possible configure the same pins that used in ADSP-21489 EZ-kit in your board?
    3) Can you able to write the .ldr file in SPI flash?
    4) If you are using other pins then ADSP-21489 Ez-kit,Check with the SPI pin configuration in serial driver project in below path.
    C:\Program Files (x86)\Analog Devices\VisualDSP 5.1.2\214xx\Examples\ADSP-21489 EZ-Board\Flash Programmer\Serial

    5) Is it working in debug mode?

    Regards,
    Anand Selvaraj.

  • Hi,

    Sorry for my delayed answer. The desing team decided to exclude the SSL for the project. Thanks for all your help.

    Regards,

    Alejandro