[PATCH v5 13/46] bdinfo: Show the RAM top and approximate stack pointer

Simon Glass sjg at chromium.org
Sun Jul 16 05:38:46 CEST 2023


These are useful pieces of information when debugging. The RAM top shows
where U-Boot started allocating memory from, before it relocated. The
stack pointer can be checked to ensure it is in the correct region.

Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Nikhil M Jain <n-jain1 at ti.com>
Tested-by: Nikhil M Jain <n-jain1 at ti.com>
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
---

Changes in v5:
- Add tests for bdinfo additions

 cmd/Kconfig       | 8 ++++++++
 cmd/bdinfo.c      | 5 +++++
 test/cmd/bdinfo.c | 7 +++++++
 3 files changed, 20 insertions(+)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index fd76972eaa37..ecfd57523772 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -135,6 +135,14 @@ config CMD_BDI
 	help
 	  Print board info
 
+config CMD_BDINFO_EXTRA
+	bool "bdinfo extra features"
+	default y if SANDBOX || X86
+	help
+	  Show additional information about the board. This uses a little more
+	  code space but provides more options, particularly those useful for
+	  bringup, development and debugging.
+
 config CMD_CONFIG
 	bool "config"
 	default SANDBOX
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index dab73f1d93c4..44e6d6a972e4 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -173,6 +173,11 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	}
 	print_serial(gd->cur_serial_dev);
 
+	if (IS_ENABLED(CONFIG_CMD_BDINFO_EXTRA)) {
+		bdinfo_print_num_ll("stack ptr", (ulong)&bd);
+		bdinfo_print_num_ll("ram_top ptr", (ulong)gd->ram_top);
+	}
+
 	arch_print_bdinfo();
 
 	return 0;
diff --git a/test/cmd/bdinfo.c b/test/cmd/bdinfo.c
index 6480393fd5d8..8c09281cac0d 100644
--- a/test/cmd/bdinfo.c
+++ b/test/cmd/bdinfo.c
@@ -205,6 +205,13 @@ static int bdinfo_test_move(struct unit_test_state *uts)
 		ut_assertok(test_num_l(uts, " clock", info.clock));
 	}
 
+	if (IS_ENABLED(CONFIG_CMD_BDINFO_EXTRA)) {
+		ut_assert_nextlinen("stack ptr");
+		ut_assertok(test_num_ll(uts, "ram_top ptr",
+					(unsigned long long)gd->ram_top));
+		ut_assertok(test_num_l(uts, "malloc base", gd_malloc_start()));
+	}
+
 	ut_assertok(ut_check_console_end(uts));
 
 	return 0;
-- 
2.41.0.455.g037347b96a-goog



More information about the U-Boot mailing list