TI E2E Community
Digital Signal Processors (DSP)
C6000 Single Core DSP
C64x Single Core DSP Forum
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?
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?
Search for answers, Ask a question, click Verify when complete, Help others, Learn more.
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,
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?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.