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.

Using Sys/BIOS within a bootloader - how to shut it down?

Other Parts Discussed in Thread: TM4C129ENCPDT

Hi all,

I had a working construct of a bootloader at zero and application at offset 0x20000 in flash.

Everything worked as expected until I found I need to start Sys/BIOS within the bootloader. Since in every example it is stated that BIOS_start() does not return, I moved the NVIC relocation code to my one thread that I start. This does not work, I expected this already.

How can I determine which Interrupts run, or is there a hook I can use to jump when all threads finished?

I already tried this

Hwi_disable();
HWREG(NVIC_DIS0) = 0xFFFFFFFF;
HWREG(NVIC_DIS1) = 0xFFFFFFFF;
HWREG(NVIC_DIS2) = 0xFFFFFFFF;
HWREG(NVIC_DIS3) = 0xFFFFFFFF;
HWREG(NVIC_DIS4) = 0xFFFFFFFF;
HWREG(NVIC_UNPEND0) = 0xFFFFFFFF;
HWREG(NVIC_UNPEND1) = 0xFFFFFFFF;
HWREG(NVIC_UNPEND2) = 0xFFFFFFFF;
HWREG(NVIC_UNPEND3) = 0xFFFFFFFF;
HWREG(NVIC_UNPEND4) = 0xFFFFFFFF;
HWREG(NVIC_VTABLE) = 0x00020000;
__asm(" ldr r1, [r0]\n" " mov sp, r1");
__asm(" ldr r0, [r0, #4]\n" " bx r0\n");

but this did also not work...

Uhh, I forgot to mention I use the TM4C129ENCPDT.

Thank you for your help,

Günter.

  • The entry point for SYS/BIOS applications is the "_c_int00" symbol. Your boot loader should jump to that address.

    If you need to force this symbol to be placed at a known location, follow the instructions here.

    Alan

  • Thank you for your quick response, Alan.
    The code I used relocates the whole interrupt table to the second binary image and then jumps to it's _c_int00 symbol.
    Sadly the error sat in front of the PC :)
    Me having it misconfigured, my CCS Debugger erased the first 16k of my second binary, including the vector table.
    So...
    Sorry for wasting your time and thank you nonetheless,
    Günter.