📄 cstartup_sam7.lst
字号:
1 .code 16
2 .file "Cstartup_SAM7.c"
10 .Ltext0:
11 .section .text.AT91F_LowLevelInit,"ax",%progbits
12 .align 2
13 .global AT91F_LowLevelInit
14 .code 16
15 .thumb_func
17 AT91F_LowLevelInit:
18 .LFB290:
19 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
1:../Compil/srcWinARM/Cstartup_SAM7.c **** //-----------------------------------------------------------------------------
2:../Compil/srcWinARM/Cstartup_SAM7.c **** // ATMEL Microcontroller Software Support - ROUSSET -
3:../Compil/srcWinARM/Cstartup_SAM7.c **** //-----------------------------------------------------------------------------
4:../Compil/srcWinARM/Cstartup_SAM7.c **** // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
5:../Compil/srcWinARM/Cstartup_SAM7.c **** // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
6:../Compil/srcWinARM/Cstartup_SAM7.c **** // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
7:../Compil/srcWinARM/Cstartup_SAM7.c **** // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
8:../Compil/srcWinARM/Cstartup_SAM7.c **** // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9:../Compil/srcWinARM/Cstartup_SAM7.c **** // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
10:../Compil/srcWinARM/Cstartup_SAM7.c **** // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11:../Compil/srcWinARM/Cstartup_SAM7.c **** // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
12:../Compil/srcWinARM/Cstartup_SAM7.c **** // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13:../Compil/srcWinARM/Cstartup_SAM7.c **** // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14:../Compil/srcWinARM/Cstartup_SAM7.c **** //-----------------------------------------------------------------------------
15:../Compil/srcWinARM/Cstartup_SAM7.c **** // File Name : Cstartup_SAM7.c
16:../Compil/srcWinARM/Cstartup_SAM7.c **** // Object : Low level initialisations written in C for Tools
17:../Compil/srcWinARM/Cstartup_SAM7.c **** // For AT91SAM7S256 with 2 flash plane
18:../Compil/srcWinARM/Cstartup_SAM7.c **** // Creation : JPP 09-May-2006
19:../Compil/srcWinARM/Cstartup_SAM7.c **** //-----------------------------------------------------------------------------
20:../Compil/srcWinARM/Cstartup_SAM7.c ****
21:../Compil/srcWinARM/Cstartup_SAM7.c **** #include "project.h"
22:../Compil/srcWinARM/Cstartup_SAM7.c ****
23:../Compil/srcWinARM/Cstartup_SAM7.c ****
24:../Compil/srcWinARM/Cstartup_SAM7.c **** // The following functions must be write in ARM mode this function called
25:../Compil/srcWinARM/Cstartup_SAM7.c **** // directly by exception vector
26:../Compil/srcWinARM/Cstartup_SAM7.c **** extern void AT91F_Spurious_handler(void);
27:../Compil/srcWinARM/Cstartup_SAM7.c **** extern void AT91F_Default_IRQ_handler(void);
28:../Compil/srcWinARM/Cstartup_SAM7.c **** extern void AT91F_Default_FIQ_handler(void);
29:../Compil/srcWinARM/Cstartup_SAM7.c ****
30:../Compil/srcWinARM/Cstartup_SAM7.c **** //*----------------------------------------------------------------------------
31:../Compil/srcWinARM/Cstartup_SAM7.c **** //* \fn AT91F_LowLevelInit
32:../Compil/srcWinARM/Cstartup_SAM7.c **** //* \brief This function performs very low level HW initialization
33:../Compil/srcWinARM/Cstartup_SAM7.c **** //* this function can use a Stack, depending the compilation
34:../Compil/srcWinARM/Cstartup_SAM7.c **** //* optimization mode
35:../Compil/srcWinARM/Cstartup_SAM7.c **** //*----------------------------------------------------------------------------
36:../Compil/srcWinARM/Cstartup_SAM7.c **** //void AT91F_LowLevelInit(void) @ "ICODE"
37:../Compil/srcWinARM/Cstartup_SAM7.c **** void AT91F_LowLevelInit(void) {
20 needed for prologue
21 .loc 1 42 0
38:../Compil/srcWinARM/Cstartup_SAM7.c **** unsigned char i;
39:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
40:../Compil/srcWinARM/Cstartup_SAM7.c **** // EFC Init
41:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
42:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS ;
22 ov r3, #128
23 0000 8023 lsl r3, r3, #1
24 0002 5B00 ldr r2, .L26
25 0004 1E4A str r3, [r2, #96]
26 0006 1366 .loc 1 52 0
43:../Compil/srcWinARM/Cstartup_SAM7.c ****
44:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
45:../Compil/srcWinARM/Cstartup_SAM7.c **** // Init PMC Step 1. Enable Main Oscillator
46:../Compil/srcWinARM/Cstartup_SAM7.c **** // Main Oscillator startup time is board specific:
47:../Compil/srcWinARM/Cstartup_SAM7.c **** // Main Oscillator Startup Time worst case (3MHz) corresponds to 15ms
48:../Compil/srcWinARM/Cstartup_SAM7.c **** // (0x40 for AT91C_CKGR_OSCOUNT field)
49:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
50:../Compil/srcWinARM/Cstartup_SAM7.c **** // mtmt avoid warning operator - precedence & > |
51:../Compil/srcWinARM/Cstartup_SAM7.c **** // AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
52:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_PMC->PMC_MOR = ( ( ( AT91C_CKGR_OSCOUNT & (0x40 <<8) ) | AT91C_CKGR_MOSCEN ));
27 .code 16
28 0008 1E4A .thumb_func
30 000c 1A62 AT91F_LowLevelInit:
31 000e 191C .LFB290:
32 0010 0122 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
33 .loc 1 37 0
53:../Compil/srcWinARM/Cstartup_SAM7.c **** // Wait Main Oscillator stabilization
54:../Compil/srcWinARM/Cstartup_SAM7.c **** while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
34 eeded for prologue
35 0012 8B6E .loc 1 42 0
36 0014 1342 mov r3, #128
37 0016 FCD0 lsl r3, r3, #1
55:../Compil/srcWinARM/Cstartup_SAM7.c ****
56:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
57:../Compil/srcWinARM/Cstartup_SAM7.c **** // Init PMC Step 2.
58:../Compil/srcWinARM/Cstartup_SAM7.c **** // Set PLL to 96MHz (96,109MHz) and UDP Clock to 48MHz
59:../Compil/srcWinARM/Cstartup_SAM7.c **** // PLL Startup time depends on PLL RC filter: worst case is choosen
60:../Compil/srcWinARM/Cstartup_SAM7.c **** // UDP Clock (48,058MHz) is compliant with the Universal Serial Bus
61:../Compil/srcWinARM/Cstartup_SAM7.c **** // Specification (+/- 0.25% for full speed)
62:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
63:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_PMC->PMC_PLLR = AT91C_CKGR_USBDIV_1 |
38 r2, .L26
39 0018 1C4B str r3, [r2, #96]
40 001a CB62 .loc 1 52 0
41 001c 1A49 ldr r2, .L26+4
42 001e 0422 ldr r3, .L26+8
43 str r2, [r3, #32]
64:../Compil/srcWinARM/Cstartup_SAM7.c **** (16 << 8) |
65:../Compil/srcWinARM/Cstartup_SAM7.c **** (AT91C_CKGR_MUL & (72 << 16)) |
66:../Compil/srcWinARM/Cstartup_SAM7.c **** (AT91C_CKGR_DIV & 14);
67:../Compil/srcWinARM/Cstartup_SAM7.c **** // Wait for PLL stabilization
68:../Compil/srcWinARM/Cstartup_SAM7.c **** while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
44 ction
45 0020 8B6E AT91F_LowLevelInit:
46 0022 1342 .LFB290:
47 0024 FCD0 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
48 0026 1849 .loc 1 37 0
49 0028 0822 @ lr needed for prologue
50 .loc 1 42 0
69:../Compil/srcWinARM/Cstartup_SAM7.c **** // Wait until the master clock is established for the case we already
70:../Compil/srcWinARM/Cstartup_SAM7.c **** // turn on the PLL
71:../Compil/srcWinARM/Cstartup_SAM7.c **** while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
51 , #128
52 002a 8B6E lsl r3, r3, #1
53 002c 1342 ldr r2, .L26
54 002e FCD0 str r3, [r2, #96]
72:../Compil/srcWinARM/Cstartup_SAM7.c ****
73:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
74:../Compil/srcWinARM/Cstartup_SAM7.c **** // Init PMC Step 3.
75:../Compil/srcWinARM/Cstartup_SAM7.c **** // Selection of Master Clock MCK equal to (Processor Clock PCK) PLL/2=48MHz
76:../Compil/srcWinARM/Cstartup_SAM7.c **** // The PMC_MCKR register must not be programmed in a single write operation
77:../Compil/srcWinARM/Cstartup_SAM7.c **** // (see. Product Errata Sheet)
78:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
79:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2;
55 _LowLevelInit
56 0030 0423 .code 16
57 0032 0B63 .thumb_func
59 0036 0822 AT91F_LowLevelInit:
60 .LFB290:
80:../Compil/srcWinARM/Cstartup_SAM7.c **** // Wait until the master clock is established
81:../Compil/srcWinARM/Cstartup_SAM7.c **** while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
61 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
62 0038 8B6E .loc 1 37 0
63 003a 1342 @ lr needed for prologue
64 003c FCD0 .loc 1 42 0
82:../Compil/srcWinARM/Cstartup_SAM7.c ****
83:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
65 r3, #128
66 003e 0B6B lsl r3, r3, #1
67 0040 0322 ldr r2, .L26
68 0042 1343 str r3, [r2, #96]
69 0044 0B63 .loc 1 52 0
70 0046 1049 ldr r2, .L26+4
71 0048 0822 ldr r3, .L26+8
72 str r2, [r3, #32]
84:../Compil/srcWinARM/Cstartup_SAM7.c **** // Wait until the master clock is established
85:../Compil/srcWinARM/Cstartup_SAM7.c **** while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
73 ction
74 004a 8B6E AT91F_LowLevelInit:
75 004c 1342 .LFB290:
76 004e FCD0 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
86:../Compil/srcWinARM/Cstartup_SAM7.c ****
87:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
88:../Compil/srcWinARM/Cstartup_SAM7.c **** // Disable Watchdog (write once register)
89:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
90:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
77 c 1 37 0
78 0050 8023 @ lr needed for prologue
79 0052 1B02 .loc 1 42 0
80 0054 0E4A mov r3, #128
81 0056 5360 lsl r3, r3, #1
91:../Compil/srcWinARM/Cstartup_SAM7.c ****
92:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
93:../Compil/srcWinARM/Cstartup_SAM7.c **** // Init AIC: assign corresponding handler for each interrupt source
94:../Compil/srcWinARM/Cstartup_SAM7.c **** ///////////////////////////////////////////////////////////////////////////
95:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_AIC->AIC_SVR[0] = (int) AT91F_Default_FIQ_handler ;
82 r2, .L26
83 0058 0E49 str r3, [r2, #96]
84 005a 0F4A .loc 1 52 0
85 005c 8023 ldr r2, .L26+4
86 005e D150 ldr r3, .L26+8
87 0060 0122 str r2, [r3, #32]
88 0062 0E49 mov r1, r3
89 mov r2, #1
96:../Compil/srcWinARM/Cstartup_SAM7.c **** for (i = 1; i < 31; i++) {
97:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_AIC->AIC_SVR[i] = (int) AT91F_Default_IRQ_handler ;
90 .LFB290:
91 0064 9300 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
92 0066 0E48 .loc 1 37 0
93 0068 1B18 @ lr needed for prologue
94 006a 1960 .loc 1 42 0
95 006c 0132 mov r3, #128
96 lsl r3, r3, #1
97 006e 1F2A ldr r2, .L26
98 0070 F8D1 str r3, [r2, #96]
98:../Compil/srcWinARM/Cstartup_SAM7.c **** }
99:../Compil/srcWinARM/Cstartup_SAM7.c **** AT91C_BASE_AIC->AIC_SPU = (unsigned int) AT91F_Spurious_handler;
99 2 0
100 0072 0C4B ldr r2, .L26+4
101 0074 9A22 ldr r3, .L26+8
102 0076 5200 str r2, [r3, #32]
103 0078 0749 mov r1, r3
104 007a 8B50 mov r2, #1
100:../Compil/srcWinARM/Cstartup_SAM7.c **** }
105 .LFB290:
106 .file 1 "../Compil/srcWinARM/Cstartup_SAM7.c"
107 007c 7047 .loc 1 37 0
108 @ lr needed for prologue
109 007e 0000 .loc 1 42 0
110 mov r3, #128
111 0080 00FFFFFF lsl r3, r3, #1
112 0084 01400000 ldr r2, .L26
113 0088 00FCFFFF str r3, [r2, #96]
114 008c 0E104810 .loc 1 52 0
115 0090 40FDFFFF ldr r2, .L26+4
116 0094 00000000 ldr r3, .L26+8
117 0098 00F0FFFF str r2, [r3, #32]
118 009c 00000000 mov r1, r3
119 00a0 80F0FFFF mov r2, #1
120 00a4 00000000 .L2:
121 .loc 1 54 0
122 ldr r3, [r1, #104]
147 .L7:
DEFINED SYMBOLS
*ABS*:00000000 Cstartup_SAM7.c
C:\DOCUME~1\hy\LOCALS~1\Temp/cc00aaaa.s:1 .text:00000000 $t
C:\DOCUME~1\hy\LOCALS~1\Temp/cc00aaaa.s:17 .text.AT91F_LowLevelInit:00000000 AT91F_LowLevelInit
C:\DOCUME~1\hy\LOCALS~1\Temp/cc00aaaa.s:14 .text.AT91F_LowLevelInit:00000000 $t
C:\DOCUME~1\hy\LOCALS~1\Temp/cc00aaaa.s:111 .text.AT91F_LowLevelInit:00000080 $d
UNDEFINED SYMBOLS
AT91F_Default_FIQ_handler
AT91F_Default_IRQ_handler
AT91F_Spurious_handler
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -