mirror of
https://github.com/Proxmark/proxmark3.git
synced 2024-09-21 15:26:35 +08:00
e73e717239
Retire rbt2c.pl, instead use objcopy to directly convert the .bit file into an .o that can be linked with the flash image Rename armsrc/fpga.c to armsrc/fpgaloader.c (since there is now a new fpga.o, created from fpga.bit) Remove fpgaimg.c from subversion, add fpga.bit Instead of creating fpgaimage.elf and osimage.elf separately, now create a joined fullimage.elf first (obsoleting ldscript-full), then extract only the fpga and os sections with objcopy (This creates unspecific warnings about an empty segment, need to investigate) Implement a rudimentary .bit parser in the firmware, use that to locate the bitstream in the new fpgaimage (which is just a plain copy of the fpga.bit file) and send it to the FPGA The code will check the format that's in flash and fall back to the legacy format
92 lines
2.8 KiB
Makefile
92 lines
2.8 KiB
Makefile
# This new makefile replaces the previous Makefile/Makefile.linux
|
|
# with as much common code for both environments as possible.
|
|
# Following is a short OS detection to set up variables, all the
|
|
# remaining Makefile should be portable and only depend on these
|
|
# variables
|
|
#
|
|
|
|
# Make sure that all is the default target
|
|
# (The including Makefile still needs to define what 'all' is)
|
|
all:
|
|
|
|
# Windows' echo echos its input verbatim, on Posix there is some
|
|
# amount of shell command line parsing going on. echo "" on
|
|
# Windows yields literal "", on Linux yields an empty line
|
|
ifeq ($(shell echo ""),)
|
|
|
|
# This is properly a proper system, so we can use uname
|
|
UNAME := $(shell uname)
|
|
ifeq ($(UNAME), Linux)
|
|
# Linux. (Todo: Add MacOS X if appropriate)
|
|
DELETE=rm -rf
|
|
MOVE=mv
|
|
PATHSEP=/
|
|
DETECTED_OS=Linux
|
|
# You may/should set this in your environment
|
|
ARMLIB ?= /usr/local/lib/gcc/arm-elf/4.3.3/interwork
|
|
endif
|
|
|
|
else
|
|
|
|
# Assume that we are running on Windows.
|
|
DELETE=del /q
|
|
MOVE=ren
|
|
PATHSEP=\\#
|
|
ARMLIB ?= ../../devkitARM/lib/gcc/arm-elf/4.1.0/interwork
|
|
DETECTED_OS=Windows
|
|
|
|
endif
|
|
|
|
CC = arm-elf-gcc
|
|
AS = arm-elf-as
|
|
LD = arm-elf-ld
|
|
OBJCOPY = arm-elf-objcopy
|
|
|
|
OBJDIR = obj
|
|
|
|
INCLUDE = -I../include
|
|
|
|
# Also search prerequisites in the common directory (for usb.c), and the fpga directory (for fpga.bit)
|
|
VPATH = . ../common/ ../fpga/
|
|
|
|
INCLUDES = ../include/proxmark3.h ../include/at91sam7s128.h ../include/config_gpio.h ../include/usb_cmd.h $(APP_INCLUDES)
|
|
|
|
CFLAGS = -c $(INCLUDE) -Wall $(APP_CFLAGS)
|
|
|
|
THUMBOBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(THUMBSRC))
|
|
ARMOBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(ARMSRC))
|
|
ASMOBJ = $(patsubst %.s,$(OBJDIR)/%.o,$(ASMSRC))
|
|
|
|
$(THUMBOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES)
|
|
$(CC) $(CFLAGS) -mthumb -mthumb-interwork -o $@ $<
|
|
|
|
$(ARMOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES)
|
|
$(CC) $(CFLAGS) -mthumb-interwork -o $@ $<
|
|
|
|
$(ASMOBJ): $(OBJDIR)/%.o: %.s
|
|
$(CC) $(CFLAGS) -mthumb-interwork -o $@ $<
|
|
|
|
# This objcopy call translates physical flash addresses to logical addresses
|
|
# See ldscript.common. -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-27
|
|
$(OBJDIR)/%.s19: $(OBJDIR)/%.elf
|
|
$(OBJCOPY) -Osrec --srec-forceS3 --no-change-warnings \
|
|
--change-section-address bootphase1-0x100000 \
|
|
--change-section-address bootphase2-0x100000 \
|
|
--change-section-address fpgaimage-0x100000 \
|
|
--change-section-address .start-0x100000 \
|
|
--change-section-address .text-0x100000 \
|
|
--change-section-address .rodata-0x100000 $^ $@
|
|
|
|
# Automatic dependency generation
|
|
DEPENDENCY_FILES = $(patsubst %.c,$(OBJDIR)/%.d,$(notdir $(THUMBSRC))) \
|
|
$(patsubst %.c,$(OBJDIR)/%.d,$(notdir $(ARMSRC))) \
|
|
$(patsubst %.s,$(OBJDIR)/%.d,$(notdir $(ASMSRC)))
|
|
|
|
$(DEPENDENCY_FILES): Makefile ../common/Makefile.common
|
|
$(OBJDIR)/%.d: %.c
|
|
@$(CC) -MM -MT "$(@) $(@:.d=.o)" $(CFLAGS) $< > $@
|
|
$(OBJDIR)/%.d: %.s
|
|
@$(CC) -MM -MT "$(@) $(@:.d=.o)" $(CFLAGS) $< > $@
|
|
|
|
-include $(DEPENDENCY_FILES)
|