Hi,
I am trying to build coreboot for the Intel Apollo Lake-I reference board
(Oxbow Hill, similar to Leaf Hill).
Intel has provided an implementation for this reference board based on an
outdated coreboot version.
Along with the coreboot implementation, they provided a compatible
pre-compiled UEFI payload (with no source, but run-time boot menu looks
like Tianocore's) and a compatible pre-compiled U-Boot payload (with links
to U-Boot source on Github along with patch so as to reproduce the
pre-compiled binary). The pre-compiled binaries have associated .config
files for coreboot integration. When building coreboot with either of the
precompiled binaries, and stitching the coreboot output binaries together
with Intel-provided blobs (using Intel provided FIT application) to produce
the final firmware image, the firmware works as expected.
Then I built this version of coreboot with a self-compiled payload, such as
Tianocore UDK2017 CorebootPayloadPkg or SeaBIOS, using the .confg files
provided by Intel for UEFI payloads or legacy payloads respectively (just
modified for specific payload type and path, and disabling verified and
measured boot). I stitched the coreboot output with the Intel-provided
blobs using the exact same method as before. Then, in run-time, coreboot
transitions to the payload and nothing happens from then on (i.e. no
further serial debug messages, no change to display monitor).
I also built U-Boot from github, applying Intel's patch to match Intel's
precompiled binary, and this self-compiled binary works in run-time (well,
sort of, there are a couple of problems but point is the payload runs). A
notable build difference is that this build uses the .config file provided
by Intel as is, and that the payload that was built is the binary
equivalent of the Intel pre-compiled binary.
Am I not specifying the correct configuration options for Tianocore and
SeaBIOS? I.e. is there more to it than just selecting the payload type and
specifying the payload path? Do I need to configure or update memory
addresses or ranges to match payload sizes, or some such? Do I need to make
specific changes to the payloads' source code to support the platform? Any
advice on how/where to start debugging?
(Serial debug logs and .config files attached.)
Best regards,
Tahnia