[nelson][paver] Support bl2+tpl combined image

Add support for flashing combined bl2+tpl image for nelson.
Specifically, it flashes bl2+tpl to boot0/1 and then extracts tpl part
and flashes to either tpl_a or tpl_b depending on the given
configuration.

This is achieved by introducing a nelson bootloader specific partition
client that forms as a composite of PartitionCopyClient and
FixedOffsetBlockPartitionClient. One tricky issue is how to define the
behavior of read. Becuase tpl_r in boot0/1 will likely be different from
tpl_a/b as we keep performing A/B update. For now, the read method will
first compare tpl_r with tpl_a/b and only proceed to read bl2+tpl if
they are the same. Otherwise, it errors out.

Change-Id: I91d1895e6f7e24be330ea2c1260bfa8c24cb7fc1
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/448056
Commit-Queue: Yecheng Zhao <zyecheng@google.com>
Reviewed-by: David Pursell <dpursell@google.com>
Reviewed-by: Suraj Malhotra <surajmalhotra@google.com>
Testability-Review: David Pursell <dpursell@google.com>
8 files changed
tree: 38ca2548123631a6df1abc820171ec67b488120b
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .gitattributes
  17. .gitignore
  18. .gn
  19. .style.yapf
  20. AUTHORS
  21. BUILD.gn
  22. CODE_OF_CONDUCT.md
  23. CONTRIBUTING.md
  24. LICENSE
  25. OWNERS
  26. PATENTS
  27. README.md
  28. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.