]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
sandbox: Add an image for VPL
authorSimon Glass <sjg@chromium.org>
Fri, 21 Oct 2022 00:23:15 +0000 (18:23 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 31 Oct 2022 15:04:00 +0000 (11:04 -0400)
Use binman to build an image which includes all the U-Boot phases so that
a full VBE boot can take place with just that image.bin file. Attach the
image file to mmc2 so it can be loaded.

VBE is used to load images in two phases:

   - In VPL, VBE decides which SPL image to load
   - In SPL, VBE decides which U-Boot image to load

The latter should really be determined by VPL, since it does the full
signature verification on the selected configuration. However, we have
separate configurations for SPL and U-Boot proper, so for now we keep it
simple and have SPL do its own verification. This will need to be
tidied up later.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/sandbox/dts/sandbox.dts
arch/sandbox/dts/sandbox_vpl.dtsi [new file with mode: 0644]
arch/sandbox/dts/test.dts

index 21f00fcab5ee6ca7747e672174c616246a98a589..1b60914a01ca7139b1d37824bbaa50e42f9b2e11 100644 (file)
@@ -21,6 +21,9 @@
                spi0 = &spi;
        };
 
+       binman: binman {
+       };
+
        memory {
                reg = <0 CONFIG_SYS_SDRAM_SIZE>;
        };
 #include "sandbox.dtsi"
 #include "cros-ec-keyboard.dtsi"
 #include "sandbox_pmic.dtsi"
+
+#ifdef CONFIG_SANDBOX_VPL
+#include "sandbox_vpl.dtsi"
+#endif
diff --git a/arch/sandbox/dts/sandbox_vpl.dtsi b/arch/sandbox/dts/sandbox_vpl.dtsi
new file mode 100644 (file)
index 0000000..1fba537
--- /dev/null
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Devicetree file for VPL (Verifying Program Loader)
+ */
+
+&binman {
+       u-boot-tpl-elf {
+               no-expanded;
+       };
+       u-boot-vpl-elf {
+               no-expanded;
+       };
+       fw-update {
+               type = "section";
+
+               /*
+                * provide plenty of space for ELF files with debug info so that
+                * gdb can be used
+                */
+               offset = <0x400000>;
+               size = <0xdffc00>;
+
+               fit {
+                       fit,external-offset = <0>;
+                       description = "AP firmware";
+                       images {
+                               spl {
+                                       description = "U-Boot SPL";
+                                       type = "firmware";
+                                       phase = "spl";
+                                       arch = "sandbox";
+                                       os = "u-boot";
+                                       compression = "none";
+
+                                       hash-1 {
+                                               algo = "sha256";
+                                       };
+
+                                       u-boot-spl-elf {
+                                       };
+                               };
+                               u-boot {
+                                       description = "U-Boot";
+                                       type = "firmware";
+                                       phase = "u-boot";
+                                       arch = "sandbox";
+                                       os = "u-boot";
+                                       compression = "none";
+
+                                       hash-1 {
+                                               algo = "sha256";
+                                       };
+
+                                       u-boot-elf {
+                                       };
+                               };
+                       };
+
+                       configurations {
+                               conf-1 {
+                                       compatible = "sandbox";
+                                       description = "AP Firmware v1";
+                                       firmware = "spl", "u-boot";
+                                       signature {
+                                               algo = "sha1,rsa2048";
+                                               key-name-hint = "dev";
+                                               sign-images = "firmware";
+                                       };
+                               };
+                       };
+               };
+       };
+       state {
+               type = "fill";
+               size = <0x200>;
+       };
+       version {
+               type = "text";
+               text = "1.2.3";
+               size = <0x200>;
+       };
+       fdtmap {
+       };
+};
index 2bcc2e84a74e09f2fbe08048a81eca657fde0a16..75eeaf8ca1fbdad6a69e46a910684552b3bf3481 100644 (file)
@@ -64,7 +64,7 @@
                osd0 = "/osd";
        };
 
-       binman {
+       binman: binman {
        };
 
        config {
 
 #include "sandbox_pmic.dtsi"
 #include "cros-ec-keyboard.dtsi"
+
+#ifdef CONFIG_SANDBOX_VPL
+#include "sandbox_vpl.dtsi"
+#endif