龙芯板贴内存参数配置

龙芯3号处理器是面向个人计算机、服务器等信息化领域的通用处理器。有些方案通过综合考虑(控制成本、特定性能需求、空间限制、特殊环境适应性)会选择将内存颗粒直接设计到板卡上。龙芯固件默认是内存条方案,如果是板贴颗粒方案需要手动修改。

固件下通过mm_ctrl->table.auto_ddr_config = 0;变量进行内存使用模式选择:

  • 0 代表,板贴内存颗粒方案
  • 1 代表,内存槽插条方案 (默认配置)

本文主要讲解板贴内存颗粒,固件下如何配置内存参数。

一、内存相关代码位置

1.1 PMON 固件

相关代码位置:

  • Targets/ls3a5000_7a/include/mem_ctrl.h
  • Targets/ls3a5000_7a/cache_stage/cache_stage.c

1.2 UEFI 固件

相关代码位置:

  • LsRefCodePkg/Include/MrcTypes.h
  • LsRefCodePkg/SampleCode/Desktop/Ls3aPlatformTable/Pei/mem_feature_init.c

二、内存配置讲解

2.1 通道选择

以龙芯LS3A6000为例,默认有两个内存通道分别是:MC0、MC1,程序里定义为:

  • #define MC0_ENABLE 1

  • #define MC1_ENABLE 1

  • 0 代表,关闭

  • 1 代表,使能(默认配置)

2.2 代码里内存信息

  • 参数含义
#define DDR2                        0x8
#define DDR3                        0xb
#define DDR4                        0xc
/*------------------------------------------------------------
| CID_NUM            | 2'h0    | no cid            |
|                    | 2'h1    | 2dies             |
|                    | 2'h2    | 4dies             |
|                    | 2'h3    | 8dies             |
| SDRAM_BG_SIZE      | 2'h0    | no bank group     |
|                    | 2'h1    | 2  bank group     |
|                    | 2'h2    | 4  bank group     |
| SDRAM_BA_SIZE      | 1'h0    | 4 bank            |
|                    | 1'h1    | 8 bank            |
| SDRAM_ROW_SIZE     | 3'hx    | 18-x              |
| SDRAM_COL_SIZE     | 2'hx    | 12-x              |
| ADDR_MIRROR        | 1'b1    | ADDR MIRROR       |
|                    | 1'b0    | STANDARD          |
| DIMM_MEMSIZE       |12'bx    | x*1MB             |
| DIMM_WIDTH         | 2'h0    | 8bit//not support |
|                    | 2'h1    | 16bit             |
|                    | 2'h2    | 32bit             |
|                    | 2'h3    | 64bit             |
| DIMM_ECC           | 1'b1    | With ECC          |
|                    | 1'b0    | No ECC            |
| DIMM_TYPE          | 2'h0    | Unbuffered DIMM   |
|                    | 2'h1    | Registered DIMM   |
|                    | 2'h2    | SO-DIMM           |
|                    | 2'h3    | Load Reduced DIMM |
| SDRAM_WIDTH        | 2'h0    | x4                |
|                    | 2'h1    | x8                |
|                    | 2'h2    | x16               |
| SDRAM_TYPE         | 3'h0    | NO_DIMM           |
|                    | 3'hb    | DDR3              |
|                    | 3'hc    | DDR4              |
| MC_CSMAP           | 8'b0    | CS7-CS0           |
------------------------------------------------------------*/
  • 通道MC0默认参数
#define MC0_MEMSIZE        8192
#define MC0_DRAM_TYPE      DDR4
#define MC0_DIMM_TYPE      0
#define MC0_MODULE_TYPE    2
#define MC0_CID_NUM        0
#define MC0_BA_NUM         0
#define MC0_BG_NUM         2
#define MC0_CSMAP          1
#define MC0_DRAM_WIDTH     1
#define MC0_MODULE_WIDTH   3
#define MC0_ECC            0
#define MC0_SDRAM_CAPACITY 0
#define MC0_COL_NUM        2
#define MC0_ROW_NUM        2
#define MC0_ADDR_MIRROR    0
#define MC0_BG_MIRROR      0  

2.3 参数信息详解

例子,仅使用了通道MC0,内存颗粒DDR4 SDRAM MT40A512M16进行讲解。

2.3.1 内存颗粒

在这里插入图片描述

2.3.2 MC0通道参数配置

  • MC0_MEMSIZE
    通道MC0 总容量大小,单位是MB,数值为:8192

  • MC0_DRAM_TYPE
    内存颗粒类型,龙芯3号处理使用的是ddr4控制器,数值为:c
    0 代表: NO_DIMM
    b 代表:DDR3
    c 代表:DDR4 (默认值)

  • MC0_DIMM_TYPE
    不用关心,使用默认值

  • MC0_MODULE_TYPE
    不用关心,使用默认值

  • MC0_CID_NUM
    不用关心,使用默认值

  • MC0_BA_NUM
    Bank group address 2个,数值为:1
    0代表,no bank group
    1代表,2 bank group
    2代表,4 bank group

  • MC0_BG_NUM
    Bank address in bank group 4个,数值为:0
    0代表,4 bank
    1代表,8 bank

  • MC0_CSMAP
    片选使用个数,和硬件工程师确认,使用的是cs0和cs1 ,数值为:3

物理CS7-CS0指芯片引脚,1代表有cs连接,0代表没有链接

列举3个例子CSMAPcs7cs6cs5cs4cs3cs2cs1cs0
例子1:使用cs00x100000001
例子2:使用cs40x1000010000
例子3:使用cs0、cs10x300000011
  • MC0_DRAM_WIDTH
    X几模式,使用的是X16,数值为:2
    0代表,X4
    1代表,X8
    2代表,X16

  • MC0_MODULE_WIDTH
    数据位数,使用的是64位,数值为:3
    0代表,8bit 不支持
    1代表,16bit
    2代表,32bit
    3代表,64bit (默认值)

  • MC0_ECC
    和硬件工程师确认,没有使用ecc,数值为:0
    0代表,没有ecc
    1代表,有ecc

  • MC0_SDRAM_CAPACITY
    不用关心,使用默认值

  • MC0_COL_NUM
    列位数, 12-10(A[9:0]), 数值为:2
    公式为:12-x

  • MC0_ROW_NUM
    行位数, 18-16(A[15:0]), 数值为:2
    公式为:18-x

  • MC0_ADDR_MIRROR
    是否有地址镜像,和硬件工程师确认,有使用了,数值为:1
    0代表,未使用
    1代表,有使用

  • MC0_BG_MIRROR
    是否有BG地址镜像,和硬件工程师确认,未使用,数值为:0
    0代表,未使用
    1代表,有使用

最终修改结果

通道容量BA数BG数片选位宽ECC行数列数地址镜像
通道选择MB4 bank2 bank groupcs0、cs1X16无ecc1610
MC0819201320221
#define MC0_ENABLE 1
#define MC1_ENABLE 0

#define MC0_MEMSIZE        8192
#define MC0_DRAM_TYPE      DDR4
#define MC0_DIMM_TYPE      0
#define MC0_MODULE_TYPE    2
#define MC0_CID_NUM        0
#define MC0_BA_NUM         0
#define MC0_BG_NUM         1
#define MC0_CSMAP          3
#define MC0_DRAM_WIDTH     2
#define MC0_MODULE_WIDTH   3
#define MC0_ECC            0
#define MC0_SDRAM_CAPACITY 0
#define MC0_COL_NUM        2
#define MC0_ROW_NUM        2
#define MC0_ADDR_MIRROR    1
#define MC0_BG_MIRROR      0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LS大猫

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值