第十三章、Tiny4412 U-BOOT移植十三 DDR3初始化源码分析

发布者:心若澄明最新更新时间:2021-12-07 来源: eefocus关键字:Tiny4412  U-BOOT移植  DDR3  初始化 手机看文章 扫描二维码
随时随地手机看文章

第一步、设置时钟

按上一章中步骤来说明:

1.  DMC must assert and hold CKE to a logic lowlevel to provide stable power for memory device and then apply stable clock.

设置DMC,由于时钟已经在clock_init_mytiny4412.S中进行了设置,这里可以不用再做设置了。只要保持CKE为低电平


第二步、设置Phycontrol_n寄存器

2.  Set the PhyControl0.ctrl_start_point andPhyControl0.ctrl_inc bit-fields to a correct value according to clockfrequency. Set the PhyControl0.ctrl_dll_on bit-field to "1" toactivate the PHY DLL.

依照时钟频率正确配置PhyControl0.ctrl_start_point和PhyControl0.ctrl_inc bit-fields的值。配置的PhyControl0.ctrl_dll_on值为'1'以打开PHY DLL。

3.  DQS cleaning: Set the PhyControl1.ctrl_shiftcand PhyControl1.ctrl_offsetc bit-fields to the appropriate value according toclock frequency, board delay, and memory tDQSCK parameter.

4.  Set the PhyControl0.ctrl_start bit-field to"1".

那开始配置PhyControl0和PhyControl1的相关位,查看手册的第18章,找到相关寄存器的配置。


表13-1、PhyControl0和PhyControl1相关寄存器地址

第2步中我们要配置我们需要正确配置PhyControl0寄存器的ctrl_start_point和ctrl_inc这两个位的值,OK,查看寄存器的描述。


表13-2、PhyControl0相关寄存器地址



ctrl_start_point和ctrl_inc这两位芯片手册上给的参考值为0x10,先配这两位,则为:

ctrl_start_point: 0x10---- 10000(二进制)

ctrl_inc: 0x10 ---- 10000(二进制)

那么ctrl_force怎么搞呢,我也没有闹明白,代码一开始设置是0x71,在上面的第11步中有这么句话:

11.  Wait for the PhyStatus0.ctrl_lockedbit-fields to change to "1". Verify whether PHY DLL is locked.PHY DLLcompensates the changes of delay amount that pressure, volume, and temperaturevariation causes during memory operation. Therefore, you should not power offPHY DLL for reliable operation. It can be in power-off mode except when it runsat low frequency.When you use the power-off mode, setthe PhyControl0.ctrl_force bit-fieldto the correct value according to the PhyStatus0.ctrl_lock_value[9:2] bit-fieldfor fix delay amount. Clear the PhyControl0.ctrl_dll_on bit-field to turn offPHY DLL.


上面说不能关闭了PHY DLL的电源,只有当他在低的时钟频率时才可以切换到Power-off 模式,当我们用power-off 模式,参考PhyStatus0.ctrl_lock_value[9:2]的延时参数来设置PhyControl0.ctrl_force bit-field,清除PhyControl0.ctrl_dll_on bit-field来关闭 PHY DLL。我查看了PhyStatus寄存器的说明,他是只读的,上电初始化是0x0,那FriendlyARM为什么设置这个值呢?我也不是很清楚了。DDR3的工作原理还是没有搞的很清楚呀,暂留一疑问吧。


ctrl_dfdps:这一位手册说明如果是LPDDR2这一位一定要置位,所以这一位设置为1.

其余的位全部配成0,最终为0111 0001 00001 0000 0001 0000 00001000,即0x7E101008。

 

接着往下看

3. DQS cleaning: Setthe PhyControl1.ctrl_shiftc and PhyControl1.ctrl_offsetc bit-fields to theappropriate value according to clock frequency, board delay, and memory tDQSCKparameter.

依照时钟频率和内存的tAC参数正确设置PhyControl1.ctrl_shiftc and PhyControl1.ctrl_offsetc bit-fields位的值。

查看PhyControl1的ctrl_shiftc和ctrl_offsetc这两位的描述

我们的内存是DDR3-1300,参考其原代码其ctrl_shiftc配置为0x6 即0B110,具体什么原因我也不清楚。ctrl_offsetc的配置暂时参考三星的裸板参数配置为0,ctrl_ref配置为1000。

 

后面的步骤,全部是按照三星的芯片手册上的那21步来一步一步的在操作寄存器,没有一步有漏掉,但初始化上,可能会有调整,所以,对比着芯片手册上的那21步一行一行的查看代码就OK了。有一点,在配置完14-19步后,到第19步时--配置第14到第19步,如果有两组DDR芯片,重复14-19步配置chip1的内存,刚刚配置的是chip0,也就是第一组内存芯片。这里就把第14-19步重新再做一次,初始化chip1就OK了。代码太多,这里就不详细重复了,最好找到三星的裸板的DDR源码,进行修改配置,以便减少出错可能。至此,DDR的源码也分析完成,下面,应该可以开始将这些移植进一个新的U-Boot中去了。

 

需要说明一下,实际FrinedlyARM中提供的代码初始化流程可能有点变化,但设置原理应基于此。此出我也未深入,以后那天有时间,得好好的静下心来,好好的查看其如何设置的。

关键字:Tiny4412  U-BOOT移植  DDR3  初始化 引用地址:第十三章、Tiny4412 U-BOOT移植十三 DDR3初始化源码分析

上一篇:第十二章、Tiny4412 U-BOOT移植十二 DDR3初始化顺序
下一篇:第十四章、TIny4412 U-BOOT移植十四 编译产生内核

推荐阅读最新更新时间:2024-10-28 12:58

stm32的外设初始化步骤,以定时器为例。
我这个程序的目的在于让定时器开启更新中断,实现定时器1S中断一次然后在中断函数中LED电平翻转一次。 1.首先先开启这个外设的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //开启定时器1 的时钟APB2 2.定义这个外设的初始化结构体:TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定时器模式初始化结构体 定义别名为TIM_TimeBaseInitStructure 3.把这个结构体内成员参数设置: TIM_TimeBaseInitStructure.TIM_Period = 999
[单片机]
ARM初始化Stack
1. 简介 ARM有7种运行Mode,每一种Mode的堆栈指针寄存器(SP)都是独立的。 所以,对于程序中需要用的每一种处理器模式,都要给SP定义一个堆栈地址。 初始化流程为: 修改状态寄存器内的状态位,使处理器切换到需要的模式 给SP赋值。 注意: 不要切换到User模式进行该模式下的堆栈设置,因为进入User模式后就不能再操作CPSR返回到其他模式了。 =============================== 先定义各种模式对应的CPSR寄存器M 的值,该值决定了进入何种模式,可参考相关数据手册。 Mode_USR EQU 0x10 Mode_FIQ EQU 0
[单片机]
ARM<font color='red'>初始化</font>Stack
基于tiny4412的Linux内核移植 -- PWM子系统学习(七)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 概述 Exynos4412一共可以输出4路PWM(timer0、timer
[单片机]
基于<font color='red'>tiny4412</font>的Linux内核<font color='red'>移植</font> -- PWM子系统学习(七)
LPC210X定时器查询方式及如何初始化
定时器查询方式定时器初始化: 1、设置定时器分频数,为(x+1)分频 2、匹配通道X中断并复位TxTC 3、比较值(1S定时值) 4、启动并复位TxTC 如: T1PR = 99; // 设置定时器0分频为100分频,得110592Hz T1MCR = 0x03; // 匹配通道0匹配中断并复位T0TC T1MR0 = 110592/2; // 比较值(1S定时值) T1TCR = 0x03; // 启动并复位T0TC T1TCR = 0x01; 研究了好长一段时间,LPC210X的定时器,查询方式定时很简单如上面,但中断方式要操作好多寄存器,太麻烦,一直是一头雾水。好不容易理出了思路,现将一段例程粘贴备忘。 #inclu
[单片机]
泰克推出面向DDR4、DDR3和DDR3L内存的实时一致性分析仪
中国 北京,2013年10月24日 –测试、测量及监测仪器的全球领导厂商—泰克公司日前宣布,推出实时内存执行验证解决方案,以提供针对JEDEC DDR4、DDR3和DDR3L内存标准的更快速协议、性能及一致性分析。由泰克合作伙伴Nexus Technology开发的MCA4000协议一致性和总线协议分析仪提供长时间周期内的内存接口即时可观测性,从而提供对内存总线活动的深入洞悉,这有助于缩短调试周期和加快产品上市速度。 随着行业转向具有更高数据传输速率、更低功耗和更大容量的DDR4和DDR3L等新型内存技术,设计人员在调试和验证具有更小余量、更快边沿速率和复杂总线协议的器件时面临许多新挑战。通过增加实时内存执行验证功能,泰
[嵌入式]
用STM32F4的库函数RCC_PLLConfig()代替SystemInit()手动初始化
STM32上电复位后首先执行Reset_Handler,然后调用SystemInit()函数完成时钟等基本初始化,再执行main函数。 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP SystemInit()函数在文件system_stm32f4xx
[单片机]
U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
1 引言 Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境 。 嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能强大
[应用]
avr单片机USART串口通讯初始化配置及说明
avr atmega16 单片机通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备,其工作模式及其初始化,寄存器说明如下。 //*****************************USART 控制和状态寄存器A(UCSRA)******************************** /*USART 控制和状态寄存器A(UCSRA) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RXC TXC UDRE FE DOR PE U2X MPCM RXC: USART 接收结束
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved