All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] cros: Expand the Chromium OS documentation
@ 2019-01-31  3:51 Simon Glass
  2019-02-04 15:01 ` Tristan Bastian
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2019-01-31  3:51 UTC (permalink / raw)
  To: u-boot

The current documentation only covers how to chain-load U-Boot on a
Chromebook. Add more information about the other ways to use U-Boot on
Chromebooks.

In particular it is again possible to build it with Chromium OS
verified boot.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 doc/README.chromium           | 296 ++++++++++++++--------------------
 doc/README.chromium-chainload | 239 +++++++++++++++++++++++++++
 2 files changed, 356 insertions(+), 179 deletions(-)
 create mode 100644 doc/README.chromium-chainload

diff --git a/doc/README.chromium b/doc/README.chromium
index 45eaeced2d..096bc4f1f7 100644
--- a/doc/README.chromium
+++ b/doc/README.chromium
@@ -1,239 +1,177 @@
-Running U-Boot from coreboot on Chromebooks
-===========================================
+Chromium OS Support in U-Boot
+=============================
 
-U-Boot can be used as a secondary boot loader in a few situations such as from
-UEFI and coreboot (see README.x86). Recent Chromebooks use coreboot even on
-ARM platforms to start up the machine.
+Introduction
+------------
 
-This document aims to provide a guide to booting U-Boot on a Chromebook. It
-is only a starting point, and there are many guides on the interwebs. But
-placing this information in the U-Boot tree should make it easier to find for
-those who use U-Boot habitually.
+This describes how to use U-Boot with Chromium OS. Several options are
+available:
 
-Most of these platforms are supported by U-Boot natively, but it is risky to
-replace the ROM unless you have a servo board and cable to restore it with.
+   - Running U-Boot from the 'altfw' feature, which is available on selected
+        Chromebooks from 2019 onwards (initially Grunt). Press '1' from the
+        developer-mode screen to get into U-Boot. See here for details:
+        https://sites.google.com/a/chromium.org/dev/chromium-os/poking-around-your-chrome-os-device?pli=1
 
+   - Running U-Boot from the disk partition. This involves signing U-Boot and
+        placing it on the disk, for booting as a 'kernel'. See
+        README.chromium-chainload for information on this. This is the only
+        option on non-U-Boot Chromebooks from 2013 to 2018 and is somewhat
+        more involved.
 
-For all of these the standard U-Boot build instructions apply. For example on
-ARM:
+   - Running U-Boot with Chromium OS verified boot. This allows U-Boot to be
+        used instead of either or both of depthcharge (a bootloader which forked
+        from U-Boot in 2013) and coreboot. See below for more information on
+        this.
 
-   sudo apt install gcc-arm-linux-gnueabi
-   mkdir b
-   make O=b/nyan_big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
 
-You can obtain the vbutil_kernel utility here:
+U-Boot with Chromium OS verified boot
+-------------------------------------
 
-   https://drive.google.com/open?id=0B7WYZbZ9zd-3dHlVVXo4VXE2T0U
+To obtain:
 
+   git clone https://github.com/sglass68/u-boot.git
+   cd u-boot
+   git checkout cros-master
 
-Snow (Samsung ARM Chromebook)
------------------------------
+To build for sandbox:
 
-See here:
+   UB=/tmp/b/chromeos_sandbox    # U-Boot build directory
+   CROS=/home/sglass/cosarm      # Chromium OS directory
+   make O=$UB/chromeos_sandbox_defconfig
+   make O=$UB -j20 -s VBOOT_SOURCE=$CROS/src/platform/vboot_reference \
+	MAKEFLAGS_VBOOT=DEBUG=1 QUIET=1
 
-https://www.chromium.org/chromium-os/firmware-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook
+Replace sandbox with another supported target.
 
+This produces $UB/image.bin which contains the firmware binaries in a SPI
+flash image.
 
-Nyan-big
---------
-
-Compiled based on information here:
-https://lists.denx.de/pipermail/u-boot/2015-March/209530.html
-https://git.collabora.com/cgit/user/tomeu/u-boot.git/commit/?h=nyan-big
-https://lists.denx.de/pipermail/u-boot/2017-May/289491.html
-https://github.com/chromeos-nvidia-androidtv/gnu-linux-on-acer-chromebook-13#copy-data-to-the-sd-card
-
-1. Build U-Boot
-
-   mkdir b
-   make -j8 O=b/nyan-big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
-
-
-2. Select a .its file
-
-Select something from doc/chromium which matches your board, or create your
-own.
-
-Note that the device tree node is required, even though it is not actually
-used by U-Boot. This is because the Chromebook expects to pass it to the
-kernel, and crashes if it is not present.
-
-
-3. Build and sign an image
-
-   ./b/nyan-big/tools/mkimage -f doc/chromium/nyan-big.its u-boot-chromium.fit
-   echo test >dummy.txt
-   vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
-	--signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
-	--version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
-	--bootloader dummy.txt --pack u-boot.kpart
-
-
-4. Prepare an SD card
-
-   DISK=/dev/sdc   # Replace with your actual SD card device
-   sudo cgpt create $DISK
-   sudo cgpt add -b 34 -s 32768 -P 1 -S 1 -t kernel $DISK
-   sudo cgpt add -b 32802 -s 2000000 -t rootfs $DISK
-   sudo gdisk $DISK   # Enter command 'w' to write a protective MBR to the disk
-
-
-5. Write U-Boot to the SD card
+To run on sandbox:
 
-   sudo dd if=u-boot.kpart of=/dev/sdc1; sync
+   $UB/tpl/u-boot-tpl -d $UB/u-boot.dtb.out \
+	-L6 -c "host bind 0 $CROS/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" \
+	-l -w -s state.dtb -r
 
+To run on other boards:
+   Install image.bin in the SPI flash of your device
+   Boot your system
 
-6. Start it up
 
-Reboot the device in dev mode. Make sure that you have USB booting enabled. To
-do this, login as root (via Ctrl-Alt-forward_arrow) and type
-'enable_dev_usb_boot'. You only need to do this once.
+Sandbox
+-------
 
-Reboot the device with the SD card inserted. Press Clrl-U at the developer
-mode screen. It should show something like the following on the display:
+Most Chromium OS development with U-Boot is undertaken using sandbox. There is
+a sandbox target available (chromeos_sandbox) which allows running U-Boot on
+a Linux machine completion with emulations of the display, TPM, disk, etc.
 
-   U-Boot 2017.07-00637-g242eb42-dirty (May 22 2017 - 06:14:21 -0600)
+Running sandbox starts TPL, which contains the first phase of vboot, providing
+a device tree and binding a Chromium OS disk image for use to find kernels
+(any Chromium OS image will do). It also saves driver state between U-Boot
+phases into state.dtb and will automatically ensure that memory is shared
+between all phases. TPL will jump to SPL and then on to U-Boot proper.
 
-   Model: Acer Chromebook 13 CB5-311
-   Board: Google/NVIDIA Nyan-big, ID: 1
+It is possible to run with debugging on, e.g.
 
-   Net:   No ethernet found.
-   Hit any key to stop autoboot:  0
-   Tegra124 (Nyan-big) #
+   gdb --args $UB/tpl/u-boot-tpl -d ....
 
+Breakpoints can be set in any U-Boot phase. Overall this is a good debugging
+environment for new verified-boot features.
 
-7. Known problems
 
-On the serial console the word MMC is chopped at the start of the line:
+Samus
+-----
 
-C:   sdhci at 700b0000: 2, sdhci at 700b0400: 1, sdhci at 700b0600: 0
+Basic support is available for samus, using the chromeos_samus target. If you
+have an em100, use:
 
-This is likely due to some problem with change-over of the serial driver
-during relocation (or perhaps updating the clock setup in board_init()).
+   sudo em100 -s -c W25Q128FW -d $UB/image.bin -t -r
 
+to write the image and then boot samus (Power-Refresh).
 
-9. Notes
 
-To check that you copied the u-boot.its file correctly, use these commands.
-You should see that the data at 0x100 in u-boot-chromium.fit is the first few
-bytes of U-Boot:
+Boot flow
+---------
 
-   hd u-boot-chromium.fit |head -20
-   ...
-   00000100  b8 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
+Verified boot starts in TPL, which selects the A or B SPL, which in turn selects
+the A or B U-Boot. Then this jumps to the selected kernel. If anything goes
+wrong, the device reboots and the recovery SPL and U-Boot are used instead.
 
-   hd b/nyan-big/u-boot.bin |head
-   00000000  b8 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
+More details are available here:
 
+   https://www.chromium.org/chromium-os/chromiumos-design-docs/firmware-boot-and-recovery
 
-The 'data' property of the FIT is set up to start at offset 0x100 bytes into
-the file. The change to CONFIG_SYS_TEXT_BASE is also an offset of 0x100 bytes
-from the load address. If this changes, you either need to modify U-Boot to be
-fully relocatable, or expect it to hang.
 
+New uclasses
+------------
 
-chromebook_jerry
-----------------
+Several uclasses are provided in cros/:
 
-The instruction are similar to those for Nyan with changes as noted below:
+	UCLASS_CROS_AUX_FW		Chrome OS auxiliary firmware
+	UCLASS_CROS_FWSTORE		Chrome OS firmware storage
+	UCLASS_CROS_NVDATA		Chrome OS non-volatile data device
+	UCLASS_CROS_VBOOT_EC		Chrome OS vboot EC operations
+	UCLASS_CROS_VBOOT_FLAG		Chrome OS verified boot flag
 
-1. Patch U-Boot
+The existing UCLASS_CROS_EC is also used.
 
-Open include/configs/rk3288_common.h
 
-Change:
-
-#define CONFIG_SYS_TEXT_BASE		0x00100000
-
-to:
-
-#define CONFIG_SYS_TEXT_BASE		0x02000100
-
-
-
-2. Build U-Boot
-
-   mkdir b
-   make -j8 O=b/chromebook_jerry CROSS_COMPILE=arm-linux-gnueabi- \
-	chromebook_jerry_defconfig all
-
-
-3. See above
-
-4. Build and sign an image
-
-   ./b/chromebook_jerry/tools/mkimage -f doc/chromium/chromebook_jerry.its \
-	u-boot-chromium.fit
-   echo test >dummy.txt
-   vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
-	--signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
-	--version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
-	--bootloader dummy.txt --pack u-boot.kpart
-
-
-5. See above
+Commands
+--------
 
-6. See above
+A new 'vboot' command is provided to run particular vboot stages. The most
+useful command is 'vboot go auto', which continues where the last stage left
+off.
 
-7. Start it up
+Note that TPL and SPL do not supports commands as yet, so the vboot code is
+called directly from the SPL boot devices (BOOT_DEVICE_CROS_VBOOT). See
+cros_load_image_tpl() and cros_load_image_spl() which both call
+vboot_run_auto().
 
-Reboot the device in dev mode. Make sure that you have USB booting enabled. To
-do this, login as root (via Ctrl-Alt-forward_arrow) and type
-'enable_dev_usb_boot'. You only need to do this once.
 
-Reboot the device with the SD card inserted. Press Clrl-U at the developer
-mode screen. It should show something like the following on the display:
+Config options
+--------------
 
-   U-Boot 2017.05-00649-g72acdbf-dirty (May 29 2017 - 14:57:05 -0600)
+The main option is CONFIG_CHROMEOS, which enables a wide array of other options
+so that the required features are present.
 
-   Model: Google Jerry
-   Net:   Net Initialization Skipped
-   No ethernet found.
-   Hit any key to stop autoboot:  0
 
+Device-tree config
+------------------
 
-8. Known problems
+Various options are available which control the operation of verified boot.
+See cros/dts/bindings/config.txt for details. Most config is handled at run-
+time, although build-time config (with Kconfig) could also be added fairly
+easily.
 
-None as yet.
 
+Porting to other hardware
+-------------------------
 
-9. Notes
+A basic port to samus (Chromebook Pixel 2015) is in a basic working state,
+using the chromeos_samus target. Patches will likely be forthcoming in early
+2019. Ports to an ARM board and coreboot (for x86 Chromebooks) are in the
+dreaming state.
 
-None as yet.
 
+Tests
+-----
 
-Other notes
-===========
+Chromium OS firmware has a very limited set of tests. The tests that originally
+existed in U-Boot were not brought over to coreboot or depthcharge.
 
-flashrom
---------
+The U-Boot tests ('make check') do operate, but at present there are no
+Chromium OS tests available. These will hopefully come together over time. Of
+course the above sandbox feature provides a sort of functional test and can
+detecte problems that affect the flow or particular vboot features.
 
-   Used to make a backup of your firmware, or to replace it.
 
-   See: https://www.chromium.org/chromium-os/packages/cros-flashrom
+TO DO
+-----
 
+- Support for booting from coreboot (patches expected March 2019)
+- Support for booting from an ARM board, e.g. bob
 
-coreboot
---------
 
-Coreboot itself is not designed to actually boot an OS. Instead, a program
-called Depthcharge is used. This originally came out of U-Boot and was then
-heavily hacked and modified such that is is almost unrecognisable. It does
-include a very small part of the U-Boot command-line interface but is not
-usable as a general-purpose boot loader.
-
-In addition, it has a very unusual design in that it does not do device init
-itself, but instead relies on coreboot. This is similar to (in U-Boot) having
-a SPI driver with an empty probe() method, relying on whatever was set up
-beforehand. It can be quite hard to figure out between these two code bases
-what settings are actually used. When chain-loading into U-Boot we must be
-careful to reinit anything that U-Boot expects. If not, some peripherals (or
-the whole machine) may not work. This makes the process of chainloading more
-complicated than it could be on some platforms.
-
-Finally, it supports only a subset of the U-Boot's FIT format. In particular
-it uses a fixed address to load the FIT and does not support load/exec
-addresses. This means that U-Boot must be able to boot from whatever
-address Depthcharge happens to use (it is the CONFIG_KERNEL_START setting
-in Depthcharge). In practice this means that the data in the kernel at 1 FIT node
-(see above) must start at the same address as U-Boot's CONFIG_SYS_TEXT_BASE.
+Simon Glass
+sjg at chromium.org
+7 October 2018
diff --git a/doc/README.chromium-chainload b/doc/README.chromium-chainload
new file mode 100644
index 0000000000..45eaeced2d
--- /dev/null
+++ b/doc/README.chromium-chainload
@@ -0,0 +1,239 @@
+Running U-Boot from coreboot on Chromebooks
+===========================================
+
+U-Boot can be used as a secondary boot loader in a few situations such as from
+UEFI and coreboot (see README.x86). Recent Chromebooks use coreboot even on
+ARM platforms to start up the machine.
+
+This document aims to provide a guide to booting U-Boot on a Chromebook. It
+is only a starting point, and there are many guides on the interwebs. But
+placing this information in the U-Boot tree should make it easier to find for
+those who use U-Boot habitually.
+
+Most of these platforms are supported by U-Boot natively, but it is risky to
+replace the ROM unless you have a servo board and cable to restore it with.
+
+
+For all of these the standard U-Boot build instructions apply. For example on
+ARM:
+
+   sudo apt install gcc-arm-linux-gnueabi
+   mkdir b
+   make O=b/nyan_big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
+
+You can obtain the vbutil_kernel utility here:
+
+   https://drive.google.com/open?id=0B7WYZbZ9zd-3dHlVVXo4VXE2T0U
+
+
+Snow (Samsung ARM Chromebook)
+-----------------------------
+
+See here:
+
+https://www.chromium.org/chromium-os/firmware-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook
+
+
+Nyan-big
+--------
+
+Compiled based on information here:
+https://lists.denx.de/pipermail/u-boot/2015-March/209530.html
+https://git.collabora.com/cgit/user/tomeu/u-boot.git/commit/?h=nyan-big
+https://lists.denx.de/pipermail/u-boot/2017-May/289491.html
+https://github.com/chromeos-nvidia-androidtv/gnu-linux-on-acer-chromebook-13#copy-data-to-the-sd-card
+
+1. Build U-Boot
+
+   mkdir b
+   make -j8 O=b/nyan-big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
+
+
+2. Select a .its file
+
+Select something from doc/chromium which matches your board, or create your
+own.
+
+Note that the device tree node is required, even though it is not actually
+used by U-Boot. This is because the Chromebook expects to pass it to the
+kernel, and crashes if it is not present.
+
+
+3. Build and sign an image
+
+   ./b/nyan-big/tools/mkimage -f doc/chromium/nyan-big.its u-boot-chromium.fit
+   echo test >dummy.txt
+   vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
+	--signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
+	--version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
+	--bootloader dummy.txt --pack u-boot.kpart
+
+
+4. Prepare an SD card
+
+   DISK=/dev/sdc   # Replace with your actual SD card device
+   sudo cgpt create $DISK
+   sudo cgpt add -b 34 -s 32768 -P 1 -S 1 -t kernel $DISK
+   sudo cgpt add -b 32802 -s 2000000 -t rootfs $DISK
+   sudo gdisk $DISK   # Enter command 'w' to write a protective MBR to the disk
+
+
+5. Write U-Boot to the SD card
+
+   sudo dd if=u-boot.kpart of=/dev/sdc1; sync
+
+
+6. Start it up
+
+Reboot the device in dev mode. Make sure that you have USB booting enabled. To
+do this, login as root (via Ctrl-Alt-forward_arrow) and type
+'enable_dev_usb_boot'. You only need to do this once.
+
+Reboot the device with the SD card inserted. Press Clrl-U at the developer
+mode screen. It should show something like the following on the display:
+
+   U-Boot 2017.07-00637-g242eb42-dirty (May 22 2017 - 06:14:21 -0600)
+
+   Model: Acer Chromebook 13 CB5-311
+   Board: Google/NVIDIA Nyan-big, ID: 1
+
+   Net:   No ethernet found.
+   Hit any key to stop autoboot:  0
+   Tegra124 (Nyan-big) #
+
+
+7. Known problems
+
+On the serial console the word MMC is chopped at the start of the line:
+
+C:   sdhci at 700b0000: 2, sdhci at 700b0400: 1, sdhci at 700b0600: 0
+
+This is likely due to some problem with change-over of the serial driver
+during relocation (or perhaps updating the clock setup in board_init()).
+
+
+9. Notes
+
+To check that you copied the u-boot.its file correctly, use these commands.
+You should see that the data at 0x100 in u-boot-chromium.fit is the first few
+bytes of U-Boot:
+
+   hd u-boot-chromium.fit |head -20
+   ...
+   00000100  b8 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
+
+   hd b/nyan-big/u-boot.bin |head
+   00000000  b8 00 00 ea 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5  |................|
+
+
+The 'data' property of the FIT is set up to start at offset 0x100 bytes into
+the file. The change to CONFIG_SYS_TEXT_BASE is also an offset of 0x100 bytes
+from the load address. If this changes, you either need to modify U-Boot to be
+fully relocatable, or expect it to hang.
+
+
+chromebook_jerry
+----------------
+
+The instruction are similar to those for Nyan with changes as noted below:
+
+1. Patch U-Boot
+
+Open include/configs/rk3288_common.h
+
+Change:
+
+#define CONFIG_SYS_TEXT_BASE		0x00100000
+
+to:
+
+#define CONFIG_SYS_TEXT_BASE		0x02000100
+
+
+
+2. Build U-Boot
+
+   mkdir b
+   make -j8 O=b/chromebook_jerry CROSS_COMPILE=arm-linux-gnueabi- \
+	chromebook_jerry_defconfig all
+
+
+3. See above
+
+4. Build and sign an image
+
+   ./b/chromebook_jerry/tools/mkimage -f doc/chromium/chromebook_jerry.its \
+	u-boot-chromium.fit
+   echo test >dummy.txt
+   vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
+	--signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
+	--version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
+	--bootloader dummy.txt --pack u-boot.kpart
+
+
+5. See above
+
+6. See above
+
+7. Start it up
+
+Reboot the device in dev mode. Make sure that you have USB booting enabled. To
+do this, login as root (via Ctrl-Alt-forward_arrow) and type
+'enable_dev_usb_boot'. You only need to do this once.
+
+Reboot the device with the SD card inserted. Press Clrl-U at the developer
+mode screen. It should show something like the following on the display:
+
+   U-Boot 2017.05-00649-g72acdbf-dirty (May 29 2017 - 14:57:05 -0600)
+
+   Model: Google Jerry
+   Net:   Net Initialization Skipped
+   No ethernet found.
+   Hit any key to stop autoboot:  0
+
+
+8. Known problems
+
+None as yet.
+
+
+9. Notes
+
+None as yet.
+
+
+Other notes
+===========
+
+flashrom
+--------
+
+   Used to make a backup of your firmware, or to replace it.
+
+   See: https://www.chromium.org/chromium-os/packages/cros-flashrom
+
+
+coreboot
+--------
+
+Coreboot itself is not designed to actually boot an OS. Instead, a program
+called Depthcharge is used. This originally came out of U-Boot and was then
+heavily hacked and modified such that is is almost unrecognisable. It does
+include a very small part of the U-Boot command-line interface but is not
+usable as a general-purpose boot loader.
+
+In addition, it has a very unusual design in that it does not do device init
+itself, but instead relies on coreboot. This is similar to (in U-Boot) having
+a SPI driver with an empty probe() method, relying on whatever was set up
+beforehand. It can be quite hard to figure out between these two code bases
+what settings are actually used. When chain-loading into U-Boot we must be
+careful to reinit anything that U-Boot expects. If not, some peripherals (or
+the whole machine) may not work. This makes the process of chainloading more
+complicated than it could be on some platforms.
+
+Finally, it supports only a subset of the U-Boot's FIT format. In particular
+it uses a fixed address to load the FIT and does not support load/exec
+addresses. This means that U-Boot must be able to boot from whatever
+address Depthcharge happens to use (it is the CONFIG_KERNEL_START setting
+in Depthcharge). In practice this means that the data in the kernel at 1 FIT node
+(see above) must start at the same address as U-Boot's CONFIG_SYS_TEXT_BASE.
-- 
2.20.1.495.gaa96b0ce6b-goog

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] cros: Expand the Chromium OS documentation
  2019-01-31  3:51 [U-Boot] [PATCH] cros: Expand the Chromium OS documentation Simon Glass
@ 2019-02-04 15:01 ` Tristan Bastian
  2019-02-08  4:11   ` Simon Glass
  0 siblings, 1 reply; 5+ messages in thread
From: Tristan Bastian @ 2019-02-04 15:01 UTC (permalink / raw)
  To: u-boot

Hi Simon,

I'm using the nyan-big chromebook (tegra124).
Is it possible to replace coreboot + depthcharge with just u-boot on the internal spi flash?
If so, do you have some instructions for that?

At the moment I'm chainloading u-boot, but this is causing some issues with not working LPAE so I'm only getting 2 of my 4GB of memory..
So I would like to try and run u-boot natively to see if chainloading is the problem or u-boot itself..
Or maybe you have some instructions to run coreboot + u-boot without depthcharge?

Thanks,
Tristan


Simon Glass – Thu, 31. January 2019 4:52
> The current documentation only covers how to chain-load U-Boot on a
> Chromebook. Add more information about the other ways to use U-Boot on
> Chromebooks.
> 
> In particular it is again possible to build it with Chromium OS
> verified boot.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
> doc/README.chromium | 296 ++++++++++++++--------------------
> doc/README.chromium-chainload | 239 +++++++++++++++++++++++++++
> 2 files changed, 356 insertions(+), 179 deletions(-)
> create mode 100644 doc/README.chromium-chainload
> 
> diff --git a/doc/README.chromium b/doc/README.chromium
> index 45eaeced2d..096bc4f1f7 100644
> --- a/doc/README.chromium
> +++ b/doc/README.chromium
> @@ -1,239 +1,177 @@
> -Running U-Boot from coreboot on Chromebooks
> -===========================================
> +Chromium OS Support in U-Boot
> +=============================
> 
> -U-Boot can be used as a secondary boot loader in a few situations such as
> from
> -UEFI and coreboot (see README.x86). Recent Chromebooks use coreboot even on
> -ARM platforms to start up the machine.
> +Introduction
> +------------
> 
> -This document aims to provide a guide to booting U-Boot on a Chromebook. It
> -is only a starting point, and there are many guides on the interwebs. But
> -placing this information in the U-Boot tree should make it easier to find for
> -those who use U-Boot habitually.
> +This describes how to use U-Boot with Chromium OS. Several options are
> +available:
> 
> -Most of these platforms are supported by U-Boot natively, but it is risky to
> -replace the ROM unless you have a servo board and cable to restore it with.
> + - Running U-Boot from the 'altfw' feature, which is available on selected
> + Chromebooks from 2019 onwards (initially Grunt). Press '1' from the
> + developer-mode screen to get into U-Boot. See here for details:
> + 
> sites.google.com/a/chromium.org/dev/chromium-os/poking-around-your-chrome-os-device
> 
> + - Running U-Boot from the disk partition. This involves signing U-Boot and
> + placing it on the disk, for booting as a 'kernel'. See
> + README.chromium-chainload for information on this. This is the only
> + option on non-U-Boot Chromebooks from 2013 to 2018 and is somewhat
> + more involved.
> 
> -For all of these the standard U-Boot build instructions apply. For example on
> -ARM:
> + - Running U-Boot with Chromium OS verified boot. This allows U-Boot to be
> + used instead of either or both of depthcharge (a bootloader which forked
> + from U-Boot in 2013) and coreboot. See below for more information on
> + this.
> 
> - sudo apt install gcc-arm-linux-gnueabi
> - mkdir b
> - make O=b/nyan_big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
> 
> -You can obtain the vbutil_kernel utility here:
> +U-Boot with Chromium OS verified boot
> +-------------------------------------
> 
> - drive.google.com/open
> +To obtain:
> 
> + git clone github.com/sglass68/u-boot.git
> + cd u-boot
> + git checkout cros-master
> 
> -Snow (Samsung ARM Chromebook)
> ------------------------------
> +To build for sandbox:
> 
> -See here:
> + UB=/tmp/b/chromeos_sandbox # U-Boot build directory
> + CROS=/home/sglass/cosarm # Chromium OS directory
> + make O=$UB/chromeos_sandbox_defconfig
> + make O=$UB -j20 -s VBOOT_SOURCE=$CROS/src/platform/vboot_reference \
> + MAKEFLAGS_VBOOT=DEBUG=1 QUIET=1
> 
> -
> www.chromium.org/chromium-os/firmware-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook
> +Replace sandbox with another supported target.
> 
> +This produces $UB/image.bin which contains the firmware binaries in a SPI
> +flash image.
> 
> -Nyan-big
> ---------
> -
> -Compiled based on information here:
> -lists.denx.de/pipermail/u-boot/2015-March/209530.html
> -git.collabora.com/cgit/user/tomeu/u-boot.git/commit/
> -lists.denx.de/pipermail/u-boot/2017-May/289491.html
> -github.com/chromeos-nvidia-androidtv/gnu-linux-on-acer-chromebook-13
> -
> -1. Build U-Boot
> -
> - mkdir b
> - make -j8 O=b/nyan-big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig
> all
> -
> -
> -2. Select a .its file
> -
> -Select something from doc/chromium which matches your board, or create your
> -own.
> -
> -Note that the device tree node is required, even though it is not actually
> -used by U-Boot. This is because the Chromebook expects to pass it to the
> -kernel, and crashes if it is not present.
> -
> -
> -3. Build and sign an image
> -
> - ./b/nyan-big/tools/mkimage -f doc/chromium/nyan-big.its u-boot-chromium.fit
> - echo test >dummy.txt
> - vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
> - --signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
> - --version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
> - --bootloader dummy.txt --pack u-boot.kpart
> -
> -
> -4. Prepare an SD card
> -
> - DISK=/dev/sdc # Replace with your actual SD card device
> - sudo cgpt create $DISK
> - sudo cgpt add -b 34 -s 32768 -P 1 -S 1 -t kernel $DISK
> - sudo cgpt add -b 32802 -s 2000000 -t rootfs $DISK
> - sudo gdisk $DISK # Enter command 'w' to write a protective MBR to the disk
> -
> -
> -5. Write U-Boot to the SD card
> +To run on sandbox:
> 
> - sudo dd if=u-boot.kpart of=/dev/sdc1; sync
> + $UB/tpl/u-boot-tpl -d $UB/u-boot.dtb.out \
> + -L6 -c "host bind 0
> $CROS/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" \
> + -l -w -s state.dtb -r
> 
> +To run on other boards:
> + Install image.bin in the SPI flash of your device
> + Boot your system
> 
> -6. Start it up
> 
> -Reboot the device in dev mode. Make sure that you have USB booting enabled.
> To
> -do this, login as root (via Ctrl-Alt-forward_arrow) and type
> -'enable_dev_usb_boot'. You only need to do this once.
> +Sandbox
> +-------
> 
> -Reboot the device with the SD card inserted. Press Clrl-U at the developer
> -mode screen. It should show something like the following on the display:
> +Most Chromium OS development with U-Boot is undertaken using sandbox. There
> is
> +a sandbox target available (chromeos_sandbox) which allows running U-Boot on
> +a Linux machine completion with emulations of the display, TPM, disk, etc.
> 
> - U-Boot 2017.07-00637-g242eb42-dirty (May 22 2017 - 06:14:21 -0600)
> +Running sandbox starts TPL, which contains the first phase of vboot,
> providing
> +a device tree and binding a Chromium OS disk image for use to find kernels
> +(any Chromium OS image will do). It also saves driver state between U-Boot
> +phases into state.dtb and will automatically ensure that memory is shared
> +between all phases. TPL will jump to SPL and then on to U-Boot proper.
> 
> - Model: Acer Chromebook 13 CB5-311
> - Board: Google/NVIDIA Nyan-big, ID: 1
> +It is possible to run with debugging on, e.g.
> 
> - Net: No ethernet found.
> - Hit any key to stop autoboot: 0
> - Tegra124 (Nyan-big) #
> + gdb --args $UB/tpl/u-boot-tpl -d ....
> 
> +Breakpoints can be set in any U-Boot phase. Overall this is a good debugging
> +environment for new verified-boot features.
> 
> -7. Known problems
> 
> -On the serial console the word MMC is chopped at the start of the line:
> +Samus
> +-----
> 
> -C: sdhci at 700b0000: 2, sdhci at 700b0400: 1, sdhci at 700b0600: 0
> +Basic support is available for samus, using the chromeos_samus target. If you
> +have an em100, use:
> 
> -This is likely due to some problem with change-over of the serial driver
> -during relocation (or perhaps updating the clock setup in board_init()).
> + sudo em100 -s -c W25Q128FW -d $UB/image.bin -t -r
> 
> +to write the image and then boot samus (Power-Refresh).
> 
> -9. Notes
> 
> -To check that you copied the u-boot.its file correctly, use these commands.
> -You should see that the data at 0x100 in u-boot-chromium.fit is the first few
> -bytes of U-Boot:
> +Boot flow
> +---------
> 
> - hd u-boot-chromium.fit |head -20
> - ...
> - 00000100 b8 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|
> +Verified boot starts in TPL, which selects the A or B SPL, which in turn
> selects
> +the A or B U-Boot. Then this jumps to the selected kernel. If anything goes
> +wrong, the device reboots and the recovery SPL and U-Boot are used instead.
> 
> - hd b/nyan-big/u-boot.bin |head
> - 00000000 b8 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|
> +More details are available here:
> 
> + 
> www.chromium.org/chromium-os/chromiumos-design-docs/firmware-boot-and-recovery
> 
> -The 'data' property of the FIT is set up to start at offset 0x100 bytes into
> -the file. The change to CONFIG_SYS_TEXT_BASE is also an offset of 0x100 bytes
> -from the load address. If this changes, you either need to modify U-Boot to
> be
> -fully relocatable, or expect it to hang.
> 
> +New uclasses
> +------------
> 
> -chromebook_jerry
> -----------------
> +Several uclasses are provided in cros/:
> 
> -The instruction are similar to those for Nyan with changes as noted below:
> + UCLASS_CROS_AUX_FW Chrome OS auxiliary firmware
> + UCLASS_CROS_FWSTORE Chrome OS firmware storage
> + UCLASS_CROS_NVDATA Chrome OS non-volatile data device
> + UCLASS_CROS_VBOOT_EC Chrome OS vboot EC operations
> + UCLASS_CROS_VBOOT_FLAG Chrome OS verified boot flag
> 
> -1. Patch U-Boot
> +The existing UCLASS_CROS_EC is also used.
> 
> -Open include/configs/rk3288_common.h
> 
> -Change:
> -
> -#define CONFIG_SYS_TEXT_BASE 0x00100000
> -
> -to:
> -
> -#define CONFIG_SYS_TEXT_BASE 0x02000100
> -
> -
> -
> -2. Build U-Boot
> -
> - mkdir b
> - make -j8 O=b/chromebook_jerry CROSS_COMPILE=arm-linux-gnueabi- \
> - chromebook_jerry_defconfig all
> -
> -
> -3. See above
> -
> -4. Build and sign an image
> -
> - ./b/chromebook_jerry/tools/mkimage -f doc/chromium/chromebook_jerry.its \
> - u-boot-chromium.fit
> - echo test >dummy.txt
> - vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
> - --signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
> - --version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
> - --bootloader dummy.txt --pack u-boot.kpart
> -
> -
> -5. See above
> +Commands
> +--------
> 
> -6. See above
> +A new 'vboot' command is provided to run particular vboot stages. The most
> +useful command is 'vboot go auto', which continues where the last stage left
> +off.
> 
> -7. Start it up
> +Note that TPL and SPL do not supports commands as yet, so the vboot code is
> +called directly from the SPL boot devices (BOOT_DEVICE_CROS_VBOOT). See
> +cros_load_image_tpl() and cros_load_image_spl() which both call
> +vboot_run_auto().
> 
> -Reboot the device in dev mode. Make sure that you have USB booting enabled.
> To
> -do this, login as root (via Ctrl-Alt-forward_arrow) and type
> -'enable_dev_usb_boot'. You only need to do this once.
> 
> -Reboot the device with the SD card inserted. Press Clrl-U at the developer
> -mode screen. It should show something like the following on the display:
> +Config options
> +--------------
> 
> - U-Boot 2017.05-00649-g72acdbf-dirty (May 29 2017 - 14:57:05 -0600)
> +The main option is CONFIG_CHROMEOS, which enables a wide array of other
> options
> +so that the required features are present.
> 
> - Model: Google Jerry
> - Net: Net Initialization Skipped
> - No ethernet found.
> - Hit any key to stop autoboot: 0
> 
> +Device-tree config
> +------------------
> 
> -8. Known problems
> +Various options are available which control the operation of verified boot.
> +See cros/dts/bindings/config.txt for details. Most config is handled at run-
> +time, although build-time config (with Kconfig) could also be added fairly
> +easily.
> 
> -None as yet.
> 
> +Porting to other hardware
> +-------------------------
> 
> -9. Notes
> +A basic port to samus (Chromebook Pixel 2015) is in a basic working state,
> +using the chromeos_samus target. Patches will likely be forthcoming in early
> +2019. Ports to an ARM board and coreboot (for x86 Chromebooks) are in the
> +dreaming state.
> 
> -None as yet.
> 
> +Tests
> +-----
> 
> -Other notes
> -===========
> +Chromium OS firmware has a very limited set of tests. The tests that
> originally
> +existed in U-Boot were not brought over to coreboot or depthcharge.
> 
> -flashrom
> ---------
> +The U-Boot tests ('make check') do operate, but at present there are no
> +Chromium OS tests available. These will hopefully come together over time. Of
> +course the above sandbox feature provides a sort of functional test and can
> +detecte problems that affect the flow or particular vboot features.
> 
> - Used to make a backup of your firmware, or to replace it.
> 
> - See: www.chromium.org/chromium-os/packages/cros-flashrom
> +TO DO
> +-----
> 
> +- Support for booting from coreboot (patches expected March 2019)
> +- Support for booting from an ARM board, e.g. bob
> 
> -coreboot
> ---------
> 
> -Coreboot itself is not designed to actually boot an OS. Instead, a program
> -called Depthcharge is used. This originally came out of U-Boot and was then
> -heavily hacked and modified such that is is almost unrecognisable. It does
> -include a very small part of the U-Boot command-line interface but is not
> -usable as a general-purpose boot loader.
> -
> -In addition, it has a very unusual design in that it does not do device init
> -itself, but instead relies on coreboot. This is similar to (in U-Boot) having
> -a SPI driver with an empty probe() method, relying on whatever was set up
> -beforehand. It can be quite hard to figure out between these two code bases
> -what settings are actually used. When chain-loading into U-Boot we must be
> -careful to reinit anything that U-Boot expects. If not, some peripherals (or
> -the whole machine) may not work. This makes the process of chainloading more
> -complicated than it could be on some platforms.
> -
> -Finally, it supports only a subset of the U-Boot's FIT format. In particular
> -it uses a fixed address to load the FIT and does not support load/exec
> -addresses. This means that U-Boot must be able to boot from whatever
> -address Depthcharge happens to use (it is the CONFIG_KERNEL_START setting
> -in Depthcharge). In practice this means that the data in the kernel at 1 FIT
> node
> -(see above) must start at the same address as U-Boot's CONFIG_SYS_TEXT_BASE.
> +Simon Glass
> +sjg at chromium.org
> +7 October 2018
> diff --git a/doc/README.chromium-chainload b/doc/README.chromium-chainload
> new file mode 100644
> index 0000000000..45eaeced2d
> --- /dev/null
> +++ b/doc/README.chromium-chainload
> @@ -0,0 +1,239 @@
> +Running U-Boot from coreboot on Chromebooks
> +===========================================
> +
> +U-Boot can be used as a secondary boot loader in a few situations such as
> from
> +UEFI and coreboot (see README.x86). Recent Chromebooks use coreboot even on
> +ARM platforms to start up the machine.
> +
> +This document aims to provide a guide to booting U-Boot on a Chromebook. It
> +is only a starting point, and there are many guides on the interwebs. But
> +placing this information in the U-Boot tree should make it easier to find for
> +those who use U-Boot habitually.
> +
> +Most of these platforms are supported by U-Boot natively, but it is risky to
> +replace the ROM unless you have a servo board and cable to restore it with.
> +
> +
> +For all of these the standard U-Boot build instructions apply. For example on
> +ARM:
> +
> + sudo apt install gcc-arm-linux-gnueabi
> + mkdir b
> + make O=b/nyan_big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig all
> +
> +You can obtain the vbutil_kernel utility here:
> +
> + drive.google.com/open
> +
> +
> +Snow (Samsung ARM Chromebook)
> +-----------------------------
> +
> +See here:
> +
> +
> www.chromium.org/chromium-os/firmware-porting-guide/using-nv-u-boot-on-the-samsung-arm-chromebook
> +
> +
> +Nyan-big
> +--------
> +
> +Compiled based on information here:
> +lists.denx.de/pipermail/u-boot/2015-March/209530.html
> +git.collabora.com/cgit/user/tomeu/u-boot.git/commit/
> +lists.denx.de/pipermail/u-boot/2017-May/289491.html
> +github.com/chromeos-nvidia-androidtv/gnu-linux-on-acer-chromebook-13
> +
> +1. Build U-Boot
> +
> + mkdir b
> + make -j8 O=b/nyan-big CROSS_COMPILE=arm-linux-gnueabi- nyan-big_defconfig
> all
> +
> +
> +2. Select a .its file
> +
> +Select something from doc/chromium which matches your board, or create your
> +own.
> +
> +Note that the device tree node is required, even though it is not actually
> +used by U-Boot. This is because the Chromebook expects to pass it to the
> +kernel, and crashes if it is not present.
> +
> +
> +3. Build and sign an image
> +
> + ./b/nyan-big/tools/mkimage -f doc/chromium/nyan-big.its u-boot-chromium.fit
> + echo test >dummy.txt
> + vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
> + --signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
> + --version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
> + --bootloader dummy.txt --pack u-boot.kpart
> +
> +
> +4. Prepare an SD card
> +
> + DISK=/dev/sdc # Replace with your actual SD card device
> + sudo cgpt create $DISK
> + sudo cgpt add -b 34 -s 32768 -P 1 -S 1 -t kernel $DISK
> + sudo cgpt add -b 32802 -s 2000000 -t rootfs $DISK
> + sudo gdisk $DISK # Enter command 'w' to write a protective MBR to the disk
> +
> +
> +5. Write U-Boot to the SD card
> +
> + sudo dd if=u-boot.kpart of=/dev/sdc1; sync
> +
> +
> +6. Start it up
> +
> +Reboot the device in dev mode. Make sure that you have USB booting enabled.
> To
> +do this, login as root (via Ctrl-Alt-forward_arrow) and type
> +'enable_dev_usb_boot'. You only need to do this once.
> +
> +Reboot the device with the SD card inserted. Press Clrl-U at the developer
> +mode screen. It should show something like the following on the display:
> +
> + U-Boot 2017.07-00637-g242eb42-dirty (May 22 2017 - 06:14:21 -0600)
> +
> + Model: Acer Chromebook 13 CB5-311
> + Board: Google/NVIDIA Nyan-big, ID: 1
> +
> + Net: No ethernet found.
> + Hit any key to stop autoboot: 0
> + Tegra124 (Nyan-big) #
> +
> +
> +7. Known problems
> +
> +On the serial console the word MMC is chopped at the start of the line:
> +
> +C: sdhci at 700b0000: 2, sdhci at 700b0400: 1, sdhci at 700b0600: 0
> +
> +This is likely due to some problem with change-over of the serial driver
> +during relocation (or perhaps updating the clock setup in board_init()).
> +
> +
> +9. Notes
> +
> +To check that you copied the u-boot.its file correctly, use these commands.
> +You should see that the data at 0x100 in u-boot-chromium.fit is the first few
> +bytes of U-Boot:
> +
> + hd u-boot-chromium.fit |head -20
> + ...
> + 00000100 b8 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|
> +
> + hd b/nyan-big/u-boot.bin |head
> + 00000000 b8 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|
> +
> +
> +The 'data' property of the FIT is set up to start at offset 0x100 bytes into
> +the file. The change to CONFIG_SYS_TEXT_BASE is also an offset of 0x100 bytes
> +from the load address. If this changes, you either need to modify U-Boot to
> be
> +fully relocatable, or expect it to hang.
> +
> +
> +chromebook_jerry
> +----------------
> +
> +The instruction are similar to those for Nyan with changes as noted below:
> +
> +1. Patch U-Boot
> +
> +Open include/configs/rk3288_common.h
> +
> +Change:
> +
> +#define CONFIG_SYS_TEXT_BASE 0x00100000
> +
> +to:
> +
> +#define CONFIG_SYS_TEXT_BASE 0x02000100
> +
> +
> +
> +2. Build U-Boot
> +
> + mkdir b
> + make -j8 O=b/chromebook_jerry CROSS_COMPILE=arm-linux-gnueabi- \
> + chromebook_jerry_defconfig all
> +
> +
> +3. See above
> +
> +4. Build and sign an image
> +
> + ./b/chromebook_jerry/tools/mkimage -f doc/chromium/chromebook_jerry.its \
> + u-boot-chromium.fit
> + echo test >dummy.txt
> + vbutil_kernel --arch arm --keyblock doc/chromium/devkeys/kernel.keyblock \
> + --signprivate doc/chromium/devkeys/kernel_data_key.vbprivk \
> + --version 1 --config dummy.txt --vmlinuz u-boot-chromium.fit \
> + --bootloader dummy.txt --pack u-boot.kpart
> +
> +
> +5. See above
> +
> +6. See above
> +
> +7. Start it up
> +
> +Reboot the device in dev mode. Make sure that you have USB booting enabled.
> To
> +do this, login as root (via Ctrl-Alt-forward_arrow) and type
> +'enable_dev_usb_boot'. You only need to do this once.
> +
> +Reboot the device with the SD card inserted. Press Clrl-U at the developer
> +mode screen. It should show something like the following on the display:
> +
> + U-Boot 2017.05-00649-g72acdbf-dirty (May 29 2017 - 14:57:05 -0600)
> +
> + Model: Google Jerry
> + Net: Net Initialization Skipped
> + No ethernet found.
> + Hit any key to stop autoboot: 0
> +
> +
> +8. Known problems
> +
> +None as yet.
> +
> +
> +9. Notes
> +
> +None as yet.
> +
> +
> +Other notes
> +===========
> +
> +flashrom
> +--------
> +
> + Used to make a backup of your firmware, or to replace it.
> +
> + See: www.chromium.org/chromium-os/packages/cros-flashrom
> +
> +
> +coreboot
> +--------
> +
> +Coreboot itself is not designed to actually boot an OS. Instead, a program
> +called Depthcharge is used. This originally came out of U-Boot and was then
> +heavily hacked and modified such that is is almost unrecognisable. It does
> +include a very small part of the U-Boot command-line interface but is not
> +usable as a general-purpose boot loader.
> +
> +In addition, it has a very unusual design in that it does not do device init
> +itself, but instead relies on coreboot. This is similar to (in U-Boot) having
> +a SPI driver with an empty probe() method, relying on whatever was set up
> +beforehand. It can be quite hard to figure out between these two code bases
> +what settings are actually used. When chain-loading into U-Boot we must be
> +careful to reinit anything that U-Boot expects. If not, some peripherals (or
> +the whole machine) may not work. This makes the process of chainloading more
> +complicated than it could be on some platforms.
> +
> +Finally, it supports only a subset of the U-Boot's FIT format. In particular
> +it uses a fixed address to load the FIT and does not support load/exec
> +addresses. This means that U-Boot must be able to boot from whatever
> +address Depthcharge happens to use (it is the CONFIG_KERNEL_START setting
> +in Depthcharge). In practice this means that the data in the kernel at 1 FIT
> node
> +(see above) must start at the same address as U-Boot's CONFIG_SYS_TEXT_BASE.
> -- 
> 2.20.1.495.gaa96b0ce6b-goog
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> lists.denx.de/listinfo/u-boot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] cros: Expand the Chromium OS documentation
  2019-02-04 15:01 ` Tristan Bastian
@ 2019-02-08  4:11   ` Simon Glass
  2019-02-08  8:34     ` Tristan Bastian
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2019-02-08  4:11 UTC (permalink / raw)
  To: u-boot

Hi Tristan,

On Mon, 4 Feb 2019 at 08:01, Tristan Bastian <tristan-c.bastian@gmx.de> wrote:
>
> Hi Simon,
>
> I'm using the nyan-big chromebook (tegra124).
> Is it possible to replace coreboot + depthcharge with just u-boot on the internal spi flash?
> If so, do you have some instructions for that?

Possibly, although I would suggest being careful about that. Make sure
you have a tool to revert the flash contents. Note that you will not
have signed firmware so won't get updates. Presumably you are in dev
mode anyway,

The instructions are just to flash the image.bin file that comes out
of the build, once it exists. But there is no chromeos_nyan target as
yet. So your only option right now is to build an image without
verified boot, and use a script to boot Chrome OS. I have not tried on
this nyan.

>
> At the moment I'm chainloading u-boot, but this is causing some issues with not working LPAE so I'm only getting 2 of my 4GB of memory..
> So I would like to try and run u-boot natively to see if chainloading is the problem or u-boot itself..
> Or maybe you have some instructions to run coreboot + u-boot without depthcharge?

I suppose you could put U-Boot in the image in instead of dc and it might work.

[..]

Regards,
Simon

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] cros: Expand the Chromium OS documentation
  2019-02-08  4:11   ` Simon Glass
@ 2019-02-08  8:34     ` Tristan Bastian
  2019-08-13  9:33       ` Simon Glass
  0 siblings, 1 reply; 5+ messages in thread
From: Tristan Bastian @ 2019-02-08  8:34 UTC (permalink / raw)
  To: u-boot

Hi Simon,


Simon Glass – Fri, 8. February 2019 5:12
> Hi Tristan,
> 
> On Mon, 4 Feb 2019 at 08:01, Tristan Bastian <tristan-c.bastian@gmx.de> wrote:
> >
> > Hi Simon,
> >
> > I'm using the nyan-big chromebook (tegra124).
> > Is it possible to replace coreboot + depthcharge with just u-boot on the
> internal spi flash?
> > If so, do you have some instructions for that?
> 
> Possibly, although I would suggest being careful about that. Make sure
> you have a tool to revert the flash contents. Note that you will not
> have signed firmware so won't get updates. Presumably you are in dev
> mode anyway,

I've already got myself a SOIC flash clip and was able to extract the current content of the spi flash.
 
> The instructions are just to flash the image.bin file that comes out
> of the build, once it exists. But there is no chromeos_nyan target as
> yet. So your only option right now is to build an image without
> verified boot, and use a script to boot Chrome OS. I have not tried on
> this nyan.

I'm not sure to which file you are referring to, since there is no image.bin file..
If I build u-boot with this command: "make -j4 O=b/nyan-big nyan-big_defconfig all"
I'm getting these dot bin files:
-rw-r--r-- 1 tristan tristan 691K Feb  8 08:09 u-boot.bin
-rw-r--r-- 1 tristan tristan 691K Feb  8 08:09 u-boot-dtb.bin
-rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-dtb-tegra.bin
-rwxr-xr-x 1 tristan tristan 639K Feb  8 08:09 u-boot-nodtb.bin
-rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-nodtb-tegra.bin
-rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-tegra.bin

I would only be able to flash one of these files with flashrom to the spi chip if the file size equals the flash size..
I thought the 16MB files would be right, but nyan-big only has a flash size of about 4M..

The spi flash size seems to be configured in "include/configs/nyan-big.h" with:
#define CONFIG_SPI_FLASH_SIZE (4 << 20)
Which is the correct flash size (4194304)..

So should u-boot output a binary that I'm able to flash directly to the spi chip or are there some additional steps needed?
If so, could you give me some hints on what to do?

> > At the moment I'm chainloading u-boot, but this is causing some issues with
> not working LPAE so I'm only getting 2 of my 4GB of memory..
> > So I would like to try and run u-boot natively to see if chainloading is the
> problem or u-boot itself..
> > Or maybe you have some instructions to run coreboot + u-boot without
> depthcharge?
> 
> I suppose you could put U-Boot in the image in instead of dc and it might
> work.
Sorry for asking, but do you have some instructions for replacing dc?

Thanks,
Tristan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] cros: Expand the Chromium OS documentation
  2019-02-08  8:34     ` Tristan Bastian
@ 2019-08-13  9:33       ` Simon Glass
  0 siblings, 0 replies; 5+ messages in thread
From: Simon Glass @ 2019-08-13  9:33 UTC (permalink / raw)
  To: u-boot

Hi Tristan,

On Fri, 8 Feb 2019 at 01:34, Tristan Bastian <tristan-c.bastian@gmx.de> wrote:
>
> Hi Simon,
>
>
> Simon Glass – Fri, 8. February 2019 5:12
> > Hi Tristan,
> >
> > On Mon, 4 Feb 2019 at 08:01, Tristan Bastian <tristan-c.bastian@gmx.de> wrote:
> > >
> > > Hi Simon,
> > >
> > > I'm using the nyan-big chromebook (tegra124).
> > > Is it possible to replace coreboot + depthcharge with just u-boot on the
> > internal spi flash?
> > > If so, do you have some instructions for that?
> >
> > Possibly, although I would suggest being careful about that. Make sure
> > you have a tool to revert the flash contents. Note that you will not
> > have signed firmware so won't get updates. Presumably you are in dev
> > mode anyway,
>
> I've already got myself a SOIC flash clip and was able to extract the current content of the spi flash.
>
> > The instructions are just to flash the image.bin file that comes out
> > of the build, once it exists. But there is no chromeos_nyan target as
> > yet. So your only option right now is to build an image without
> > verified boot, and use a script to boot Chrome OS. I have not tried on
> > this nyan.
>
> I'm not sure to which file you are referring to, since there is no image.bin file..
> If I build u-boot with this command: "make -j4 O=b/nyan-big nyan-big_defconfig all"
> I'm getting these dot bin files:
> -rw-r--r-- 1 tristan tristan 691K Feb  8 08:09 u-boot.bin
> -rw-r--r-- 1 tristan tristan 691K Feb  8 08:09 u-boot-dtb.bin
> -rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-dtb-tegra.bin
> -rwxr-xr-x 1 tristan tristan 639K Feb  8 08:09 u-boot-nodtb.bin
> -rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-nodtb-tegra.bin
> -rw-r--r-- 1 tristan tristan  16M Feb  8 08:09 u-boot-tegra.bin
>
> I would only be able to flash one of these files with flashrom to the spi chip if the file size equals the flash size..
> I thought the 16MB files would be right, but nyan-big only has a flash size of about 4M..
>
> The spi flash size seems to be configured in "include/configs/nyan-big.h" with:
> #define CONFIG_SPI_FLASH_SIZE (4 << 20)
> Which is the correct flash size (4194304)..
>
> So should u-boot output a binary that I'm able to flash directly to the spi chip or are there some additional steps needed?
> If so, could you give me some hints on what to do?

That seems like a bug to me. I will see if I can take a look.

>
> > > At the moment I'm chainloading u-boot, but this is causing some issues with
> > not working LPAE so I'm only getting 2 of my 4GB of memory..
> > > So I would like to try and run u-boot natively to see if chainloading is the
> > problem or u-boot itself..
> > > Or maybe you have some instructions to run coreboot + u-boot without
> > depthcharge?
> >
> > I suppose you could put U-Boot in the image in instead of dc and it might
> > work.
> Sorry for asking, but do you have some instructions for replacing dc?

I don't see much point in use coreboot on ARM when U-Boot already has
support for the platform. U-Boot's coreboot support is really more
aimed at x86, where coreboot has a lot of support.

Sorry I missed this email.

Regards,
Simon

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-08-13  9:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-31  3:51 [U-Boot] [PATCH] cros: Expand the Chromium OS documentation Simon Glass
2019-02-04 15:01 ` Tristan Bastian
2019-02-08  4:11   ` Simon Glass
2019-02-08  8:34     ` Tristan Bastian
2019-08-13  9:33       ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.