4.3.29.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个子系统,分别为”aon”、”hsio”、”lsio”和”dsp”。 每个子系统中pin可能会分为多个组,子系统”hsio”和”lsio”有组”0”和组”1”,其他子系统只有组”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
        },
        "force": {
            "force_enable":"true",
            "ddr_type": "lpddr4",
            "rank_type": "single",
            "die_dencity": 1
        },
        "ecc_enabled": "false",
        "freq": "default",
        "diag_test": "false"
    },
	...
}

这里主要配置DDR的信息,用于适配不同的DDR,需要配置的信息包括4个

  • 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类型。当前支持的有”lpddr4”, “lpddr4x”

  • rank_type:DDR rank数量。当前支持的有”single”, “dual”

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

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

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

  • adc_channel:ADC探测DDR的通道

ADC的电压值与DDR的类型和DDR rank值的映射关系如下

  • [51~140mv]: lpddr4 + single rank + 1GB/die

  • [151~240mv]: lpddr4x + single rank + 1GB/die

  • [251~340mv]: lpddr4 + dual rank + 1GB/die

  • [351~440mv]: lpddr4x + dual rank + 1GB/die

  • [851~940mv]: lpddr4 + single rank + 2GB/die

  • [951~1040mv]: lpddr4x + single rank + 2GB/die

  • [1051~1140mv]: lpddr4 + dual rank + 2GB/die

  • [1151~1240mv]: lpddr4x + dual rank + 2GB/die

对于频点,默认值情况为

  • lpddr4 + single rank + 1GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4 + dual rank + 1GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4x + single rank + 1GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4x + dual rank + 1GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4 + single rank + 2GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4 + dual rank + 2GB/die: 4266, dvfs, 4266_2844_2133_266

  • lpddr4x + single rank + 2GB/die: 当前不支持

  • lpddr4x + dual rank + 2GB/die: 当前不支持

若默认值符合使用要求,则配置为默认值即可

"freq": "default"

若使用非默认值,则将freq字段修改相应的数字即可

"freq": 4266

参数”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 章节。