2008-08-18 20:55:33 +02:00
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
libpayload README
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
libpayload is a minimal library to support standalone payloads
|
|
|
|
that can be booted with firmware like coreboot. It handles the setup
|
|
|
|
code, and provides common C library symbols such as malloc() and printf().
|
|
|
|
|
|
|
|
Note: This is _not_ a standard library for use with an operating system,
|
|
|
|
rather it's only useful for coreboot payload development!
|
2017-06-05 12:46:00 +02:00
|
|
|
See https://www.coreboot.org for details on coreboot.
|
2008-08-18 20:55:33 +02:00
|
|
|
|
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2018-04-06 11:07:27 +02:00
|
|
|
$ git clone https://review.coreboot.org/coreboot.git
|
2008-08-18 20:55:33 +02:00
|
|
|
|
2013-04-04 14:12:26 +02:00
|
|
|
$ cd coreboot/payloads/libpayload
|
2008-08-18 20:55:33 +02:00
|
|
|
|
|
|
|
$ make menuconfig
|
|
|
|
|
|
|
|
$ make
|
|
|
|
|
2019-06-07 09:22:03 +02:00
|
|
|
$ make install (optional, will install into ./install per default)
|
2008-08-18 20:55:33 +02:00
|
|
|
|
2019-06-07 09:22:03 +02:00
|
|
|
On x86 systems, libpayload will always be 32-bit even if your host OS runs
|
|
|
|
in 64-bit, so you might have to install the 32-bit libgcc version.
|
2008-08-18 20:55:33 +02:00
|
|
|
On Debian systems you'd do 'apt-get install gcc-multilib' for example.
|
|
|
|
|
2019-06-07 09:22:03 +02:00
|
|
|
Run 'make distclean' before switching boards. This command will remove
|
|
|
|
your current .config file, so you need 'make menuconfig' again or
|
|
|
|
'make defconfig' in order to set up configuration. Default configuration
|
|
|
|
is based on 'configs/defconfig'. See the configs/ directory for examples
|
|
|
|
of configuration.
|
|
|
|
|
2008-08-18 20:55:33 +02:00
|
|
|
|
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
|
|
|
|
Here's an example of a very simple payload (hello.c) and how to build it:
|
|
|
|
|
|
|
|
#include <libpayload.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
printf("Hello, world!\n");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
Building the payload using the 'lpgcc' compiler wrapper:
|
|
|
|
|
|
|
|
$ lpgcc -o hello.elf hello.c
|
|
|
|
|
|
|
|
Please see the sample/ directory for details.
|
|
|
|
|
|
|
|
|
|
|
|
Website and Mailing List
|
|
|
|
------------------------
|
|
|
|
|
2017-06-05 12:33:23 +02:00
|
|
|
The main website is https://www.coreboot.org/Libpayload.
|
2008-08-18 20:55:33 +02:00
|
|
|
|
|
|
|
For additional information, patches, and discussions, please join the
|
2017-06-05 12:46:00 +02:00
|
|
|
coreboot mailing list at https://www.coreboot.org/Mailinglist, where most
|
2008-08-18 20:55:33 +02:00
|
|
|
libpayload developers are subscribed.
|
|
|
|
|
|
|
|
|
|
|
|
Copyright and License
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
See LICENSES.
|