4.3.28.2. BL2 配置文件说明

BL2 可以根据配置文件内容启动阶段对系统一些设置,包括 bl2 feature 配置(看门狗配置、gpio 的配置)、DDR 的配置和 eFUSE 烧写相关配置。

BL2 配置文件路径为:

device/horizon/x5/board_cfg/soc/bl2_cfg/bl2_cfg.json

配置文件打包程序路径为:

build/tools/bl2_cfg.py

bl2_cfg.py解析 bl2_cfg.json内容,打包为 bin 文件,最终和 uboot 通过 fip 包形式打包一起,制作 uboot fip 包脚本路径为:

build/mk_uboot.sh

bl2 feature 配置

bl2 看门狗配置

{
	"bl2_cfg": {
		"feature": {
			"wdt_en": "false",
			"wtd_timeout": 10,
			...
		},
	},
	...
}

配置文件可以设置 bl2 阶段看门狗使以及超时时间:

  • wdt_en:bl2 看门狗是否使能。false 表示关闭,true 表示开启

  • wtd_timeout:超时时间,单位

bl2 gpio 配置

bl2 支持将 pin 配置成 gpio 功能,方向默认out,可以配置高电平低电平,可以配置单个 pin 或者连续一组 pin,最支持 40 个 pin 的配置。 当前的 pin 分布在 4 个子系统,分别aonhsiolsiodsp。 每个子系统中 pin 可能分为多个组,子系统 hsiolsio 有组 01,其他子系统只有0。 在每个组中,pin 的序号0开始。

单 pin 配置

{
	"bl2_cfg": {
		"feature": {
			...
			"gpio_cfg": {
				"lsio_0_1": {
					"value": 1
				}
			}
		}
	},
	...
}

配置需要写明 pin 所属系统、组和序号,以 lsio_0_1 为例,表明这个 pin 属于 lsio 子系统,第 0 组序号为 1 的 pin。 value 为 1 表示此 pin 配置高电位, 0 为电位(只要配置为 gpio,会此 pin 默认配置为 out)。

连续 pin 配置

{
	"bl2_cfg": {
		"feature": {
			...
			"gpio_cfg": {
				"lsio_0_2-31": {
					"value": 1
				}
			}
		}
	},
	...
}

lsio_0_2-31 为例,表示 lsio 子系统第 0 组序号为 2 到 31 的 pin,将此组 pin 都配置高电位。

注:gpio_cfg可以多个单 pin 配置连续 pin 配置,但是 pin 的总数不能超过 40。

DDR 配置

{
	...
    "ddr": {
        "detect": {
            "adc_channel": 2,
            "adc_map_rules": {
              "ddr_profile_10": [51, 140],
              "ddr_profile_11": [151, 240],
              "ddr_profile_2": [251, 340],
              "ddr_profile_3": [351, 440],
              "ddr_profile_1": [451, 540],
              "ddr_profile_7": [551, 640],
              "ddr_profile_17": [651, 740],
              "ddr_profile_18": [751, 840],
              "ddr_profile_14": [851, 940],
              "ddr_profile_15": [951, 1040],
              "ddr_profile_12": [1051, 1140],
              "ddr_profile_13": [1151, 1240],
              "reserved_5": [1251, 1340],
              "reserved_6": [1351, 1440]
            }
        },
        "force": {
            "force_enable":"false",
            "ddr_type": "lpddr4",
            "rank_type": "single",
            "die_dencity": 1,
            "alternative": 0
        },
        "ecc_enabled": "false",
        "freq": "default",
        "diag_test": "false"
    },
	...
}

这里主要配置 DDR 的信息,用于适配不同的 DDR,需要配置信息如下所示

  • 识别 DDR 的 ADC map 规则

  • DDR 的类型,lpddr4 还是 lpddr4x

  • DDR 的 rank 值,single rank 还是 dual rank

  • DDR 单 die 的容量,1: 1GB; 2: 2GB

  • 频点信息

  • 是否使能 ecc

其中 DDR 的类型、DDR rank 值和单 die 容量两种配置方法

  • 通过 ADC 探测获取

  • 配置文件强制指定

如果配置文件强制指定 DDR 的类型、DDR rank 值、单 die 容量最高频率,则需要

  • force_enable:设置true,表示强制指定

  • ddr_type:DDR 类型。当前支持lpddr4lpddr4x

  • rank_type:DDR rank 数量。当前支持singledual

  • die_dencity:DDR 单 die 容量。1: 1GB; 2: 2GB

  • alternative:DDR Alternative 值。表示相同ddr_typerank_typedie_dencity其他配置,主要针对相同规格客户不同 ODT 配置。默认为 0,表示使用默认的 ODT 配置。

  • freq:DDR 最高频率。3200; 3733; 4266

如果通过 ADC 获取 DDR 的类型、DDR rank 值和单 die 容量,则需要

  • force_enable:设置false,表示使用外部 ADC 自动探测方式

  • adc_channel:ADC 探测 DDR 的通道

  • adc_map_rules:ADC 档位与 DDR 配置映射关系。字典key 表示是 DDR 配置文件,即 profile,value 表示当前 DDR 配置的 ADC 识别范围,列表第一项表示当前 DDR 配置的 ADC 值下限,第二项表示当前 DDR 配置的 ADC 值上限,单位是 mv.

注意:

  • 字典key组成形式必须ddr_profile_numreserved_num, 其中最后num 必须十进制数字

ADC 的电压与 DDR 配置映射关系如下

颗粒类型 rank 数量 density/CH 最高频率 Alternative profile ADC 档位
LP4 1 1 3200 0 profile_1 500mv
LP4 2 1 4266 0 profile_2 300mv
LP4X 2 1 4266 0 profile_3 400mv
LP4X 2 1 3733 0 profile_7 600mv
LP4 1 1 4266 0 profile_10 100mv
LP4X 1 1 4266 0 profile_11 200mv
LP4 2 2 4266 0 profile_12 1100mv
LP4X 2 2 4266 0 profile_13 1200mv
LP4 1 2 4266 0 profile_14 900mv
LP4X 1 2 4266 0 profile_15 1000mv
LP4 1 1 3733 0 profile_17 700mv
LP4 1 2 4266 1 profile_18 800mv

重新映射 adc 档位与 DDR profile

用户可以重新配置 ADC 档位和 DDR profile 的映射关系。

例如地瓜提供的 DDR 配置文件 profile_19,客户可以替换 reserved_5 为 profile_19,profile_19 将会启动 1300 这个 ADC 档位。即 ADC 识别了 1300 档位,就使用 profile_19 的配置进行对 DDR 的初始化。

...
              "ddr_profile_19": [1251, 1340],
...

注意事项

并非所有 DDR profile 都支持重新配置映射关系,用户配置档位如下

颗粒类型 rank 数量 density/CH 最高频率 Alternative profile ADC 档位
LP4 1 1 3200 0 profile_1 500mv
LP4X 2 1 3733 0 profile_7 600mv
LP4 1 1 3733 0 profile_17 700mv
LP4 1 2 4266 1 profile_18 800mv
N/A N/A N/A N/A N/A N/A 1300mv
N/A N/A N/A N/A N/A N/A 1400mv

开启 DDR 数字眼图

参数 diag_test 用于配置是否开启 DDR 数字眼图功能

"diag_test": "false"   # 不开启眼图功能
"diag_test": "true"    # 开启眼图功能

通过 bl2_cfg 开启 DDR 数字眼图后,想要退出只能重新烧录包含开启眼图功能 bl2_cfg 的 uboot 镜像

DDR 数字眼图功能开启除了可以bl2_cfg配置外,也可以在 kernel 下通过重启命令 reboot -m eye -f 进入,通过命令进入 DDR 数字眼图模式后,芯片重启可以退出眼图模式

eFUSE 配置

参考 BL2 烧录 eFuse 章节。