This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SRIO boot

Hello I'm going to use SRIO boot mode for c6455.

As I understood, when I'll transmit all sections of the program and send the doorbell, execution will be started from 0x00800000 (L2 start)

So, what must I do, to load any program through the  SRIO. (Entry point is not on the L2 start)

One of decision is to create my own section with size of some words each booting program at L2 start and  link assembly file containig branch instructions

to the real entry point in each executable, that will be placed at L2 start and so program will be started correctly.

Also I can integrate such section in my image of program (I'm using my own utility to create such image, that I used for i2c slave boot mode) , but how can I garantee

that loading program does not contain any initialized data or code.

Both of these solutions are not good, have you any ideas or standart  decision of this problem?

Sorry for my English and thank you.

  • Hello Michael,

    You are right about srio boot processing, but you fully forgot about interrupt vector table.

    You may not define it explicitly, and not used any interrupts, but THEY ARE. ISTP CPU register point to table and first entry of this table is RESET handler.

    I suggest you should explicitly define interrupt vector table just for RESET handler in asm source like

        .ref    _c_int00    ; program reset address
        .sect   ".run_from_hold"
        .align    32
    _RESET:                        ; reset entry
        MVKL    _c_int00, B3
        MVKH    _c_int00, B3
        B    B3
        NOP    5

    and configure link by CMD file to place  .run_from_hold section at 0x800000 address.

     

    BR, Serge

  • Hello, Serge. Thanks for the quick answer.

    I think. I don't understan your answer at all.

    I'm going to use such asm code

        ref _c_int00 ; program reset address
        .sect ".run_from_hold"
        .align 32

        MVKH _c_int00, B3
        MVKL _c_int00, B3
        BNOP B3,5

    What is _RESET? I thought that my interrupt table is part of my program image. Isn't it? (My image is basing on the hex6x utility image)

    Or you mean, that I must handle RESET interrupt handler as method of saying to my program that it has to run from _c_int00?

    Why must I use the 0x0080000 address? What will happen when DSP will go out of reset. If reset interrupt will occur, how can I transmit data through the SRIO?

     Thanks