BACKGROUND
Microcontrollers have different startup behavior based on the conditions during startup. The evaluation of different constraints during startup can delay the start of a user program operating on a microcontroller. This delay can be reduced by partially offloading the task of evaluating different constraints during startup to hardware along with moving software evaluation to a non-critical timing path of execution.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a flow diagram illustrating a method of reducing delay of a start of a user program operating on a microcontroller according to an embodiment of the invention.
DETAILED DESCRIPTION
In an embodiment of the invention, a storage element which provides a user program is extended by logic which can detect special conditions and inject special start addresses on demand. During the read (fetch) of a start address of the user program, which is always at a fixed address for a given CPU, the conditions are used to respond to this read address either by different hardcoded addresses or by the original content of the memory.
FIG. 1 is a flow diagram illustrating a method 100 of reducing delay of a start of a user program operating on a microcontroller according to an embodiment of the invention. At step 102 storage (in this example non-volatile memory (NVM), provides the user code. At step 104 the method determines whether an inter-process communication (IPC) has occurred. When an IPC request has occurred, the method moves to step 106. When an IPC request has not occurred, a read value is returned 118 and the read is finished 120. During step 106 the method checks the lifecycle 106 (i.e. is the system ready). When the system is ready, the method moves to step 108. When the system is not ready, the method returns a test entry address 112 and the read is finished 120. During step 108, the method checks for a communication request (e.g. a JTAG Mailbox Flag is set). When a communication request is found, the method returns a debug entry address 114 and the read is finished 120. When a communication request is not found, the method moves to step 110.
At step 110 the method checks for a valid cold start address. When a valid cold start address is detected, the method returns a BSL entry address 116 and the read is finished 120. When a valid cold start address is not detected, the method returns a return read value 118 and the read is finished 120.