1 # common make targets for compiling fx2 firmware
3 # In your Makefile, define:
4 # SOURCES: list of c files to compile
5 # A51_SOURCES: list of any a51 files.
6 # DEPS: list of any depedancies (like auto-generated header files) that need
7 # generated prior to compiling. You must provide the target definition
8 # for any DEPS you define.
9 # BASENAME: name of your firmware file, i.e., myfirmware, but not myfirmware.c
11 # Leave these alone or redefine as necessary to customize firmware.
12 # (Redefine after including this makefile)
15 # LIBS optional additional libraries to link with the firmware.
16 # SDCC build/link options
17 # CODE_SIZE: Default --code-size 0x3c00
18 # XRAM_SIZE: Default --xram-size 0x0200
19 # XRAM_LOC: Default --xram-loc 0x3c00
20 # BUILDDIR: build directory (default build)
21 # These two can be changed to be blank if no device descriptor is being used.
22 # DSCR_AREA: Default -Wl"-b DSCR_AREA=0x3e00"
23 # INT2JT: Default -Wl"-b INT2JT=0x3f00"
27 # default target: creates $(BASENAME).ihx
28 # bix: creates $(BASENAME).bix
29 # iic: creates $(BASENAME).iic
30 # load: uses fx2load to load firmware.bix onto the development board
31 # (You can customize VID/PID if you need to load the firmware onto a device that has different vendor and product id
32 # The default is 0x04b4, 0x8613
33 # clean: delete all the temp files.
43 DSCR_AREA?
=-Wl
"-b DSCR_AREA=0x3e00"
44 INT2JT?
=-Wl
"-b INT2JT=0x3f00"
45 CODE_SIZE?
=--code-size
0x3c00
46 XRAM_SIZE?
=--xram-size
0x0200
47 XRAM_LOC?
=--xram-loc
0x3c00
50 FX2LIBDIR?
=$(dir $(lastword
$(MAKEFILE_LIST
)))..
/
52 RELS
=$(addprefix $(BUILDDIR
)/, $(addsuffix .rel
, $(notdir $(basename $(SOURCES
) $(A51_SOURCES
)))))
53 # these are pretty good settings for most firmwares.
54 # Have to be careful with memory locations for
55 # firmwares that require more xram etc.
65 .PHONY
: all ihx iic bix load
clean clean-all
68 ihx
: $(BUILDDIR
)/$(BASENAME
).ihx
69 bix
: $(BUILDDIR
)/$(BASENAME
).bix
70 iic
: $(BUILDDIR
)/$(BASENAME
).iic
72 $(FX2LIBDIR
)/lib
/fx2.lib
: $(FX2LIBDIR
)/lib
/*.c
$(FX2LIBDIR
)/lib
/*.a51
73 $(MAKE
) -C
$(FX2LIBDIR
)/lib
78 $(BUILDDIR
)/$(BASENAME
).ihx
: $(BUILDDIR
) $(SOURCES
) $(A51_SOURCES
) $(FX2LIBDIR
)/lib
/fx2.lib
$(DEPS
)
79 # can't use default target %.rel because there is no way
80 # to differentiate the dependency. (Is it %.rel: %.c or %.a51)
81 for a in
$(A51_SOURCES
); do \
82 cp
$$a $(BUILDDIR
)/; \
83 cd
$(BUILDDIR
) && $(AS8051
) -logs
`basename $$a` && cd ..
; done
84 for s in
$(SOURCES
); do \
85 THISREL
=$$(basename `echo "$$s" | sed -e 's/\.c$$/\.rel/'`); \
86 $(CC
) -c
-I
$(FX2LIBDIR
)/include $$s -o
$(BUILDDIR
)/$$THISREL ; done
87 $(CC
) -o
$@
$(RELS
) fx2.lib
-L
$(FX2LIBDIR
)/lib
$(LIBS
)
90 $(BUILDDIR
)/$(BASENAME
).bix
: $(BUILDDIR
)/$(BASENAME
).ihx
91 objcopy
-I ihex
-O binary
$< $@
92 $(BUILDDIR
)/$(BASENAME
).iic
: $(BUILDDIR
)/$(BASENAME
).ihx
93 $(FX2LIBDIR
)/utils
/ihx2iic.py
-v
$(VID
) -p
$(PID
) $< $@
95 load
: $(BUILDDIR
)/$(BASENAME
).bix
96 fx2load
-v
$(VID
) -p
$(PID
) $(BUILDDIR
)/$(BASENAME
).bix
99 rm -f
$(BUILDDIR
)/*.
{asm
,ihx
,lnk
,lst
,map
,mem
,rel
,rst
,sym
,adb
,cdb
,bix
}
102 $(MAKE
) -C
$(FX2LIBDIR
)/lib
clean