mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
Fix fpga_compress race condition and isolate it in tools
This commit is contained in:
parent
d19754567d
commit
80b4e81130
8 changed files with 87 additions and 15 deletions
10
Makefile
10
Makefile
|
@ -33,7 +33,7 @@ endif
|
||||||
-include .Makefile.options.cache
|
-include .Makefile.options.cache
|
||||||
include common_arm/Makefile.hal
|
include common_arm/Makefile.hal
|
||||||
|
|
||||||
all clean: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/%
|
all clean: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% fpga_compress/%
|
||||||
|
|
||||||
mfkey/%: FORCE
|
mfkey/%: FORCE
|
||||||
$(info [*] MAKE $@)
|
$(info [*] MAKE $@)
|
||||||
|
@ -41,10 +41,13 @@ mfkey/%: FORCE
|
||||||
nonce2key/%: FORCE
|
nonce2key/%: FORCE
|
||||||
$(info [*] MAKE $@)
|
$(info [*] MAKE $@)
|
||||||
$(Q)$(MAKE) --no-print-directory -C tools/nonce2key $(patsubst nonce2key/%,%,$@)
|
$(Q)$(MAKE) --no-print-directory -C tools/nonce2key $(patsubst nonce2key/%,%,$@)
|
||||||
|
fpga_compress/%: FORCE
|
||||||
|
$(info [*] MAKE $@)
|
||||||
|
$(Q)$(MAKE) --no-print-directory -C tools/fpga_compress $(patsubst fpga_compress/%,%,$@)
|
||||||
bootrom/%: FORCE cleanifplatformchanged
|
bootrom/%: FORCE cleanifplatformchanged
|
||||||
$(info [*] MAKE $@)
|
$(info [*] MAKE $@)
|
||||||
$(Q)$(MAKE) --no-print-directory -C bootrom $(patsubst bootrom/%,%,$@)
|
$(Q)$(MAKE) --no-print-directory -C bootrom $(patsubst bootrom/%,%,$@)
|
||||||
armsrc/%: FORCE cleanifplatformchanged
|
armsrc/%: FORCE cleanifplatformchanged fpga_compress/%
|
||||||
$(info [*] MAKE $@)
|
$(info [*] MAKE $@)
|
||||||
$(Q)$(MAKE) --no-print-directory -C armsrc $(patsubst armsrc/%,%,$@)
|
$(Q)$(MAKE) --no-print-directory -C armsrc $(patsubst armsrc/%,%,$@)
|
||||||
client/%: FORCE
|
client/%: FORCE
|
||||||
|
@ -74,6 +77,7 @@ help:
|
||||||
@echo "+ client - Make only the OS-specific host client"
|
@echo "+ client - Make only the OS-specific host client"
|
||||||
@echo "+ mfkey - Make tools/mfkey"
|
@echo "+ mfkey - Make tools/mfkey"
|
||||||
@echo "+ nonce2key - Make tools/nonce2key"
|
@echo "+ nonce2key - Make tools/nonce2key"
|
||||||
|
@echo "+ fpga_compress - Make tools/fpga_compress"
|
||||||
@echo
|
@echo
|
||||||
@echo "+ style - Apply some automated source code formatting rules"
|
@echo "+ style - Apply some automated source code formatting rules"
|
||||||
@echo "+ checks - Detect various encoding issues in source code"
|
@echo "+ checks - Detect various encoding issues in source code"
|
||||||
|
@ -93,6 +97,8 @@ mfkey: mfkey/all
|
||||||
|
|
||||||
nonce2key: nonce2key/all
|
nonce2key: nonce2key/all
|
||||||
|
|
||||||
|
fpga_compress: fpga_compress/all
|
||||||
|
|
||||||
flash-bootrom: bootrom/obj/bootrom.elf $(FLASH_TOOL)
|
flash-bootrom: bootrom/obj/bootrom.elf $(FLASH_TOOL)
|
||||||
$(FLASH_TOOL) $(FLASH_PORT) -b $(subst /,$(PATHSEP),$<)
|
$(FLASH_TOOL) $(FLASH_PORT) -b $(subst /,$(PATHSEP),$<)
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,7 @@ include ../common_arm/Makefile.common
|
||||||
COMMON_FLAGS = -Os
|
COMMON_FLAGS = -Os
|
||||||
|
|
||||||
OBJS = $(OBJDIR)/fullimage.s19
|
OBJS = $(OBJDIR)/fullimage.s19
|
||||||
FPGA_COMPRESSOR = ../client/fpga_compress
|
FPGA_COMPRESSOR = ../tools/fpga_compress/fpga_compress
|
||||||
|
|
||||||
all: $(OBJS)
|
all: $(OBJS)
|
||||||
|
|
||||||
|
@ -163,8 +163,8 @@ else
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(FPGA_COMPRESSOR):
|
$(FPGA_COMPRESSOR):
|
||||||
$(info [*] MAKE $@)
|
$(error [!] MISSING $@ => To build it, go the root of the repo and do "make $(notdir $@)")
|
||||||
$(Q)$(MAKE) --no-print-directory -C ../client $(notdir $(FPGA_COMPRESSOR))
|
$(error [!] MISSING $@)
|
||||||
|
|
||||||
$(OBJDIR)/fullimage.stage1.elf: $(VERSIONOBJ) $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ)
|
$(OBJDIR)/fullimage.stage1.elf: $(VERSIONOBJ) $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ)
|
||||||
$(info [=] LD $@)
|
$(info [=] LD $@)
|
||||||
|
|
|
@ -291,14 +291,14 @@ ifeq "$(SUPPORTS_AVX512)" "True"
|
||||||
MULTIARCHOBJS += $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_AVX512.o)
|
MULTIARCHOBJS += $(MULTIARCHSRCS:%.c=$(OBJDIR)/%_AVX512.o)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BINS = proxmark3 flasher fpga_compress
|
BINS = proxmark3 flasher
|
||||||
CLEAN = $(BINS) $(DEPENDENCY_FILES) $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(ZLIBOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(OBJDIR)/*.o *.moc.cpp ui/ui_overlays.h lualibs/pm3_cmd.lua lualibs/mf_default_keys.lua
|
CLEAN = $(BINS) $(DEPENDENCY_FILES) $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(ZLIBOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(OBJDIR)/*.o *.moc.cpp ui/ui_overlays.h lualibs/pm3_cmd.lua lualibs/mf_default_keys.lua
|
||||||
|
|
||||||
# need to assign dependancies to build these first...
|
# need to assign dependancies to build these first...
|
||||||
all: lua_build jansson_build mbedtls_build cbor_build $(BINS)
|
all: lua_build jansson_build mbedtls_build cbor_build $(BINS)
|
||||||
|
|
||||||
all-static: LDLIBS:=-static $(LDLIBS)
|
all-static: LDLIBS:=-static $(LDLIBS)
|
||||||
all-static: proxmark3 flasher fpga_compress
|
all-static: $(BINS)
|
||||||
|
|
||||||
proxmark3: LDLIBS+=$(LUALIB) $(JANSSONLIB) $(MBEDTLSLIB) $(CBORLIB) $(QTLDLIBS)
|
proxmark3: LDLIBS+=$(LUALIB) $(JANSSONLIB) $(MBEDTLSLIB) $(CBORLIB) $(QTLDLIBS)
|
||||||
proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(ZLIBOBJS) lualibs/pm3_cmd.lua lualibs/mf_default_keys.lua
|
proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(ZLIBOBJS) lualibs/pm3_cmd.lua lualibs/mf_default_keys.lua
|
||||||
|
@ -309,10 +309,6 @@ flasher: $(OBJDIR)/flash.o $(OBJDIR)/flasher.o $(COREOBJS) $(OBJCOBJS)
|
||||||
$(info [=] LD $@)
|
$(info [=] LD $@)
|
||||||
$(Q)$(LD) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
$(Q)$(LD) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
||||||
|
|
||||||
fpga_compress: $(OBJDIR)/fpga_compress.o $(ZLIBOBJS)
|
|
||||||
$(info [=] LD $@)
|
|
||||||
$(Q)$(LD) $(LDFLAGS) $(ZLIBFLAGS) $^ $(LDLIBS) -o $@
|
|
||||||
|
|
||||||
proxgui.cpp: ui/ui_overlays.h
|
proxgui.cpp: ui/ui_overlays.h
|
||||||
|
|
||||||
proxguiqt.moc.cpp: proxguiqt.h
|
proxguiqt.moc.cpp: proxguiqt.h
|
||||||
|
@ -427,7 +423,7 @@ DEPENDENCY_FILES = $(patsubst %.c, $(OBJDIR)/%.d, $(CORESRCS) $(CMDSRCS) $(ZLIBS
|
||||||
$(patsubst %.o, %.d, $(MULTIARCHOBJS)) \
|
$(patsubst %.o, %.d, $(MULTIARCHOBJS)) \
|
||||||
$(patsubst %.cpp, $(OBJDIR)/%.d, $(QTGUISRCS)) \
|
$(patsubst %.cpp, $(OBJDIR)/%.d, $(QTGUISRCS)) \
|
||||||
$(patsubst %.m, $(OBJDIR)/%.d, $(OBJCSRCS)) \
|
$(patsubst %.m, $(OBJDIR)/%.d, $(OBJCSRCS)) \
|
||||||
$(OBJDIR)/proxmark3.d $(OBJDIR)/flash.d $(OBJDIR)/flasher.d $(OBJDIR)/fpga_compress.d
|
$(OBJDIR)/proxmark3.d $(OBJDIR)/flash.d $(OBJDIR)/flasher.d
|
||||||
|
|
||||||
$(DEPENDENCY_FILES): ;
|
$(DEPENDENCY_FILES): ;
|
||||||
.PRECIOUS: $(DEPENDENCY_FILES)
|
.PRECIOUS: $(DEPENDENCY_FILES)
|
||||||
|
|
|
@ -35,7 +35,7 @@ MV=mv
|
||||||
|
|
||||||
OBJDIR = obj
|
OBJDIR = obj
|
||||||
|
|
||||||
INCLUDE = -I../include -I../common_arm -I../common -I.
|
INCLUDE = -I../include -I../common_arm -I../common_fpga -I../common -I.
|
||||||
|
|
||||||
TAR=tar
|
TAR=tar
|
||||||
TARFLAGS = -C .. -rvf
|
TARFLAGS = -C .. -rvf
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
#ifndef __FPGA_H
|
#ifndef __FPGA_H
|
||||||
#define __FPGA_H
|
#define __FPGA_H
|
||||||
|
|
||||||
#include "common.h"
|
#include <stdbool.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#define FPGA_BITSTREAM_FIXED_HEADER_SIZE sizeof(bitparse_fixed_header)
|
#define FPGA_BITSTREAM_FIXED_HEADER_SIZE sizeof(bitparse_fixed_header)
|
||||||
#define FPGA_INTERLEAVE_SIZE 288
|
#define FPGA_INTERLEAVE_SIZE 288
|
69
tools/fpga_compress/Makefile
Normal file
69
tools/fpga_compress/Makefile
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# Hide full compilation line:
|
||||||
|
ifneq ($(V),1)
|
||||||
|
Q?=@
|
||||||
|
endif
|
||||||
|
# To see full command lines, use make V=1
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
CXX = g++
|
||||||
|
LD = g++
|
||||||
|
RM = rm -f
|
||||||
|
MV = mv
|
||||||
|
|
||||||
|
VPATH = ../../common/zlib
|
||||||
|
OBJDIR = obj
|
||||||
|
|
||||||
|
# RPi Zero gcc requires -latomic
|
||||||
|
# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
|
||||||
|
# doesn't recognize option --as-needed
|
||||||
|
ifneq ($(platform),Darwin)
|
||||||
|
LDLIBS += -Wl,--as-needed -latomic -Wl,--no-as-needed
|
||||||
|
endif
|
||||||
|
|
||||||
|
LIBS = -I../../common/zlib
|
||||||
|
INCLUDES_CLIENT = -I../../common_fpga $(LIBS)
|
||||||
|
|
||||||
|
CFLAGS += -std=c99 -D_ISOC99_SOURCE -DPRESETS $(INCLUDES_CLIENT) -Wall -Werror -g -O3
|
||||||
|
|
||||||
|
# Flags to generate temporary dependency files
|
||||||
|
DEPFLAGS = -MT $@ -MMD -MP -MF $(OBJDIR)/$*.Td
|
||||||
|
# make temporary to final dependency files after successful compilation
|
||||||
|
POSTCOMPILE = $(MV) -f $(OBJDIR)/$*.Td $(OBJDIR)/$*.d
|
||||||
|
|
||||||
|
ZLIBSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c
|
||||||
|
ZLIBFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED
|
||||||
|
#-DDEBUG -Dverbose=1
|
||||||
|
|
||||||
|
ZLIBOBJS = $(ZLIBSRCS:%.c=$(OBJDIR)/%.o)
|
||||||
|
|
||||||
|
BINS = fpga_compress
|
||||||
|
CLEAN = $(BINS) $(DEPENDENCY_FILES) $(ZLIBOBJS) $(OBJDIR)/*.o
|
||||||
|
|
||||||
|
# need to assign dependancies to build these first...
|
||||||
|
all: $(BINS)
|
||||||
|
|
||||||
|
all-static: LDLIBS:=-static $(LDLIBS)
|
||||||
|
all-static: $(BINS)
|
||||||
|
|
||||||
|
fpga_compress: $(OBJDIR)/fpga_compress.o $(ZLIBOBJS)
|
||||||
|
$(info [=] LD $@)
|
||||||
|
$(Q)$(LD) $(LDFLAGS) $(ZLIBFLAGS) $^ $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(Q)$(RM) $(CLEAN)
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(OBJDIR)/%.o : %.c $(OBJDIR)/%.d
|
||||||
|
$(info [-] CC $<)
|
||||||
|
$(Q)$(CC) $(DEPFLAGS) $(CFLAGS) $(ZLIBFLAGS) -c -o $@ $<
|
||||||
|
$(Q)$(POSTCOMPILE)
|
||||||
|
|
||||||
|
DEPENDENCY_FILES = $(patsubst %.c, $(OBJDIR)/%.d, $(ZLIBSRCS)) $(OBJDIR)/fpga_compress.d
|
||||||
|
|
||||||
|
$(DEPENDENCY_FILES): ;
|
||||||
|
.PRECIOUS: $(DEPENDENCY_FILES)
|
||||||
|
|
||||||
|
-include $(DEPENDENCY_FILES)
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <inttypes.h>
|
|
||||||
#include "fpga.h"
|
#include "fpga.h"
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
||||||
|
@ -23,6 +22,7 @@
|
||||||
#define COMPRESS_LEVEL 9 // use best possible compression
|
#define COMPRESS_LEVEL 9 // use best possible compression
|
||||||
#define COMPRESS_WINDOW_BITS 15 // default = max = 15 for a window of 2^15 = 32KBytes
|
#define COMPRESS_WINDOW_BITS 15 // default = max = 15 for a window of 2^15 = 32KBytes
|
||||||
#define COMPRESS_MEM_LEVEL 9 // determines the amount of memory allocated during compression. Default = 8.
|
#define COMPRESS_MEM_LEVEL 9 // determines the amount of memory allocated during compression. Default = 8.
|
||||||
|
|
||||||
/* COMPRESS_STRATEGY can be
|
/* COMPRESS_STRATEGY can be
|
||||||
Z_DEFAULT_STRATEGY (the default),
|
Z_DEFAULT_STRATEGY (the default),
|
||||||
Z_FILTERED (more huffmann, less string matching),
|
Z_FILTERED (more huffmann, less string matching),
|
0
tools/fpga_compress/obj/.dummy
Normal file
0
tools/fpga_compress/obj/.dummy
Normal file
Loading…
Add table
Add a link
Reference in a new issue