Dump of the active RCW values on LS1043A in ATF (BL2) source or U-Boot CLI

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Dump of the active RCW values on LS1043A in ATF (BL2) source or U-Boot CLI

跳至解决方案
1,746 次查看
ts1234
Contributor III

How do I dump (on UART) the active RCW values on LS1043ARDB, either in ATF (BL2) source or U-Boot CLI?

标记 (1)
0 项奖励
回复
1 解答
1,715 次查看
teddy_gom_e
Contributor III

looking at the Reference manual chapter 13.3.16 Reset Control Word Status Register n : RCW is at register 0x1EE_0100 to 0x1EE_013C

=> md.b 1ee0100 40
01ee0100: 06 0d 00 0c 0c 00 00 00 00 00 00 00 00 00 00 00    ................
01ee0110: 35 58 00 02 00 00 80 1a 40 04 40 00 61 00 20 00    5X......@.@.a. .
01ee0120: 00 00 00 00 11 10 01 01 00 00 00 00 00 03 8f fd    ................
01ee0130: 20 00 45 00 00 06 10 00 00 00 00 96 00 00 00 01     .E.............

Shown as bytes to have endianness match my previous capture

 

So you can access each byte directly by calculated register address,

 

You can check code of u-Boot: arch/arm/cpu/armv8/fsl-layerscape/cpu.c function print_cpuinfo()

	/*
	 * Display the RCW, so that no one gets confused as to what RCW
	 * we're actually using for this boot.
	 */
	puts("Reset Configuration Word (RCW):");
	for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
		rcw = gur_in32(&gur->rcwsr[i]);
		if ((i % 4) == 0)
			printf("\n       %08x:", i * 4);
		printf(" %08x", rcw);
	}
	puts("\n");

在原帖中查看解决方案

0 项奖励
回复
3 回复数
1,725 次查看
ts1234
Contributor III

Thank You!

How do I dump the value of a specific RCW field from u-boot CLI?

0 项奖励
回复
1,716 次查看
teddy_gom_e
Contributor III

looking at the Reference manual chapter 13.3.16 Reset Control Word Status Register n : RCW is at register 0x1EE_0100 to 0x1EE_013C

=> md.b 1ee0100 40
01ee0100: 06 0d 00 0c 0c 00 00 00 00 00 00 00 00 00 00 00    ................
01ee0110: 35 58 00 02 00 00 80 1a 40 04 40 00 61 00 20 00    5X......@.@.a. .
01ee0120: 00 00 00 00 11 10 01 01 00 00 00 00 00 03 8f fd    ................
01ee0130: 20 00 45 00 00 06 10 00 00 00 00 96 00 00 00 01     .E.............

Shown as bytes to have endianness match my previous capture

 

So you can access each byte directly by calculated register address,

 

You can check code of u-Boot: arch/arm/cpu/armv8/fsl-layerscape/cpu.c function print_cpuinfo()

	/*
	 * Display the RCW, so that no one gets confused as to what RCW
	 * we're actually using for this boot.
	 */
	puts("Reset Configuration Word (RCW):");
	for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
		rcw = gur_in32(&gur->rcwsr[i]);
		if ((i % 4) == 0)
			printf("\n       %08x:", i * 4);
		printf(" %08x", rcw);
	}
	puts("\n");
0 项奖励
回复
1,739 次查看
teddy_gom_e
Contributor III

In U-Boot it is simple, when you boot this is always printed on UART serial port, example :

U-Boot 2020.12 Local build 1.0-dirty (Mar 21 2022 - 15:41:43 +0100)

SoC:  LS1043AE Rev1.1 (0x87920211)
Clock Configuration:
       CPU0(A53):1200 MHz  CPU1(A53):1200 MHz  CPU2(A53):1200 MHz
       CPU3(A53):1200 MHz
       Bus:      300  MHz  DDR:      1300 MT/s  FMAN:     400  MHz
Reset Configuration Word (RCW):
       00000000: 060d000c 0c000000 00000000 00000000
       00000010: 35580002 0000801a 40244000 61002000
       00000020: 00000000 11100101 00000000 00038ffd
       00000030: 00004504 00061000 00000096 00000001

 

0 项奖励
回复