AN4253
Application note
SPC564Lx device startup flow
Introduction
This document describes the startup process of the SPC564Lx between the reset to the first
instructions of the application startup code.
It describes all the necessary steps involved to successfully achieve application startup. It
also describes possible modifications in the low level startup blocks that may be changed,
replaced or edited depending on the system needs.
This document is intended as a guideline for software developers responsible for low level
startup code and building blocks.
September 2013
DocID024255 Rev 2
1/44
www.st.com
Contents
AN4253
Contents
1
2
Startup flow diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
After reset init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1
2.2
Core Register Init (LSM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Memory Management Unit (MMU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1
2.2.2
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3
SSCM HW configuration check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1
3.2
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
SSCM fault handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4
FCCU block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1
4.2
4.3
4.4
4.5
4.6
4.7
FCCU status check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Read critical and non-critical faults in FCCU (FCCU.CF/NCF) . . . . . . . . 12
4.2.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Analyze FCCU faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
STCU fault analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Save FCCU faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Reset FCCU faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
FCCU fault handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5
RGM block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1
5.2
5.3
5.4
Read RGM status (both destructive and functional resets) . . . . . . . . . . . 15
5.1.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
POR/destructive/external reset check . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Expected functional reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
User specific code for given expected reset . . . . . . . . . . . . . . . . . . . . . . . 16
2/44
DocID024255 Rev 2
AN4253
Contents
5.5
5.6
5.7
Save reset flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Clear reset flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.6.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
RGM fault handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6
Safe mode block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.1
6.2
6.3
6.4
6.5
Read current mode of the microcontroller . . . . . . . . . . . . . . . . . . . . . . . . 18
6.1.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Safe mode check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Mode change to DRUN request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.3.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
DRUN mode check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.4.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ME fault handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7
HW resource initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.1
7.2
AIPS protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.1.1
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
PFlash controller setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.2.1
7.2.2
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.3
7.4
Core registers initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.3.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Cache memory initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.4.1
7.4.2
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.5
Branch prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.5.1
7.5.2
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.6
7.7
7.8
Clock system initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.6.1
Default reset configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
CLK fault handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Software Watchdog Timer (SWT) disable . . . . . . . . . . . . . . . . . . . . . . . . 28
7.8.1
Default reset value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
DocID024255 Rev 2
3/44
Contents
7.8.2
AN4253
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8
RAM initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.1
Init whole RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.1.1
Code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9
10
Application ‘asm’ startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Application ‘C’ startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Appendix A asm examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
A.1
A.2
A.3
A.4
A.5
A.6
A.7
A.8
A.9
A.10
A.11
A.12
A.13
Symbol defines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Core register init (LSM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MMU entry configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
SSCM HW configuration check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
FCCU handling block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
RGM block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Safe mode block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
AIPS protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Cache memory initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Branch prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Clock system initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Software Watchdog Timer (SWT) disable . . . . . . . . . . . . . . . . . . . . . . . . . 41
Init whole RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Appendix B Further information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
B.1
B.2
Reference documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4/44
DocID024255 Rev 2
AN4253
List of tables
List of tables
Table 1.
Table 2.
Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
DocID024255 Rev 2
5/44