⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at91cap9-dk-ddram.gdb

📁 这是在linux下gnu环境中进行norflash测试的代码
💻 GDB
字号:
# SDRAM initialization script for the AT91CAP9-DK
#------------------------------------------------
# Configure master clock
echo Configuring the master clock...\n
# Enable main oscillator
set *0xFFFFFC20 = 0x00004001
while ((*0xFFFFFC68 & 0x1) == 0)
end

# set PLLA to 200MHz
set *0xFFFFFC28 = 0x2031BF03
while ((*0xFFFFFC68 & 0x2) == 0)
end

# Select prescaler
set *0xFFFFFC30 = 0x00000100
while ((*0xFFFFFC68 & 0x8) == 0)
end

# Select master clock
set *0xFFFFFC30 = 0x00000102
while ((*0xFFFFFC68 & 0x8) == 0)
end

echo Master clock ok.\n
echo Configuring the DDRAM controller...\n

# AT91C_BASE_PMC->PMC_SCER = (0x1 << 2);
set *0xFFFFFC00 = 0x00000002

# Ensure that Matrix is connected to enable fetch Data & PDC
set *0xFFFFEB00 = 0x00000007
  
# First, enable the clock of the PIO / Enable PIO A B C D
set *0xFFFFFC00 = 0x00000085

#------------------------------------------------------------------------------------

# Memory Device Register 
# Mobile DDRAM type | 16bit MODE
# ddrc->SDDRC_MDR  = 0x00000013;
set *0xFFFFE61C = 0x00000013   
   
# Configuration Register
# Weak driver strength(1) | Disable DLL reset(0) | SDRAM CAS = 3 | row = 13 | column = 9
# ddrc->SDDRC_CR   = 0x00000138;  
set *0xFFFFE608 = 0x00000138
      
# Timing 0 Parameter Register
# tmrd = 2 | twtr = 1 | trrd = 2 | trrd = 2 | trp = 3 | trc = 8 | twr = 2 | trcd = 3 | tras = 5   
# ddrc->SDDRC_T0PR = 0x21238235;
set *0xFFFFE60C = 0x21238235
      
# Timing 1 Parameter Register
# txp = 4 | txsrd = 0xC | txsnr = 0xC | trfc = 9
# ddrc->SDDRC_T1PR = 0x040C0C09;
set *0xFFFFE610 = 0x040D0D09
   
# Low-power Register   
# Low power register => Low-power is inhibited
# all bank refresh during self refresh (PASR = b000)   
# ddrc->SDDRC_LPR  = 0x00000000; 
set *0xFFFFE618 = 0x00000000

#------------------------------------------------------------------------------------

# NOP command
# ddrc->SDDRC_MR = 0x00000001; 
set *0xFFFFE600 = 0x00000001
set *0x70000000 = 0x00000000

# Precharge All Banks command
# ddrc->SDDRC_MR = 0x00000002;  
set *0xFFFFE600 = 0x00000002
set *0x70000000 = 0x00000000 
   
# AutoRefresh command
# ddrc->SDDRC_MR = 0x00000004;  
set *0xFFFFE600 = 0x00000004
set *0x70000000 = 0x00000000
   
# AutoRefresh command
# ddrc->SDDRC_MR = 0x00000004;   
set *0xFFFFE600 = 0x00000004
set *0x70000000 = 0x00000000

#----------------------------------------------------------------------------------

# Mode Register Set command
# ddrc->SDDRC_MR = 0x00000003;
set *0xFFFFE600 = 0x00000003
set *0x70000000 = 0x00000000
   
# Extended Mode Register Set command
# ddrc->SDDRC_MR = 0x00000005;   
set *0xFFFFE600 = 0x00000005
set *0x100000 = *0x71000000
   
# Set Normal mode
# ddrc->SDDRC_MR = 0x00000000;
set *0xFFFFE600 = 0x00000000
set *0x100000 = *0x70000000
set *0x70000000 = 0x00000000
   
# Set Refresh Timer : ((64 x 10^-3)/8192) x 48 x 10^6   --->  375 for 48 MHz
# Set Refresh Timer : ((64 x 10^-3)/8192) x 100 x 10^6   --->  781 for 100 MHz   
set *0xFFFFE604 = 0x0000044C
   
# High speed register : Optimization is enabled
set *0xFFFFE614 = 0x00000000

echo DDRAM configuration ok.\n

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -