Linux内核驱动之DDR3引脚说明

本文详细介绍了DDR3内存的引脚配置及其功能,包括地址输入信号、时钟输入、数据输入/输出信号等,解释了如何通过这些引脚实现DDR3内存的操作。
一 DDR3引脚描述 
4bit和8bit位宽芯片一般采用78球FBGA封装 16bit位宽芯片一般采用96球FBGA封装 下列信号方向都是针对DDR3芯片来说的 A0-A9,A10/AP,A11,A12/BC#,A13,A14    input 地址输入信号,行地址线和列地址线分时使用 

A10/AP 表示PRECHARGE命令期间对某个bank预充电auto-precharge A10为低则有BA[0,2]来决定哪个bank进行auto-precharge,A10为高电平表示对所有bank进行auto-precharge 


BA0,BA1,BA2                       input 
bank地址输入信号,三个bank地址线表明该DDR3内部有8个bank LOAD MODE命令期间定义DDR3芯片使用哪个模式(MR0,MR1,MR2) 


CK,CK#                            input 
差分时钟输入,所有控制和地址输入信号在CK上升沿和CK#的下降沿交叉处被采样,输出数据选通(DQS,DQS#)参考CK和CK#的交叉点


CKE                               input 
时钟使能信号,高电平有效,CKE为低电平时提供PRECHARGE POWN-DOWN和SELF REFRESH操作(对所有bank里行有效)


CS#                               input 
片选使能信号当CS#为高的时候,所有的命令被屏蔽,CS#提供了多RANK系统的RANK选择功能,CS#是命令代码的一部分


DM(mask)                           input 
数据输入屏蔽,每8bit数据对应一个DM信号,在写期间,当伴随输入数据的DM信号被采样为高的时候,这8bit的输入数据视为无效。


DM信号相当于就是掩码控制位,该信号在读操作时没有用:比如在读32bit数据,但只需要8bit数据,在软件里将高24bit置0就行,有没有DM信号都关系不大,但执行写操作时,如果没有DM信号,可能程序只需要写8bit数据,但是物理连接是32bit到DDR3,只要WR信号有效,32bit数据就全部写到DDR3里边去了,高24bit数据就被覆盖了,有了DM信号它对应的8bit数据就会被忽略,这样就不会覆盖其他数据了。对于4bit位宽DDR3,两个芯片共用一个DM信号,对于8bit位宽DDR3芯片一个芯片占用一个DM信号,对于16bit位宽DDR3芯片则需要2个DM信号


虽然DM仅作为输入脚,但是,DM负载被设计成与DQ和DQS脚负载相匹配。DM的参考是VREFCA。DM可选作为TDQS


ODT                                 input 
片上终端使能。ODT使能(高)和禁止(低)片内终端电阻。在正常操作使能的时候,ODT仅对下面的管脚有效:DQ[15:0],DQS,DQS#和DM。如果通过LOAD MODE命令禁止,ODT输入被忽略

RAS#,CAS#,WE#                        input 命令输入,这三个信号,连同CS#用来定义一个命令


RESET#                               input 复位,低有效,参考是VSS 


DQ0-DQ7/ DQ0-DQ15                   I/O 数据输入/输出。双向数据


DQS,DQS#                             I/O 
数据选通。读时是输出,边缘与读出的数据对齐。写时是输入,中心与写数据对齐。


DQS是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每8bit数据都有一个DQS信号线,它是双向的,在写入时它用来传送由内存控制器发来的DQS信号,读取时,则由芯片生成DQS向内存控制器发送。完全可以说,它就是数据的同步信号。  
在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。


DQS在读取时与数据同步传输 
而在接收方,一切必须保证同步接收,不能有偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。


TDQS,TDQS#                           output 
终端数据选通。当TDQS使能时,DM禁止,TDQS和TDDS提供终端电阻。 VDD 
电源电压,1.5V+/-0.075V VDDQ 
DQ电源,1.5V+/-0.075V。为了降低噪声,在芯片上进行了隔离 VREFCA 
数据的参考电压。VREFDQ在所有时刻(除了自刷新)都必须保持规定的电压

VSS
地 VSSQ 
DQ地,为了降低噪声,在芯片上进行了隔离 ZQ 
输出驱动校准的外部参考。这个脚应该连接240ohm电阻到VSSQ
<think>好的,我需要帮助用户查找关于如何配置T113-S3硬件在Linux内核中的设备树的指南或解决方案。首先,我需要回顾用户提供的引用内容,尤其是引用[1]和引用[2],以找到相关的信息。根据引用[1],提到了几个关键文件:board.dts是板级的内核设备树配置文件,uboot-board.dts是Uboot的设备树文件,sys_config.fex用于更新boot0、uboot等文件的头部信息,如DRAM和UART参数。此外,sys_partition.fex是分区配置文件。这些文件都是配置设备树的重要部分。引用[2]提供了开发板的硬件配置,包括CPU型号、内存和存储信息,以及WiFi模块型号XR829。这可能涉及到设备树中需要配置的硬件模块。接下来,我需要将这些信息整合成一个清晰的步骤指南,帮助用户配置T113-S3的设备树。可能需要包括以下步骤:1.**定位设备树文件**:确定board.dts的位置,通常在Linux内核源码中的arch/arm/boot/dts目录下。2.**配置硬件参数**:根据sys_config.fex调整DRAM、UART等参数,并确保这些更新同步到设备树中。3.**外设模块配置**:例如WiFi模块XR829,需要在设备树中添加相应的节点,包括电源管理、中断引脚、SPI/I2C总线配置等。4.**验证和编译**:修改后编译设备树,验证配置是否正确。5.**分区配置**:使用sys_partition.fex定义存储分区,确保与内核配置一致。此外,用户可能需要了解如何交叉编译和烧写新设备树到开发板。同时,要注意设备树语法,避免常见错误,比如节点命名不规范或属性缺失。最后,生成相关问题,帮助用户深入学习和解决潜在问题。例如,如何调试设备树配置,如何优化启动参数,或者如何处理特定外设的兼容性问题。</think>### T113-S3 Linux内核设备树配置指南 #### 一、设备树核心文件说明 1. **板级设备树文件**: - 文件路径:`arch/arm/boot/dts/board.dts` - 作用:定义CPU、内存、外设控制器等硬件拓扑结构。例如,T113-S3的CPU主频、DDR参数需在此配置[^1]。 2. **Uboot设备树文件**: - 文件路径:`uboot-board.dts` - 作用:为Uboot阶段初始化硬件提供基础配置,如串口调试参数[^1]。 3. **系统配置文件**: - `sys_config.fex`:定义DRAM时序、UART波特率等硬件参数,直接影响设备树生成[^1]。 - `sys_partition.fex`:定义存储分区表,需与内核设备树中的`reserved-memory`节点匹配[^1]。 #### 二、关键配置步骤 1. **DDR参数配置**: - 在`sys_config.fex`中修改`dram_para`段,例如: ```ini [dram_para] dram_clk = 792 dram_type = 3 ``` - 同步到设备树:通过脚本`dts_gen`自动更新`board.dts`中的`memory`节点[^1]。 2. **外设模块配置(以XR829 WiFi为例)**: - 在`board.dts`中添加SPI/I2C节点: ```dts &spi0 { status = "okay"; xr829: wifi@0 { compatible = "xradio,xr829"; reg = <0>; spi-max-frequency = <50000000>; interrupt-parent = <&pio>; interrupts = <6 2>; // PG2引脚作为中断 }; }; ``` 3. **引脚复用配置**: - 使用`pinctrl`子系统定义GPIO功能,例如配置UART2引脚: ```dts &pio { uart2_pins: uart2-pins { pins = "PB4", "PB5"; function = "uart2"; }; }; ``` #### 三、编译与验证 1. **编译设备树**: ```bash make dtbs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ``` 2. **烧写测试**: 将生成的`.dtb`文件替换开发板`/boot`目录下的设备树,重启后通过`dmesg`查看硬件初始化日志。 #### 四、常见问题 - **设备树语法错误**:使用`dtc -I dtb -O dts -o decompiled.dts`反编译验证结构。 - **外设不识别**:检查设备树节点`compatible`属性是否与驱动匹配,或确认时钟/中断配置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值