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.

C6457 Supervisor Mode

I would like to manually set caching on the C6457 in the bootloader code that I would like to keep minimal.  To set MAR bits with minimal code, it would be easier to stay in supervisor mode upon booting.  Is there a safe method for doing so? 

  • William,

    My expectation would be that the entire bootloading process is in supervisor mode. Is there any reason to leave it before starting the full application?

    Which boot mode are you using? Do you use a secondary bootloader in that process?

    Regards,
    RandyP

  • Randy,

         We are using a multi-stage bootloader process; the I2C EEPROM, written in assembly, for some register setup for 16-bit EMIF on flash, load the tertiary bootloader from flash into SRAM.  The tertiary bootloader is using the sys/bios, because of a need from a legacy effort.  I also have a timer rollover of ~25 seconds, handled by an ISR. 

    I would guess the sys/bios would control the supervisor mode on the kernel thread.  In absence of a BIOS, would it just stay in supervisor mode, even with the ISR?

    Should we remove the bios?  Or, is there a latch we can use to prevent the switch?

    Thanks for the fast response,

     

  • William,

    Honestly, I have never considered using Supervisor and User modes, although I assume some of my customers have used these for some level of protection from code bugs and such.

    How SYS/BIOS uses it is probably configurable by you. As far as I know, no example app I have written has ever left Supervisor mode, so the default is probably staying there. The real answer probably needs to come from someone in the BIOS forum.

    I assume you would want to set your cache mode in the assembly-based secondary bootloader. You should clearly still be in Supervisor mode there, and it will only take a few writes in your assembly code to get the cache configured how you want it to be. Will that work for you?

    Or, it would seem feasible to do it in the main() code of the tertiary bootloader. I would expect main() to still be Supervisor since it is supposed to be the place for system and peripheral initialization.

    Which would be most convenient for you?

    Regards,
    RandyP