📄 cstartup_sam7.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 28/Feb/2007 15:38:26 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\srcIAR\Cstartup #
# _SAM7.c #
# Command line = "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\srcIAR\Cstartup #
# _SAM7.c" -lC "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\List\" #
# -o "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\Obj\" #
# -z9 --debug --cpu_mode thumb --endian little --cpu #
# ARM7TDMI --stack_align 4 --interwork -e --fpu None #
# --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\arm\LIB\dl4tptinl8n.h" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\srcIAR\" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\..\src\" -I #
# "D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\..\..\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.0 Evaluation\arm\INC\" #
# List file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\List\Cst #
# artup_SAM7.lst #
# Object file = D:\work\AC-530\software\my #
# usb\AT91SAM7S-USART_USB_SAM7S\Compil\Binary\Obj\Csta #
# rtup_SAM7.r79 #
# #
# #
##############################################################################
D:\work\AC-530\software\my usb\AT91SAM7S-USART_USB_SAM7S\Compil\srcIAR\Cstartup_SAM7.c
1 //-----------------------------------------------------------------------------
2 // ATMEL Microcontroller Software Support - ROUSSET -
3 //-----------------------------------------------------------------------------
4 // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
5 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
6 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
7 // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
8 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
10 // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
12 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13 // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 //-----------------------------------------------------------------------------
15 // File Name : Cstartup_SAM7.c
16 // Object : Low level initialisations written in C for Tools
17 // For AT91SAM7S64 with 2 flash plane
18 // Creation : JPP 09-May-2006
19 //-----------------------------------------------------------------------------
20
21 #include "project.h"
22
23
24 // The following functions must be write in ARM mode this function called
25 // directly by exception vector
26 extern void AT91F_Spurious_handler(void);
27 extern void AT91F_Default_IRQ_handler(void);
28 extern void AT91F_Default_FIQ_handler(void);
29
30 //*----------------------------------------------------------------------------
31 //* \fn AT91F_LowLevelInit
32 //* \brief This function performs very low level HW initialization
33 //* this function can use a Stack, depending the compilation
34 //* optimization mode
35 //*----------------------------------------------------------------------------
\ In segment ICODE, align 4, keep-with-next
36 void AT91F_LowLevelInit(void) @ "ICODE"
37 {
\ AT91F_LowLevelInit:
\ 00000000 10B5 PUSH {R4,LR}
38 unsigned char i;
39 ///////////////////////////////////////////////////////////////////////////
40 // EFC Init
41 ///////////////////////////////////////////////////////////////////////////
42 AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS ;
\ 00000002 9F20 MOV R0,#+159
\ 00000004 C043 MVN R0,R0 ;; #-160
\ 00000006 8021 MOV R1,#+128
\ 00000008 4900 LSL R1,R1,#+1 ;; #+256
\ 0000000A 0160 STR R1,[R0, #+0]
43
44 ///////////////////////////////////////////////////////////////////////////
45 // Init PMC Step 1. Enable Main Oscillator
46 // Main Oscillator startup time is board specific:
47 // Main Oscillator Startup Time worst case (3MHz) corresponds to 15ms
48 // (0x40 for AT91C_CKGR_OSCOUNT field)
49 ///////////////////////////////////////////////////////////////////////////
50 AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
\ 0000000C 1948 LDR R0,??AT91F_LowLevelInit_0 ;; 0xfffffc20
\ 0000000E 1A49 LDR R1,??AT91F_LowLevelInit_0+0x4 ;; 0x4001
\ 00000010 0160 STR R1,[R0, #+0]
\ 00000012 1A48 LDR R0,??AT91F_LowLevelInit_0+0x8 ;; 0xfffffc68
51 // Wait Main Oscillator stabilization
52 while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
\ ??AT91F_LowLevelInit_1:
\ 00000014 0168 LDR R1,[R0, #+0]
\ 00000016 C907 LSL R1,R1,#+31
\ 00000018 FCD5 BPL ??AT91F_LowLevelInit_1
53
54 ///////////////////////////////////////////////////////////////////////////
55 // Init PMC Step 2.
56 // Set PLL to 96MHz (96,109MHz) and UDP Clock to 48MHz
57 // PLL Startup time depends on PLL RC filter: worst case is choosen
58 // UDP Clock (48,058MHz) is compliant with the Universal Serial Bus
59 // Specification (+/- 0.25% for full speed)
60 ///////////////////////////////////////////////////////////////////////////
61 AT91C_BASE_PMC->PMC_PLLR = AT91C_CKGR_USBDIV_1 |
62 (16 << 8) |
63 (AT91C_CKGR_MUL & (72 << 16)) |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -