aboutsummaryrefslogtreecommitdiff
path: root/util/blobtool/Makefile
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2016-11-16 21:06:54 +1100
committerMartin Roth <martinroth@google.com>2017-02-04 23:18:35 +0100
commit0685322f4a718f8302827d1ee073c0f891a2f713 (patch)
treec1a22ec018f808a8877a08b12d3ca39e98007334 /util/blobtool/Makefile
parentaaa4ae766d6bd731247c2b8bd009d1018136494f (diff)
util/blobtool: Add new tool for compiling/decompiling data blobs
Given a specification of bitfields defined e.g. as follows: specfile: { "field1" : 8, "field2" : 4, "field3" : 4 } and a set of values for setting defaults: setterfile: { "field1" = 0xff, "field2" = 0xf, "field3" = 0xf } You can generate a binary packed blob as follows: ./blobtool specfile setterfile binaryoutput binaryoutput: ff ff The reverse is also possible, i.e. you can regenerate the setter: ./blobtool -d specfile binaryoutput setterorig setterorig: # AUTOGENERATED SETTER BY BLOBTOOL { "field1" = 0xff, "field2" = 0xf, "field3" = 0xf } This tool comes with spec/set files for X200 flash descriptor and ICH9M GbE region, and can be extended or used to decompile other data blobs with known specs. Change-Id: I744d6b421003feb4fc460133603af7e6bd80b1d6 Signed-off-by: Damien Zammit <damien@zamaudio.com> Reviewed-on: https://review.coreboot.org/17445 Tested-by: build bot (Jenkins) Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'util/blobtool/Makefile')
-rw-r--r--util/blobtool/Makefile29
1 files changed, 29 insertions, 0 deletions
diff --git a/util/blobtool/Makefile b/util/blobtool/Makefile
new file mode 100644
index 0000000000..ee706db536
--- /dev/null
+++ b/util/blobtool/Makefile
@@ -0,0 +1,29 @@
+CC = gcc
+YACC = bison
+LEX = flex
+TARGET=blobtool
+
+$(TARGET): $(TARGET).lex.o $(TARGET).tab.o
+ $(CC) $^ -Wall -Wno-unused-function -g -lfl -o $@
+
+$(TARGET).lex.c: $(TARGET).l $(TARGET).tab.h
+ $(LEX) -o $(patsubst $(TARGET).l,$(TARGET).lex.c,$<) $<
+
+$(TARGET).tab.c $(TARGET).tab.h: $(TARGET).y
+ $(YACC) -d $<
+
+# Use this target to generate GbE for X200
+gen-gbe-ich9m:
+ ./blobtool gbe-ich9m.spec gbe-ich9m.set gbe1.bin
+ # duplicate binary as per spec
+ cat gbe1.bin gbe1.bin > flashregion_3_gbe.bin
+ rm -f gbe1.bin
+
+# Use this target to generate IFD for X200
+gen-ifd-x200:
+ ./blobtool ifd-x200.spec ifd-x200.set flashregion_0_fd.bin
+
+.PHONY: clean gen-gbe-ich9m gen-ifd-x200
+
+clean:
+ rm -f *.lex.c *.tab.c *.tab.h *.o blobtool flashregion_0_fd.bin flashregion_3_gbe.bin