]>
Commit | Line | Data |
---|---|---|
3608c106 UH |
1 | # common make targets for compiling fx2 firmware |
2 | # | |
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 | |
10 | # | |
11 | # Leave these alone or redefine as necessary to customize firmware. | |
12 | # (Redefine after including this makefile) | |
13 | # VID vendor id | |
14 | # PID product id | |
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" | |
24 | # | |
25 | # Provided targets: | |
26 | # | |
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. | |
34 | # | |
35 | # | |
36 | # | |
37 | ||
38 | VID?=0x04b4 | |
39 | PID?=0x8613 | |
40 | ||
41 | DSCR_AREA?=-Wl"-b DSCR_AREA=0x3e00" | |
42 | INT2JT?=-Wl"-b INT2JT=0x3f00" | |
43 | CODE_SIZE?=--code-size 0x3c00 | |
44 | XRAM_SIZE?=--xram-size 0x0200 | |
45 | XRAM_LOC?=--xram-loc 0x3c00 | |
46 | BUILDDIR?=build | |
47 | ||
48 | FX2LIBDIR?=$(dir $(lastword $(MAKEFILE_LIST)))../ | |
49 | ||
50 | RELS=$(addprefix $(BUILDDIR)/, $(addsuffix .rel, $(notdir $(basename $(SOURCES) $(A51_SOURCES))))) | |
51 | # these are pretty good settings for most firmwares. | |
52 | # Have to be careful with memory locations for | |
53 | # firmwares that require more xram etc. | |
54 | CC = sdcc -mmcs51 \ | |
55 | $(SDCCFLAGS) \ | |
56 | $(CODE_SIZE) \ | |
57 | $(XRAM_SIZE) \ | |
58 | $(XRAM_LOC) \ | |
59 | $(DSCR_AREA) \ | |
60 | $(INT2JT) | |
61 | ||
62 | ||
63 | .PHONY: ihx iic bix load clean clean-all | |
64 | ||
65 | ||
66 | ihx: $(BUILDDIR)/$(BASENAME).ihx | |
67 | bix: $(BUILDDIR)/$(BASENAME).bix | |
68 | iic: $(BUILDDIR)/$(BASENAME).iic | |
69 | ||
70 | $(FX2LIBDIR)/lib/fx2.lib: $(FX2LIBDIR)/lib/*.c $(FX2LIBDIR)/lib/*.a51 | |
71 | make -C $(FX2LIBDIR)/lib | |
72 | ||
73 | $(BUILDDIR): | |
74 | mkdir -p $(BUILDDIR) | |
75 | ||
76 | $(BUILDDIR)/$(BASENAME).ihx: $(BUILDDIR) $(SOURCES) $(A51_SOURCES) $(FX2LIBDIR)/lib/fx2.lib $(DEPS) | |
77 | # can't use default target %.rel because there is no way | |
78 | # to differentiate the dependency. (Is it %.rel: %.c or %.a51) | |
79 | for a in $(A51_SOURCES); do \ | |
80 | cp $$a $(BUILDDIR)/; \ | |
81 | cd $(BUILDDIR) && sdas8051 -logs `basename $$a` && cd ..; done | |
82 | for s in $(SOURCES); do \ | |
83 | THISREL=$$(basename `echo "$$s" | sed -e 's/\.c$$/\.rel/'`); \ | |
84 | $(CC) -c -I $(FX2LIBDIR)/include $$s -o $(BUILDDIR)/$$THISREL ; done | |
85 | $(CC) -o $@ $(RELS) fx2.lib -L $(FX2LIBDIR)/lib $(LIBS) | |
86 | ||
87 | ||
88 | $(BUILDDIR)/$(BASENAME).bix: $(BUILDDIR)/$(BASENAME).ihx | |
89 | objcopy -I ihex -O binary $< $@ | |
90 | $(BUILDDIR)/$(BASENAME).iic: $(BUILDDIR)/$(BASENAME).ihx | |
91 | $(FX2LIBDIR)/utils/ihx2iic.py -v $(VID) -p $(PID) $< $@ | |
92 | ||
93 | load: $(BUILDDIR)/$(BASENAME).bix | |
94 | fx2load -v $(VID) -p $(PID) $(BUILDDIR)/$(BASENAME).bix | |
95 | ||
96 | clean: | |
97 | rm -f $(BUILDDIR)/*.{asm,ihx,lnk,lst,map,mem,rel,rst,sym,adb,cdb,bix} | |
98 | ||
99 | clean-all: clean | |
100 | make -C $(FX2LIBDIR)/lib clean | |
101 |