Difference between revisions of "Libpayload"
Jump to navigation
Jump to search
(Add link to the payload API page) |
(add link to documentation) |
||
Line 21: | Line 21: | ||
** VGA | ** VGA | ||
** Geode framebuffer | ** Geode framebuffer | ||
* Reads and parses the coreboot table. | * Reads and parses the coreboot table.http://qa.coreboot.org/docs/libpayload/ | ||
== Design == | == Design == | ||
Line 39: | Line 39: | ||
$ make menuconfig | $ make menuconfig | ||
$ make | $ make | ||
== Documentation == | |||
See the autogenerated documentation for libpayload [http://qa.coreboot.org/docs/libpayload/ here]. | |||
== Libc coverage == | == Libc coverage == |
Revision as of 19:46, 28 August 2008
libpayload is a small BSD-licensed static library (a lightweight implementation of common and useful functions) intended to be used as a basis for coreboot payloads.
The benefits of linking a coreboot payload against libpayload are:
- Payloads do not have to implement and maintain low-level code for I/O, common functions, etc.
- Payloads can be recompiled and deployed for CPU architectures supported by coreboot in the future.
- The libpayload functions can be tested and scrutinized outside payload development.
- Payloads themselves may be partly host-tested, e.g. against an emulation libpayload.
Just give us a main() and a pocket full of dreams and we'll do the rest.
Features
- Provides a subset of libc functions (e.g. malloc, printf, strcmp, etc).
- Provides an optional tiny (n)curses implementation.
- Provides various small drivers for
- keyboard
- PC speaker
- NVRAM/CMOS access
- serial console
- VGA
- Geode framebuffer
- Reads and parses the coreboot table.http://qa.coreboot.org/docs/libpayload/
Design
Payloads using libpayload
- coreinfo is a small payload which can display system information such as PCI info, an NVRAM dump, or the coreboot v3 printk buffer.
- GRUB invaders has been ported successfully to libpayload (patch pending).
- tint (a console tetris clone) has been successfully ported to libpayload.
- lxdialog from the Linux kconfig utility has been ported to be usable when linked with libpayload (patch pending).
Downloading and building libpayload
$ svn co svn://coreboot.org/repos/trunk/payloads/libpayload $ cd libpayload $ make menuconfig $ make
Documentation
See the autogenerated documentation for libpayload here.
Libc coverage
|
|
Usage example
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"); halt(); return 0; }
Building the payload:
lpgcc -o hello.elf hello.c
![]() |
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |