问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

龙芯板贴内存参数配置

创作时间:
作者:
@小白创作中心

龙芯板贴内存参数配置

引用
CSDN
1.
https://blog.csdn.net/tongxin1101124/article/details/136614191

龙芯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个例子 CSMAP cs7 cs6 cs5 cs4 cs3 cs2 cs1 cs0
    例子1:使用cs0 0x1 0 0 0 0 0 0 0 1
    例子2:使用cs4 0x10 0 0 0 1 0 0 0 0
    例子3:使用cs0、cs1 0x3 0 0 0 0 0 0 1 1

  • 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 行数 列数 地址镜像
通道选择 MB 4 bank 2 bank group cs0、cs1 X16 无ecc 16 10 有
MC0 8192 0 1 3 2 0 2 2 1

#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
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号