?? board_lowlevel.lst
字號(hào):
###############################################################################
# #
# 08/Mar/2009 17:38:35 #
# IAR ANSI C/C++ Compiler V5.20.2.21007/W32 EVALUATION for ARM #
# Copyright 1999-2008 IAR Systems AB. #
# #
# Cpu mode = arm #
# Endian = little #
# Source file = E:\IAR\at91lib\boards\at91sam9260-ek\board_lowlevel.c #
# Command line = E:\IAR\at91lib\boards\at91sam9260-ek\board_lowlevel.c #
# -D at91sam9260 -D sdram -lC #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\List\ --remarks --diag_suppress #
# Pe826,Pe1375 -o E:\IAR\at91sam9260-ek\basic-twi-eeprom-p #
# roject\ewp\at91sam9260_sdram\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian=little #
# --cpu=ARM926EJ-S -e --fpu=None --dlib_config #
# "D:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\DLib_Config_Full.h" -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\ -I E:\IAR\at91sam9260-ek\basic-twi-eeprom-p #
# roject\ewp\..\..\..\at91lib\boards\at91sam9260-ek\ -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\peripherals\ -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\components\ -I E:\IAR\at91sam9260-ek\basic-t #
# wi-eeprom-project\ewp\..\..\..\at91lib\usb\ -I #
# "D:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\" --interwork --cpu_mode arm -On #
# List file = E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\List\board_lowlevel.lst #
# Object file = E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\Obj\board_lowlevel.o #
# #
# #
###############################################################################
E:\IAR\at91lib\boards\at91sam9260-ek\board_lowlevel.c
1 /* ----------------------------------------------------------------------------
2 * ATMEL Microcontroller Software Support
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2008, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29
30 //------------------------------------------------------------------------------
31 // Headers
32 //------------------------------------------------------------------------------
33
34 #include "board.h"
35 #include "board_memories.h"
36
37 //------------------------------------------------------------------------------
38 // Internal definitions
39 //------------------------------------------------------------------------------
40 /*
41 Constants: Clock and PLL settings
42
43 BOARD_OSCOUNT - Startup time of main oscillator (in number of slow clock
44 ticks).
45 BOARD_USBDIV - USB PLL divisor value to obtain a 48MHz clock.
46 BOARD_CKGR_PLL - PLL frequency range.
47 BOARD_PLLCOUNT - PLL startup time (in number of slow clock ticks).
48 BOARD_MUL - PLL MUL value.
49 BOARD_DIV - PLL DIV value.
50 BOARD_PRESCALER - Master clock prescaler value.
51 */
52
53 #define AT91C_AIC_BRANCH_OPCODE ((void (*) ()) 0xE51FFF20)
54
55 #define BOARD_OSCOUNT (AT91C_CKGR_OSCOUNT & (64 << 8))
56 #define BOARD_CKGR_PLLA (AT91C_CKGR_SRCA | AT91C_CKGR_OUTA_2)
57 #define BOARD_PLLACOUNT (63 << 8)
58 #define BOARD_MULA (AT91C_CKGR_MULA & (96 << 16))
59 #define BOARD_DIVA (AT91C_CKGR_DIVA & 9)
60 #define BOARD_PRESCALER AT91C_PMC_MDIV_2
61
62 #define BOARD_USBDIV AT91C_CKGR_USBDIV_2
63 #define BOARD_CKGR_PLLB AT91C_CKGR_OUTB_0
64 #define BOARD_PLLBCOUNT BOARD_PLLACOUNT
65 #define BOARD_MULB (124 << 16)
66 #define BOARD_DIVB 12
67
68 //------------------------------------------------------------------------------
69 // Internal functions
70 //------------------------------------------------------------------------------
71 /*!
72 Default spurious interrupt handler
73 */
\ In section .text, align 4, keep-with-next
74 void defaultSpuriousHandler()
75 {
76 while (1);
\ defaultSpuriousHandler:
\ ??defaultSpuriousHandler_0:
\ 00000000 FEFFFFEA B ??defaultSpuriousHandler_0
77 }
78
79 /*!
80 Default handler for fast interrupt requests.
81 */
\ In section .text, align 4, keep-with-next
82 void defaultFiqHandler()
83 {
84 while (1);
\ defaultFiqHandler:
\ ??defaultFiqHandler_0:
\ 00000000 FEFFFFEA B ??defaultFiqHandler_0
85 }
86
87 /*!
88 Default handler for standard interrupt requests.
89 */
\ In section .text, align 4, keep-with-next
90 void defaultIrqHandler()
91 {
92 while (1);
\ defaultIrqHandler:
\ ??defaultIrqHandler_0:
\ 00000000 FEFFFFEA B ??defaultIrqHandler_0
93 }
94
95
96 //------------------------------------------------------------------------------
97 // Exported functions
98 //------------------------------------------------------------------------------
99 /*!
100 Performs the low-level initialization of the chip.
101 */
\ In section .text, align 4, keep-with-next
102 void LowLevelInit()
103 {
\ LowLevelInit:
\ 00000000 10402DE9 PUSH {R4,LR}
104 unsigned char i;
105
106 //#if !defined(sdram)
107 /* Initialize main oscillator
108 ****************************/
109 AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
\ 00000004 DF00E0E3 MVN R0,#+223
\ 00000008 C00FC0E3 BIC R0,R0,#0x300
\ 0000000C 0110A0E3 MOV R1,#+1
\ 00000010 401C81E3 ORR R1,R1,#0x4000
\ 00000014 001080E5 STR R1,[R0, #+0]
110 while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
\ ??LowLevelInit_0:
\ 00000018 9700E0E3 MVN R0,#+151
\ 0000001C C00FC0E3 BIC R0,R0,#0x300
\ 00000020 000090E5 LDR R0,[R0, #+0]
\ 00000024 010010E3 TST R0,#0x1
\ 00000028 FAFFFF0A BEQ ??LowLevelInit_0
111
112 /* Initialize PLLA at 200MHz (198.656) */
113 AT91C_BASE_PMC->PMC_PLLAR = BOARD_CKGR_PLLA
114 | BOARD_PLLACOUNT
115 | BOARD_MULA
116 | BOARD_DIVA;
\ 0000002C D700E0E3 MVN R0,#+215
\ 00000030 C00FC0E3 BIC R0,R0,#0x300
\ 00000034 80119FE5 LDR R1,??LowLevelInit_1 ;; 0x2060bf09
\ 00000038 001080E5 STR R1,[R0, #+0]
117 while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKA));
\ ??LowLevelInit_2:
\ 0000003C 9700E0E3 MVN R0,#+151
\ 00000040 C00FC0E3 BIC R0,R0,#0x300
\ 00000044 000090E5 LDR R0,[R0, #+0]
\ 00000048 020010E3 TST R0,#0x2
\ 0000004C FAFFFF0A BEQ ??LowLevelInit_2
118
119 // Initialize PLLB for USB usage
120 AT91C_BASE_PMC->PMC_PLLBR = BOARD_USBDIV
121 | BOARD_CKGR_PLLB
122 | BOARD_PLLBCOUNT
123 | BOARD_MULB
124 | BOARD_DIVB;
\ 00000050 D300E0E3 MVN R0,#+211
\ 00000054 C00FC0E3 BIC R0,R0,#0x300
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -