fmaptool: Introduce the fmd ("flashmap descriptor") language and compiler

This adds a compiler for a language whose textual representation of flashmap
regions will be used to describe the layout of flash chips that contain more
than just a single CBFS. Direct integration with cbfstool (via a new
command-line switch for the create action) is forthcoming but will be added
separately.

BUG=chromium:461875
TEST=Use Chromium OS's cros_bundle_firmware script on the fmap.dts file for
panther. Using the latter file as a reference, write a corresponding
fmap.fmd file and feed it through fmaptool. Run both binary output files
though the flashmap project's own flashmap_decode utility. Observe only
the expected differences.
BRANCH=None

Change-Id: I06b32d138dbef0a4e5ed43c81bd31c796fd5d669
Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Commit-Id: 005ab67eb594e21489cf31036aedaea87e0c7142
Original-Change-Id: Ia08f28688efdbbfc70c255916b8eb7eb0eb07fb2
Original-Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/255031
Original-Reviewed-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-on: http://review.coreboot.org/9942
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Sol Boucher
2015-02-26 11:47:19 -08:00
committed by Patrick Georgi
parent 5f7e4f019e
commit 69b88bf127
25 changed files with 5259 additions and 164 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010, Google Inc.
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -96,24 +96,6 @@ extern long int fmap_find(const uint8_t *image, unsigned int len);
*/
extern int fmap_print(const struct fmap *map);
/*
* fmap_get_csum - get the checksum of static regions of an image
*
* @image: image to checksum
* @len: length of image
* @digest: double-pointer to store location of first byte of digest
*
* fmap_get_csum() will reset, write, and finalize the digest.
* The location of the final digest will start at the location pointed to
* by digest, which will be allocated and must be freed by the caller.
*
* returns digest length if successful
* returns <0 to indicate error
*/
extern int fmap_get_csum(const uint8_t *image,
unsigned int image_len, uint8_t **digest);
/*
* fmap_flags_to_string - convert raw flags field into user-friendly string
*
@@ -157,7 +139,7 @@ extern void fmap_destroy(struct fmap *fmap);
* returns size of fmap structure if successful
* returns <0 to indicate failure
*/
extern int fmap_size(struct fmap *fmap);
extern int fmap_size(const struct fmap *fmap);
/*
* fmap_append_area - realloc an existing flashmap and append an area
@@ -187,6 +169,6 @@ extern int fmap_append_area(struct fmap **fmap,
extern struct fmap_area *fmap_find_area(struct fmap *fmap, const char *name);
/* unit testing stuff */
extern int fmap_test();
extern int fmap_test(void);
#endif /* FLASHMAP_LIB_FMAP_H__*/