- BOARD-NAME: AM43__GP
- BOARD-VER : 1.4
- RAM TYPE : MT41K512M8RH-125 (CS0 PIN ONLY)
- RAM SIZE : 4 x (64 Meg x 8 x 8 banks, 4Gb) = 16Gb = 2 GB
DRAM-1 Module RAM의 구성과 Type 및 각 용어 설명
DRAM-2 Memory의 성능향상 방법 Bank Interleaving 과 Burst Mode 및 DLL
https://ahyuo79.blogspot.com/2015/07/ram.html
2. AM437x DDR3 CONFIG TI-GUIDE
http://processors.wiki.ti.com/index.php/AM437x_DDR_Configuration_and_Programming_Guide
상위 사이트에서 다 주위깊게 봐야겠지만, U-BOOT에서 기본적으로 자동으로 설정을
하기에, 아래 부분을 주의깊게 봐야겠다.
- EMIF General Configuration Registers
- DDR PHY Control Register --->
- AC Timing Registers (TI에서 Excel을 제공)
- Setting Refresh rate
Power Consumption (옵션)
- Internal DDR Clocks ( DLL Clock을 사용한다면, 현재 미사용)
3. Uboot DDR CLOCK 설정
DDR 설정은 현재 400MHz 나오며, 이는 외부 오실레이터에 의해 결정된다. (24MHz)
CLOCK부분과 POWER쪽에 전체적인 완벽한 이해는 추후 다시한번해야함.
- SoC PLL 설정 전체구조
- PLL의 DDR PLL 구조
PLL의 INPUT CLOCK은 우선 PRCM.CM_CLKSEL_DPLL_DDR.DPLL_BYP_CLKSEL의 의해 CLKINP or CLKINPULOW 결정되고 (CLKINPULOW는 PM사용시 사용),
ALT_CLK0,1 TEST 목적으로 사용
Master OSC : 19.2/24/25/26 MHz ( 회로도 확인: OSC0 24MHz )
- EMIF-CLOCK (EMIF Maximum Frequency)
위와 같이 400MHz 동작하지만, Micron DDR3는 이보다 더 지원이 가능함.
3.1 Uboot DDR Clock
* board/ti/am43xx/board.c gp_evm_dpll_ddr * arch/arm/cpu/armv7/am33xx/clock.c setup_dplls->get_dpll_ddr_params() struct dpll_params { u32 m; //PRCM_CM_CLKSEL_DPLL_DDR->DPLL_MULT u32 n; //PRCM_CM_CLKSEL_DPLL_DDR->DPLL_DIV s8 m2; s8 m3; s8 m4; s8 m5; s8 m6; };
Power Management에 의해 아래와 같이 4가지 모드로 설정이 가능하지만,
GP EVM은 한가지모드로 설정로 설정하여 사용.
const struct dpll_params epos_evm_dpll_ddr[NUM_CRYSTAL_FREQ] = { {665, 47, 1, -1, 4, -1, -1}, /*19.2*/ {133, 11, 1, -1, 4, -1, -1}, /* 24 MHz */ {266, 24, 1, -1, 4, -1, -1}, /* 25 MHz */ {133, 12, 1, -1, 4, -1, -1} /* 26 MHz */ }; // 회로도에서 Input 24MHz 확인 const struct dpll_params gp_evm_dpll_ddr = { 50, 2, 1, -1, 2, -1, -1}; // 상위 dpll_params 참조
3.2 DDR PLL의 계산방법
- CLKOUT : [M / (N+1)] * CLKINP * [1/M2] = 266MHz
- CLKDCOLDO : 2 * [M / (N+1)] * CLKINP = 532MHz
* GP_BOARD의 경우 다음과 같이 설정
상위 gp_evm_dpll_ddr기반으로 계산
50 / (2+1) * 24 /(1) = 400MHz (OSC: 회로도 확인 24MHz)
- TI Manual 참고
- 6.6.3.1 Clock Functions
- 6.6.11 DDR PLL Description ( 666MHz 로 되나, M2 1이면 반으로 됨)
- PRCM_CM_CLKSEL_DPLL_DDR
m2= DFI_CLK (차분CLK),
m4= DLL CLK 지원
4. DDR Timing 및 Config 설정
- DDR3 EMIF PINMAP
위와 보다시피 , Embeded는 ODT는 사용하지 않는다.
4.1 Uboot DDR Timing source
- Main 관련설정 source
sdram_init() -> config_ddr -> set_sdram_timings() // DDR Timing
- 기타 관련설정 source
arch/arm/cpu/armv7/am33xx/ddr.c
arch/arm/cpu/armv7/am33xx/emif4.c
4.2 Uboot EMIF Config 및 Timing
GP_EVM은 3가지 Version이 존재함 (현재 1.4용)
const struct emif_regs ddr3_emif_regs_400Mhz_production = { .sdram_config = 0x638413B2, .ref_ctrl = 0x00000C30, .sdram_tim1 = 0xEAAAD4DB, .sdram_tim2 = 0x266B7FDA, .sdram_tim3 = 0x107F8678, .read_idle_ctrl = 0x00050000, .zq_config = 0x50074BE4, .temp_alert_config = 0x0, .emif_ddr_phy_ctlr_1 = 0x0E004008, .emif_ddr_ext_phy_ctrl_1 = 0x08020080, .emif_ddr_ext_phy_ctrl_2 = 0x00000066,// .emif_ddr_ext_phy_ctrl_3 = 0x00000091,// .emif_ddr_ext_phy_ctrl_4 = 0x000000B9,// .emif_ddr_ext_phy_ctrl_5 = 0x000000E6,// .emif_rd_wr_exec_thresh = 0x80000405,// .emif_prio_class_serv_map = 0x80000001, .emif_connect_id_serv_1_map = 0x80000094, .emif_connect_id_serv_2_map = 0x00000000, .emif_cos_config = 0x000FFFFF };
각 설정을 MT41K512M8RH-125 데이타 시트와 비교하고,DDR3 SDRAM Initialization을 확인하자
- EMIF의 관련 설정
EMIF4D_SDRAM_CONFIG 0x638413B2 SDRAM_TYPE 3 (DDR3) SDRAM Type selection. IBANK_POS 0 (Decimal) Internal bank position. DDR_TERM 3 (RZQ/6) DDR3 termination resistor value. LPDDR2_DDQS 1 (differential DQS) LPDDR2 differential DQS enable. DYN_ODT 0 (Turn off DYN_ODT) DDR3 Dynamic ODT. DDR_DISABLE_DLL 0 (Disable DLL) Disable DLL select. SDRAM_DRIVE 1 (Decimal) SDRAM drive strength. 0 for RZQ/6 , 1 for RZQ/7 CWL 0 (Decimal) DDR3 CAS Write latency. NARROW_MODE 0 (32bit) SDRAM data bus width. CL 4 (Decimal) CAS Latency. ROWSIZE 7 (Decimal) Row Size. IBANK 3 (Decimal) Internal Bank setup. EBANK 0 (use pad_cs_o_n[0] only) External chip select setup. PAGESIZE 2 ((9 colum bits)) Page Size.
관련설정은 AC-TIMING 참고하여 설정하자
AM437x에는 DDR에 많은기능이 추가되었지만, 사용하지 않으면 필요없다.
* HW-LEVELING, DLL, 기타 등등