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.

Switching bootmode on a DM6437

Hi all

I want to know if it is possible to switch bootmodes on a DM6437 from firmware. Being inexperienced on this platform, we've hardwired our DSP to boot into EMIFA ROM Direct Boot (BOOTMODE[3:0] = 0100, FASTBOOT = 0), thinking that we needed to write our own bootloader. This is not necessary of course, since excellent tools are available to boot from NOR flash (http://e2e.ti.com/forums/t/10054.aspx) I'm wondering now whether it is possible to set a different bootmode from firmware. What I'd like to do is:

1) Boot an assembly program from 0x4200 0000 (as i'm now forced to do)

2) Set the bootmode registers to contain the values I really want

3) Jump to the internal bootloader.

I'm confident that I can get the first two steps to work. I'm not sure how to jump to the internal bootloader, and whether I need to set anything more up for this bootloader to work. I'm also uncertain of how to link my assembly program to the main application, as the .cmd file of a DSP/BIOS dependant application is usually not directly editable.

Besides solving my problem above, it could actually be quite handy to be able to jump to the internal bootloader from firmware. We might want to jump to the UART bootloader for instance, in order to be able to bootload easily in the field where JTAG might not be available.

I'd really appreciate any advice/input.

Leon de Wit

 

  • Leon de Wit said:
    I'm not sure how to jump to the internal bootloader, and whether I need to set anything more up for this bootloader to work.

    I am not sure if the ROM boot loader will run properly a second time either, but the entry point would be 0x00100000 if you wanted to try to branch to it, it should read the new boot mode from the boot mode register and attempt to boot in that fashion. In general I would probably modify your hardware in a new revision to change the boot mode and possibly to allow future boot mode changes in case another boot mode becomes handy in the future (i.e. expose the boot pins through surface mount resistor pads, jumpers, etc.).

    Leon de Wit said:
    I'm also uncertain of how to link my assembly program to the main application, as the .cmd file of a DSP/BIOS dependant application is usually not directly editable.

    You could add a second linker command file to the project to define a custom section like this which links in the BIOS .cmd file, that way you can keep your custom portion of the linker command file constant. There is an old Kbase article on this here which should still apply.

  • Hi Bernie

    Many thanks for the reply.

    Bernie Thompson said:

    In general I would probably modify your hardware in a new revision to change the boot mode and possibly to allow future boot mode changes in case another boot mode becomes handy in the future (i.e. expose the boot pins through surface mount resistor pads, jumpers, etc.).

    Definitely. We were squashed for space this time round, but I think we learned the hard way that not bringing out these pins weren't worth it.

    Bernie Thompson said:

    You could add a second linker command file to the project to define a custom section like this which links in the BIOS .cmd file, that way you can keep your custom portion of the linker command file constant. There is an old Kbase article on this here which should still apply.

    I'll try booting this way, and post back when I have some results.

    Thanks again!

    Leon

  • Hi Bernie

    I've had a look at the DSP datasheet again. The BOOTCFG register is read only, so it seems this will definitely not work as I hoped.

    Thanks very much for your help anyway.

    Leon

  • Leon de Wit said:
    I've had a look at the DSP datasheet again. The BOOTCFG register is read only, so it seems this will definitely not work as I hoped.

    That is a good point, the BOOTCFG register is designed to be read only so that the reset latched state of the boot pins it represents are maintained, so it seems the only way to change this value is through external hardware and a reset.

    Unfortunately it seems it is not possible to rerun the boot loader in ROM with a different mode in software, you would have to do this from the flash image you are booting out of or mod the board to have control over boot pins.