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.

Branch into SCI boot from flash program without setting GPIO boot pins?

Other Parts Discussed in Thread: CONTROLSUITE

Is there a way to branch to SCI boot from my flash program without setting thye GPIO boot pins? I would like to have the dsp boot into SCI mode after we have booted to flash in an effort to later program flash from SCI down the line.

  • Henry,

    If you take a look at the BootROM projects within controlSUITE, you should be able to load this project and find the SCI_Boot function.

    I would recommend taking a look at the following thread to see if it makes sense:
    http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/155583/681411.aspx#681411

    Let us know if you have any questions.


    Thank you,
    Brett

  • Brett,

    What is the SCI_Boot fucntion call and address for the f2808? Looking at SCI_BOOT in controlSUITE I see the function call and address for the f2802x is Uint32 SCI_Boot() at 003ff6c7. I imagine the address is different for the f2808 but is the function call the same?

    I have implemented the following code based on your link above:

    void (*entry)();
    unsigned long boot_addr = 0x003ffdd5;

    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    //Prepare For SCI BootLoading
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    EALLOW;
    DINT;
    EDIS;
    PieCtrlRegs.PIECTRL.bit.ENPIE = 0; // Disable the PIE    
    DisableDog(); // Disable the watchdog
      
    EALLOW;

    entry = (void(*)())(boot_addr);
     
    entry();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

    boot_addr = 0x003ffdd5 was chosen based on a guess looking at the assembly code stepping through the boot load sequence.

    The above code implementation does not branch to address 0x003ffdd5? Any idea why? Does it have the do with an incorrect call for static function pointing? The plan is to branch to the f2808 SCI boot loader without setting GPIO pins and then have C2Prog take over the flash programming.

    thank you for your help,

    Henry

  • Henry,

    I knew I should have asked what device...

    For 'F2808 the Boot ROM software is outside of controlSUITE:
    http://www.ti.com/mcu/docs/litabsmultiplefilelist.tsp?sectionId=96&tabId=1502&literatureNumber=spru722c&docCategoryId=6&familyId=1523
    (you can also search for "Boot ROM" on 'F2808 product page)

    Hopefully this helps some. I'll try to get someone more familiar with BootROM to also look at this thread.


    Thank you,
    Brett

  • Brett,

    Looking at the linked F280x BootROM spru722c.pdf; the SCI_Boot fucntion call is the same as f2802x, however I did not come across a SCI_Boot address listed. Is there an available boot_rom.map for the f2808? 

    thanks,

    Henry

  • Henry B said:

    Brett,

    Looking at the linked F280x BootROM spru722c.pdf; the SCI_Boot fucntion call is the same as f2802x, however I did not come across a SCI_Boot address listed. Is there an available boot_rom.map for the f2808? 

    thanks,

    Henry

    Henry,

    You can download the associated code for the boot ROM including the .map file here: www.ti.com/litv/zip/spru722

    Regards

    Lori

  • Thanks Lori, we have now been able to successfully branch to SCI bootloader using f280x address 0x003ffd63 and then using the .out provided to step through the bootload sequence(very cool!). We have both verified that 1) our program is branching to the SCI-boot function and 2) when booting to SCI using GPIO pins c2prog successfully programs the f2808.

    My question is:

    When running c2prog after booting to SCI-boot from flash without the debugger, it seems to get hung up halfway through the SCI bootloading process well after the autobaud function has successfully run. When connecting the debugger and running without setting break points it also gets hung up halfway into the SCI bootloading process after autobaud. When breaking using the debugger at the C2prog hang up, it points to the first while loop in the Uint16 SCIA_GetWordData() routine. Is there a register that needs to be set up before jumping to SCI_boot beyond turning off the watch-dog and interrupts, i.e. setting up an entry point register or something? I cannot figure out why the dsp using the SCI-GPIO would behave any differently than jumping directly to the SCI_boot address. 

     thank you for your help!

  • Hi Henry,

    For what its worth I am having what appears to be the same problem here. The SCI boot selection via the external pins works fine. However calling the SCI boot routine from my application instead causes the download process to stop prematurely .  I am also using C2Prog V1.5.

    Connecting with target (autobaud)...  OK.

    Bootloading...  OK.

    Please wait...

    Connecting with target...  failed (no response)!

    Lori, if you can help us it would be much appreciated.

    many thanks

  • Stewart,

    I started a new thread at: http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/246637/864014.aspx#864014 thinking that maybe the branch from flash into SCI boot programming with c2prog is a seperate issue than just simply the branch to sci boot as the thread title suggests. Anyways, please check out the progress on that thread and maybe we can all solve this thing,

    thanks! 

    Henry

  • Sorry guys - sometimes we miss follow-on post when a thread is marked answered - we shall continue on the new thread :) 

  • Hi Lori,

    I was just wondering if this can be applied to F28335 Experimenter Card. I am trying to do the same thing since I want to have the ability to program through SCI, but would like the code to run right away from flash when no programming is required, if there is nothing received on SCI.

    Thank you,
    Kamal Joshi
  • Kamal,
    yes it is possible, Please read through the suggestions in this post and the linked post two messages above.

    Best Regards
    Santosh Athuru