--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse-cdt version="2.0"?>
+
+<cdtproject id="org.eclipse.cdt.make.core.make">
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<data>
+<item id="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+</item>
+<item id="org.eclipse.cdt.core.pathentry">
+<pathentry kind="src" path=""/>
+<pathentry kind="out" path=""/>
+<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
+</item>
+<item id="org.eclipse.cdt.make.core.buildtargets">
+<buildTargets>
+<target name="all" path="linux" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+</target>
+<target name="all" path="armsrc" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+</target>
+<target name="Linux" path="armsrc" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+</target>
+<target name="Linux clean" path="armsrc" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>clean</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+</target>
+</buildTargets>
+</item>
+</data>
+</cdtproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject>
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="converted.config.1059849428">
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="false"/>
+</scannerInfoProvider>
+</profile>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.pathentry">
+<pathentry kind="src" path=""/>
+<pathentry kind="out" path=""/>
+<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
+</storageModule>
+<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="converted.config.1059849428" moduleId="org.eclipse.cdt.core.settings" name="convertedConfig">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
+<buildTargets>
+<target name="all" path="bootrom" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="Linux clean" path="bootrom" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>clean</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="all" path="linux" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="Clean" path="linux" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>clean</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="Linux" path="armsrc" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>all</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="Linux clean" path="armsrc" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments>-f Makefile.linux</buildArguments>
+<buildTarget>clean</buildTarget>
+<stopOnError>false</stopOnError>
+<useDefaultCommand>false</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+</buildTargets>
+</storageModule>
+</cconfiguration>
+</storageModule>
+</cproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Proxmark3-SVN</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.make.core.makeBuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enabledIncrementalBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.command</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.target.inc</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.arguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.environment</key>
+ <value>PATH=/usr/local/new/gnuarm-4.3.0/bin:/home/lafargue/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games|</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.target.auto</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.target.clean</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.build.location</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.core.errorOutputParser</key>
+ <value>org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.VCErrorParser;</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.make.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.make.core.makeNature</nature>
+ <nature>org.eclipse.cdt.make.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+#Tue Apr 21 17:19:37 CEST 2009
+eclipse.preferences.version=1
+indexerId=org.eclipse.cdt.core.fastIndexer
INCLUDES = ../include/proxmark3.h ../include/at91sam7s128.h ../include/config_gpio.h ../include/usb_cmd.h apps.h\r
LIB = "..\..\devkitARM\lib\gcc\arm-elf\4.1.0\interwork"\r
\r
+# Add the "-DWITH_LCD" flag in CLFAGS to add support for LCD\r
+# and add OBJLCD to OBJ too\r
CFLAGS = -O6 -c $(INCLUDE) -Wall\r
\r
+OBJLCD = $(OBJDIR)/fonts.o \\r
+ $(OBJDIR)/LCD.o\r
+\r
OBJ = $(OBJDIR)/start.o \\r
$(OBJDIR)/appmain.o \\r
$(OBJDIR)/fpga.o \\r
$(OBJDIR)/iso14443.o \\r
$(OBJDIR)/iso14443a.o \\r
$(OBJDIR)/iso15693.o \\r
- $(OBJDIR)/util.o \\r
- $(OBJDIR)/fonts.o \\r
- $(OBJDIR)/LCD.o\r
+ $(OBJDIR)/util.o\r
\r
OBJFPGA = \\r
$(OBJDIR)/fpgaimg.o\r
# This makefile needs to be edited to reflect the location
-# of your own arm-elf-gcc installation (LIB variable)
+# of your own arm-elf-gcc toolchain (LIB variable)
CC = arm-elf-gcc
AS = arm-elf-as
LD = arm-elf-ld
OBJCOPY = arm-elf-objcopy
-INCLUDE = -I../include
-
-INCLUDES = ../include/proxmark3.h ../include/at91sam7s128.h ../include/config_gpio.h ../include/usb_cmd.h apps.h
+# Indicate where your gnuarm toolchain libgcc.a library is located:
LIB = /usr/local/new/gnuarm-4.3.0/lib/gcc/arm-elf/4.3.0/interwork
+# Add -DWITH_LCD to EXTRA_CFLAGS if you want support for LCD
+# in your firmware (add OBJLCD to OBJ too!)
+#EXTRA_CFLAGS = -DWITH_LCD
+EXTRA_CFLAGS =
+
+### You should not need to edit below this line
+
+INCLUDE = -I../include
+INCLUDES = ../include/proxmark3.h ../include/at91sam7s128.h ../include/config_gpio.h ../include/usb_cmd.h apps.h
CFLAGS_COMMON = -O6 -c $(INCLUDE) -Wall -mthumb-interwork
-CFLAGS = $(CFLAGS_COMMON) -mthumb
+CFLAGS = $(CFLAGS_COMMON) $(EXTRA_CFLAGS) -mthumb
OBJDIR = obj
-OBJ = start.o \
- appmain.o \
- fpga.o \
- iso15693.o \
- iso14443.o \
- util.o\
- LCD.o\
- fonts.o
-OBJFAST = iso14443a.o
+OBJLCD = $(OBJDIR)/LCD.o\
+ $(OBJDIR)/fonts.o
+
+OBJ = $(OBJDIR)/start.o \
+ $(OBJDIR)/appmain.o \
+ $(OBJDIR)/fpga.o \
+ $(OBJDIR)/iso15693.o \
+ $(OBJDIR)/iso14443.o \
+ $(OBJDIR)/util.o
-OBJFPGA = fpgaimg.o
-OBJCOMMON = usb.o
+OBJFAST = $(OBJDIR)/iso14443a.o
+OBJFPGA = $(OBJDIR)/fpgaimg.o
+
+OBJCOMMON = $(OBJDIR)/usb.o
all: osimage.s19 fpgaimage.s19 fullimage.s19
fpgaimage.s19: $(OBJFPGA)
@echo fpgaimage.s19
- $(LD) -g -Tldscript-fpga -o fpgaimage.elf $(patsubst %.o, obj/%.o, $^)
- $(OBJCOPY) -Osrec --srec-forceS3 fpgaimage.elf fpgaimage.s19
+ $(LD) -g -Tldscript-fpga -o $(OBJDIR)/fpgaimage.elf $^
+ $(OBJCOPY) -Osrec --srec-forceS3 $(OBJDIR)/fpgaimage.elf fpgaimage.s19
osimage.s19: $(OBJ) $(OBJFAST) $(OBJCOMMON)
@echo osimage.s19
- $(LD) -g -Tldscript -o osimage.elf $(patsubst %.o, obj/%.o, $^) $(LIB)/libgcc.a
- $(OBJCOPY) -Osrec --srec-forceS3 osimage.elf osimage.s19
+ $(LD) -g -Tldscript -o $(OBJDIR)/osimage.elf $^ $(LIB)/libgcc.a
+ $(OBJCOPY) -Osrec --srec-forceS3 $(OBJDIR)/osimage.elf osimage.s19
fullimage.s19: $(OBJ) $(OBJFAST) $(OBJCOMMON) $(OBJFAST) $(OBJFPGA)
@echo fullimage.s19
- $(LD) -g -Tldscript-full -o fullimage.elf $(patsubst %.o, obj/%.o, $^) $(LIB)/libgcc.a
- $(OBJCOPY) -Osrec --srec-forceS3 fullimage.elf fullimage.s19
-
-$(OBJ): %.o : %.c
- $(CC) $(CFLAGS) $< -o $(OBJDIR)/$@
+ $(LD) -g -Tldscript-full -o $(OBJDIR)/fullimage.elf $^ $(LIB)/libgcc.a
+ $(OBJCOPY) -Osrec --srec-forceS3 $(OBJDIR)/fullimage.elf fullimage.s19
-$(OBJFPGA): %.o : %.c
- $(CC) $(CFLAGS) $< -o $(OBJDIR)/$@
+# Directives to put the *.o in the OBJDIR directory:
+$(OBJ): $(OBJDIR)/%.o : %.c
+ $(CC) $(CFLAGS) $< -o $@
+$(OBJFPGA): $(OBJDIR)/%.o : %.c
+ $(CC) $(CFLAGS) $< -o $@
-$(OBJFAST): %.o : %.c
- $(CC) $(CFLAGS_COMMON) $< -o $(OBJDIR)/$@
+$(OBJFAST): $(OBJDIR)/%.o : %.c
+ $(CC) $(CFLAGS_COMMON) $< -o $@
-$(OBJCOMMON): ../common/usb.c
- $(CC) $(CFLAGS) ../common/usb.c -o $(OBJDIR)/usb.o
+$(OBJCOMMON): $(OBJDIR)/%.o : ../common/%.c
+ $(CC) $(CFLAGS) $< -o $@
+# Those do not work on the current firmware !
flash-fpga: fpgaimage.s19
../linux/flasher fpga fpgaimage.s19
../../OpenOCD/openocd -c "halt; flash write_image osimage.s19 0x00100000; halt; reset; resume; poll; exit"
clean:
- rm -f $(OBJDIR)/*.o *.elf *.s19
+ rm -f $(OBJDIR)/*.o $(OBJDIR)/*.elf *.s19
.PHONY: all clean
// Jonathan Westhues, Mar 2006\r
// Edits by Gerhard de Koning Gans, Sep 2007 (##)\r
//-----------------------------------------------------------------------------\r
+\r
+\r
#include <proxmark3.h>\r
#include "apps.h"\r
#include "fonts.h"\r
+#ifdef WITH_LCD\r
#include "LCD.h"\r
+#endif\r
\r
// The large multi-purpose buffer, typically used to hold A/D samples,\r
// maybe pre-processed in some way.\r
SimulateTagLowFrequency(c->ext1);\r
LED_A_OFF();\r
break;\r
-\r
+#ifdef WITH_LCD\r
case CMD_LCD_RESET:\r
LCDReset();\r
break;\r
-\r
+#endif\r
case CMD_SWEEP_LF:\r
SweepLFrange();\r
break;\r
case CMD_SET_LF_DIVISOR:\r
FpgaSendCommand(FPGA_CMD_SET_DIVISOR, c->ext1);\r
break;\r
-\r
+#ifdef WITH_LCD\r
case CMD_LCD:\r
LCDSend(c->ext1);\r
break;\r
-\r
+#endif\r
case CMD_SETUP_WRITE:\r
case CMD_FINISH_WRITE:\r
USB_D_PLUS_PULLUP_OFF();\r
// Load the FPGA image, which we have stored in our flash.\r
FpgaDownloadAndGo();\r
\r
+#ifdef WITH_LCD\r
+\r
LCDInit();\r
\r
// test text on different colored backgrounds\r
LCDFill(0, 1+8*14, 132, 8, CYAN);\r
LCDFill(0, 1+8*15, 132, 8, MAGENTA);\r
\r
+#endif\r
+\r
for(;;) {\r
UsbPoll(FALSE);\r
WDT_HIT();\r
--- /dev/null
+CC = arm-elf-gcc
+AS = arm-elf-as
+LD = arm-elf-ld
+OBJCOPY = arm-elf-objcopy
+
+OBJDIR = obj
+
+INCLUDE = -I../include
+
+INCLUDES = ../include/proxmark3.h ../include/at91sam7s128.h ../include/config_gpio.h ../include/usb_cmd.h
+
+CFLAGS = -g -c $(INCLUDE) -Wall
+
+OBJJTAG = $(OBJDIR)/bootrom.o $(OBJDIR)/ram-reset.o $(OBJDIR)/usb.o
+
+OBJFLASH = $(OBJDIR)/flash-reset.o $(OBJDIR)/fromflash.o
+
+all: bootrom.s19 bootrom-forjtag-swapped.s19
+
+bootrom-merged.s19: bootrom.s19 bootrom-forjtag.s19
+ perl ../tools/merge-srec.pl bootrom.s19 bootrom-forjtag.s19 > bootrom-merged.s19
+
+bootrom-forjtag-swapped.s19: bootrom-merged.s19
+ perl ../tools/srecswap.pl bootrom-forjtag.s19 > bootrom-forjtag-swapped.s19
+
+bootrom.s19: $(OBJFLASH)
+ @echo bootrom.s19
+ $(LD) -g -Tldscript-flash --oformat elf32-littlearm -o $(OBJDIR)/bootrom.elf $(OBJFLASH)
+ $(OBJCOPY) -Osrec --srec-forceS3 $(OBJDIR)/bootrom.elf bootrom.s19
+
+bootrom-forjtag.s19: $(OBJJTAG)
+ @echo bootrom-forjtag.s19
+ $(LD) -g -Tldscript-ram-jtag --oformat elf32-littlearm -o $(OBJDIR)/bootrom-forjtag.elf $(OBJJTAG)
+ $(OBJCOPY) -Osrec --srec-forceS3 $(OBJDIR)/bootrom-forjtag.elf bootrom-forjtag.s19
+
+$(OBJDIR)/bootrom.o: bootrom.c $(INCLUDES)
+ @echo $@
+ $(CC) $(CFLAGS) -mthumb -mthumb-interwork $< -o $@
+
+$(OBJDIR)/fromflash.o: fromflash.c $(INCLUDES)
+ @echo $@
+ $(CC) $(CFLAGS) -mthumb -mthumb-interwork $< -o $@
+
+$(OBJDIR)/usb.o: ../common/usb.c $(INCLUDES)
+ @echo $@
+ $(CC) $(CFLAGS) -mthumb -mthumb-interwork $< -o $@
+
+$(OBJDIR)/ram-reset.o: ram-reset.s
+ @echo $@
+ $(CC) $(CFLAGS) -mthumb-interwork -o $@ $<
+
+$(OBJDIR)/flash-reset.o: flash-reset.s
+ @echo $@
+ $(CC) $(CFLAGS) -mthumb-interwork -o $@ $<
+
+# Those do not work in this Firmware distribution!
+flash: bootrom-merged.s19
+ ../linux/flasher bootrom bootrom-merged.s19
+
+jtag-flash: bootrom-merged.s19
+ ../../OpenOCD/openocd -c "halt; flash write_image bootrom-merged.s19 0x00100000; halt; reset; resume; poll; exit"
+
+clean:
+ rm -f $(OBJDIR)/*.o $(OBJDIR)/*.elf *.s19
+
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693 0x0300\r
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443 0x0301\r
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM 0x0302
-#define CMD_READ_SRI512_TAG 0x0303\r
+#define CMD_READ_SRI512_TAG 0x0303\r
#define CMD_READER_ISO_15693 0x0310 // ## New command to act like a 15693 reader - greg\r
#define CMD_SIMTAG_ISO_15693 0x0311 // ## New command to act like a 15693 reader - greg\r
\r
--- /dev/null
+#define our ports\r
+telnet_port 4444\r
+gdb_port 3333\r
+\r
+#commands specific to the Olimex ARM-USB-OCD Dongle\r
+interface ft2232\r
+ft2232_device_desc "Olimex OpenOCD JTAG"\r
+ft2232_layout "olimex-jtag"\r
+ft2232_vid_pid 0x15BA 0x0003\r
+jtag_speed 2\r
+jtag_nsrst_delay 200\r
+jtag_ntrst_delay 200\r
+\r
+#reset_config <signals> [combination] [trst_type] [srst_type]\r
+reset_config srst_only srst_pulls_trst\r
+\r
+#jtag_device <IR length> <IR capture> <IR mask> <IDCODE instruction>\r
+jtag_device 4 0x1 0xf 0xe\r
+\r
+#daemon_startup <'attach'|'reset'>\r
+daemon_startup reset\r
+\r
+#target <type> <endianess> <reset_mode> <jtag#> [variant]\r
+target arm7tdmi little run_and_init 0 arm7tdmi_r4\r
+\r
+#run_and_halt_time <target#> <time_in_ms>\r
+run_and_halt_time 0 30\r
+\r
+# commands below are specific to AT91sam7 Flash Programming\r
+# ---------------------------------------------------------\r
+\r
+#target_script specifies the flash programming script file\r
+target_script 0 reset script.ocd\r
+\r
+#working_area <target#> <address> <size> <'backup'|'nobackup'>\r
+working_area 0 0x40000000 0x4000 nobackup\r
+\r
+#flash bank at91sam7 0 0 0 0 <target#>\r
+flash bank at91sam7 0 0 0 0 0\r
--- /dev/null
+#define our ports
+telnet_port 4444
+gdb_port 3333
+
+#commands specific to the Olimex arm-usb-ocd
+interface ft2232
+# Be careful to reflect the exact description here:
+ft2232_device_desc "Olimex OpenOCD JTAG"
+ft2232_layout "olimex-jtag"
+ft2232_vid_pid 0x15BA 0x0003
+jtag_speed 2
+jtag_nsrst_delay 200
+jtag_ntrst_delay 200
+
+#reset_config <signals> [combination] [trst_type] [srst_type]
+reset_config srst_only srst_pulls_trst
+
+#jtag_device <IR length> <IR capture> <IR mask> <IDCODE instruction>
+jtag_device 4 0x1 0xf 0xe
+
+#daemon_startup <'attach'|'reset'>
+daemon_startup reset
+
+#target <type> <endianess> <reset_mode> <jtag#> [variant]
+target arm7tdmi little run_and_init 0 arm7tdmi_r4
+
+#run_and_halt_time <target#> <time_in_ms>
+run_and_halt_time 0 30
+
--- /dev/null
+#!/bin/bash
+
+# Some things for you to configure
+
+# Where you want to install the tools
+DESTDIR=/usr/local/gnuarm-4.3.0
+
+# Where do you want to build the tools. This is where the log files
+# will be written (which you can monitor with 'tail' during compilation).
+# You can delete this directory after everything is done.
+SRCDIR="/home/lafargue/Documents/Hobbies/RFID/Toolchain/linux"
+
+# Where to get each of the toolchain components
+BINUTILS=ftp://ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2
+GCCCORE=ftp://ftp.gnu.org/gnu/gcc/gcc-4.3.0/gcc-core-4.3.0.tar.bz2
+GPP=ftp://ftp.gnu.org/gnu/gcc/gcc-4.3.0/gcc-g++-4.3.0.tar.bz2
+NEWLIB=ftp://sources.redhat.com/pub/newlib/newlib-1.16.0.tar.gz
+#INSIGHT=ftp://sourceware.org/pub/insight/releases/insight-6.8.tar.bz2
+INSIGHT=http://mirrors.kernel.org/sources.redhat.com/insight/releases/insight-6.8.tar.bz2
+#INSIGHT=http://www.mirrorservice.org/sites/sources.redhat.com/pub/insight/releases/insight-6.8.tar.bz2
+
+# Common configuration options (i.e., things to pass to 'configure')
+COMMON_CFG="--enable-interwork --target=arm-elf --program-prefix=arm-elf- --prefix=${DESTDIR} --disable-werror --enable-languages=c,c++ --enable-multilib --disable-shared"
+
+# Extra configuration options for each toolchain component
+BINUTILS_CFG=
+GCCCORE_CFG="--disable-libssp --disable-threads --with-newlib" # Not sure about these last 2 options...there to try to make C++ support work
+NEWLIB_CFG=
+INSIGHT_CFG=
+
+# Compiler flags for compiling Newlib (-O2 is already hard-coded)
+NEWLIB_FLAGS="-march=armv4t -mcpu=arm7tdmi -g"
+
+############################################################################
+# End of configuration section. You shouldn't have to modify anything below.
+############################################################################
+
+if [[ `whoami` != "root" ]]; then
+ echo You must be root to run this script
+ exit 1
+fi
+
+mkdir -p ${SRCDIR}
+cd ${SRCDIR}
+
+if [[ -f `basename ${BINUTILS}` ]]; then
+ echo Looks like BINUTILS has already been downloaded.
+else
+ echo Now downloading BINUTILS...
+ # -nv: non-verbose but not too quiet (still print errors/warnings)
+ # -nc: no-clobber, do not download a file that already exists
+ # -t 0: retry indefinitely
+ # -a wget.log: append errors/warnings to wget.log file
+ wget -nv -nc -t 0 -a wget.log ${BINUTILS}
+fi
+
+if [[ -f `basename ${GCCCORE}` ]]; then
+ echo Looks like GCC has already been downloaded.
+else
+ echo Now downloading GCC...
+ wget -nv -nc -t 0 -a wget.log ${GCCCORE}
+fi
+
+if [[ -f `basename ${GPP}` ]]; then
+ echo Looks like G++ has already been downloaded.
+else
+ echo Now downloading G++...
+ wget -nv -nc -t 0 -a wget.log ${GPP}
+fi
+
+if [[ -f `basename ${NEWLIB}` ]]; then
+ echo Looks like NEWLIB has already been downloaded.
+else
+ echo Now downloading NEWLIB...
+ wget -nv -nc -t 0 -a wget.log ${NEWLIB}
+fi
+
+if [[ -f `basename ${INSIGHT}` ]]; then
+ echo Looks like INSIGHT has already been downloaded.
+else
+ echo Now downloading INSIGHT...
+ wget -nv -nc -t 0 -a wget.log ${INSIGHT}
+fi
+
+if [[ -f binutils.built ]]; then
+ echo Looks like BINUTILS was already built.
+else
+ echo Building BINUTILS...
+ tar -xjf `basename ${BINUTILS}`
+ echo ___________________ > make.log
+ echo Building binutils... >> make.log
+ cd `find . -maxdepth 1 -type d -name 'binutils*'`
+ mkdir gnuarm
+ cd gnuarm
+ ../configure ${COMMON_CFG} ${BINUTILS_CFG} >> ../../make.log 2>&1
+ make MAKEINFO=`which makeinfo` >> ../../make.log 2>&1
+ make install >> ../../make.log 2>&1
+ cd ../..
+ touch binutils.built
+fi
+
+ echo ___________________ >> make.log
+ echo Adding ${DESTDIR}/bin to PATH >> make.log
+export PATH; PATH=${DESTDIR}/bin:$PATH
+ echo ___________________ >> make.log
+
+if [[ -f gcc.built ]]; then
+ echo Looks like GCC was already built.
+else
+ echo Building GCC...
+ tar -xjf `basename ${GCCCORE}`
+ tar -xjf `basename ${GPP}`
+ echo ___________________ >> make.log
+
+cat << EOF > gcc.patch
+--- gcc-4.2.2.orig/gcc/config/arm/t-arm-elf 2006-11-06 13:13:53.000000000 +0100
++++ gcc-4.2.2.mod/gcc/config/arm/t-arm-elf 2007-10-05 12:13:00.000000000 +0200
+@@ -23,8 +23,8 @@
+ # MULTILIB_DIRNAMES += fpu soft
+ # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
+ #
+-# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
+-# MULTILIB_DIRNAMES += normal interwork
++MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
++MULTILIB_DIRNAMES += normal interwork
+ #
+ # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore
+ # MULTILIB_DIRNAMES += elf under
+EOF
+
+ echo Patching GCC >> make.log
+ cd `find . -maxdepth 1 -type d -name 'gcc*'`
+ patch -p1 < ../gcc.patch
+ echo Building gcc... >> make.log
+ mkdir gnuarm
+ cd gnuarm
+ ../configure ${COMMON_CFG} ${GCCCORE_CFG} >> ../../make.log 2>&1
+ make >> ../../make.log 2>&1
+ make install >> ../../make.log 2>&1
+ cd ../..
+ touch gcc.built
+fi
+
+if [[ -f newlib.built ]]; then
+ echo Looks like NEWLIB was already built.
+else
+ echo Building NEWLIB...
+ tar -xzf `basename ${NEWLIB}`
+ echo ___________________ >> make.log
+ echo Building newlib... >> make.log
+ cd `find . -maxdepth 1 -type d -name 'newlib*'`
+ mkdir gnuarm
+ cd gnuarm
+ ../configure ${COMMON_CFG} ${NEWLIB_CFG} >> ../../make.log 2>&1
+
+ # This line adds our NEWLIB_CFLAGS to the configure.host file in the
+ # newlib subdirectory. This is the only way I could find to tell Newlib to
+ # compile itself with the -mmarch=armv4t and -mcpu=arm7tdmi flags.
+ sed -i "/^newlib_cflags=/s/=.*\$/=\"${NEWLIB_FLAGS}\"/" ../newlib/configure.host
+ make >> ../../make.log 2>&1
+ make install >> ../../make.log 2>&1
+ cd ../..
+ touch newlib.built
+fi
+
+ echo ___________________ >> make.log
+ echo "Now that newlib is built, second pass for GCC..." >> make.log
+ cd `find . -maxdepth 1 -type d -name 'gcc*'`
+ cd gnuarm
+ make >> ../../make.log 2>&1
+ make install >> ../../make.log 2>&1
+ cd ../..
+
+
+if [[ -f insight.built ]]; then
+ echo Looks like INSIGHT was already built.
+else
+ echo Building INSIGHT...
+ tar -xjf `basename ${INSIGHT}`
+ echo ___________________ >> make.log
+ echo Building insight... >> make.log
+ cd `find . -maxdepth 1 -type d -name 'insight*'`
+ mkdir gnuarm
+ cd gnuarm
+ ../configure ${COMMON_CFG} ${INSIGHT_CFG} >> ../../make.log 2>&1
+ make >> ../../make.log 2>&1
+ make install >> ../../make.log 2>&1
+ cd ../..
+ touch insight.built
+fi
+
+echo ___________________ >> make.log
+echo Build complete. >> make.log
+
+cd ${DESTDIR}
+chmod -R a+rX .
+
+exit 0