📄 board_memories.lst
字号:
###############################################################################
# #
# 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_memories.c #
# Command line = E:\IAR\at91lib\boards\at91sam9260-ek\board_memories.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_memories.lst #
# Object file = E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\Obj\board_memories.o #
# #
# #
###############################################################################
E:\IAR\at91lib\boards\at91sam9260-ek\board_memories.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 Title: Memories implementation
32 */
33
34 //------------------------------------------------------------------------------
35 // Headers
36 //------------------------------------------------------------------------------
37
38 #include <board.h>
39 #include <pio/pio.h>
40
41 /*
42 Macros:
43 READ - Reads a register value. Useful to add trace information to read
44 accesses.
45 WRITE - Writes data in a register. Useful to add trace information to
46 write accesses.
47 */
48 #define READ(peripheral, register) (peripheral->register)
49 #define WRITE(peripheral, register, value) (peripheral->register = value)
50
51 //------------------------------------------------------------------------------
52 // Internal functions
53 //------------------------------------------------------------------------------
54
55 //------------------------------------------------------------------------------
56 // Exported functions
57 //------------------------------------------------------------------------------
58 //------------------------------------------------------------------------------
59 /// Changes the mapping of the chip so that the remap area mirrors the
60 /// internal ROM or the EBI CS0.
61 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
62 void BOARD_RemapRom()
63 {
64 WRITE(AT91C_BASE_MATRIX, MATRIX_MRCR, 0);
\ BOARD_RemapRom:
\ 00000000 FF00E0E3 MVN R0,#+255
\ 00000004 400DC0E3 BIC R0,R0,#0x1000
\ 00000008 0010A0E3 MOV R1,#+0
\ 0000000C 001080E5 STR R1,[R0, #+0]
65 }
\ 00000010 1EFF2FE1 BX LR ;; return
66
67 //------------------------------------------------------------------------------
68 /// Changes the mapping of the chip so that the remap area mirrors the
69 /// internal RAM.
70 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
71 void BOARD_RemapRam()
72 {
73 WRITE(AT91C_BASE_MATRIX,
74 MATRIX_MRCR,
75 (AT91C_MATRIX_RCA926I | AT91C_MATRIX_RCA926D));
\ BOARD_RemapRam:
\ 00000000 FF00E0E3 MVN R0,#+255
\ 00000004 400DC0E3 BIC R0,R0,#0x1000
\ 00000008 0310A0E3 MOV R1,#+3
\ 0000000C 001080E5 STR R1,[R0, #+0]
76 }
\ 00000010 1EFF2FE1 BX LR ;; return
77
78 //------------------------------------------------------------------------------
79 /// Initialize and configure the SDRAM
80 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
81 void BOARD_ConfigureSdram()
82 {
\ BOARD_ConfigureSdram:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 08D04DE2 SUB SP,SP,#+8
83 volatile unsigned int i;
84 static const Pin pinsSdram = PINS_SDRAM;
85 volatile unsigned int *pSdram = (unsigned int *) AT91C_EBI_SDRAM;
\ 00000008 8005A0E3 MOV R0,#+536870912
\ 0000000C 0040B0E1 MOVS R4,R0
86
87 // Enable corresponding PIOs
88 PIO_Configure(&pinsSdram, 1);
\ 00000010 0110A0E3 MOV R1,#+1
\ 00000014 A8019FE5 LDR R0,??BOARD_ConfigureSdram_0 ;; ??pinsSdram
\ 00000018 ........ BL PIO_Configure
89
90 // Enable EBI chip select for the SDRAM
91 WRITE(AT91C_BASE_MATRIX, MATRIX_EBI, AT91C_MATRIX_CS1A_SDRAMC);
\ 0000001C E300E0E3 MVN R0,#+227
\ 00000020 400DC0E3 BIC R0,R0,#0x1000
\ 00000024 0210A0E3 MOV R1,#+2
\ 00000028 001080E5 STR R1,[R0, #+0]
92
93 // CFG Control Register
94 WRITE(AT91C_BASE_SDRAMC, SDRAMC_CR, AT91C_SDRAMC_NC_9
95 | AT91C_SDRAMC_NR_13
96 | AT91C_SDRAMC_CAS_2
97 | AT91C_SDRAMC_NB_4_BANKS
98 | AT91C_SDRAMC_DBW_32_BITS
99 | AT91C_SDRAMC_TWR_2
100 | AT91C_SDRAMC_TRC_7
101 | AT91C_SDRAMC_TRP_2
102 | AT91C_SDRAMC_TRCD_2
103 | AT91C_SDRAMC_TRAS_5
104 | AT91C_SDRAMC_TXSR_8);
\ 0000002C F700E0E3 MVN R0,#+247
\ 00000030 540DC0E3 BIC R0,R0,#0x1500
\ 00000034 8C119FE5 LDR R1,??BOARD_ConfigureSdram_0+0x4 ;; 0x85227259
\ 00000038 001080E5 STR R1,[R0, #+0]
105
106 for (i = 0; i < 1000; i++);
\ 0000003C 0010A0E3 MOV R1,#+0
\ 00000040 00108DE5 STR R1,[SP, #+0]
\ ??BOARD_ConfigureSdram_1:
\ 00000044 00009DE5 LDR R0,[SP, #+0]
\ 00000048 FA0F50E3 CMP R0,#+1000
\ 0000004C 0300002A BCS ??BOARD_ConfigureSdram_2
\ 00000050 00009DE5 LDR R0,[SP, #+0]
\ 00000054 010090E2 ADDS R0,R0,#+1
\ 00000058 00008DE5 STR R0,[SP, #+0]
\ 0000005C F8FFFFEA B ??BOARD_ConfigureSdram_1
107
108 WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_NOP_CMD); // Perform NOP
\ ??BOARD_ConfigureSdram_2:
\ 00000060 FF00E0E3 MVN R0,#+255
\ 00000064 540DC0E3 BIC R0,R0,#0x1500
\ 00000068 0110A0E3 MOV R1,#+1
\ 0000006C 001080E5 STR R1,[R0, #+0]
109 pSdram[0] = 0x00000000;
\ 00000070 0000A0E3 MOV R0,#+0
\ 00000074 000084E5 STR R0,[R4, #+0]
110
111 WRITE(AT91C_BASE_SDRAMC, SDRAMC_MR, AT91C_SDRAMC_MODE_PRCGALL_CMD); // Set PRCHG AL
\ 00000078 FF00E0E3 MVN R0,#+255
\ 0000007C 540DC0E3 BIC R0,R0,#0x1500
\ 00000080 0210A0E3 MOV R1,#+2
\ 00000084 001080E5 STR R1,[R0, #+0]
112 pSdram[0] = 0x00000000; // Perform PRCHG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -