summaryrefslogtreecommitdiff
path: root/rbutil/mkamsboot/Makefile
blob: 4040c716b5d842635561203a0c76c1fd0e919326 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Change INFILE to point to your original firmware file
INFILE=$(HOME)/FW/AMS/CLIP/m300a-1.1.17A.bin

# OUTFILE is the file you copy to your device's root and rename to
# (e.g.) m300a.bin
OUTFILE=patched.bin

# The uclpack command
UCLPACK=../../tools/uclpack

all: $(OUTFILE)

mkamsboot: mkamsboot.c
	gcc -o mkamsboot -W -Wall mkamsboot.c

extract_fw: extract_fw.c
	gcc -o extract_fw -W -Wall extract_fw.c

# Rules for our test ARM application - assemble, link, then extract
# the binary code

test.o: test.S
	arm-elf-as -o test.o test.S

test.elf: test.o
	arm-elf-ld -e 0 -Ttext=0 -o test.elf test.o

test.bin: test.elf
	arm-elf-objcopy -O binary test.elf test.bin

# Rules for the ucl unpack function - this is inserted in the padding at 
# the end of the original firmware block
nrv2e_d8.o: nrv2e_d8.S
	arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.o nrv2e_d8.S

# NOTE: this function has no absolute references, so the link address (-e)
# is irrelevant.  We just link at address 0.
nrv2e_d8.elf: nrv2e_d8.o
	arm-elf-ld -e 0 -Ttext=0 -o nrv2e_d8.elf nrv2e_d8.o

nrv2e_d8.bin: nrv2e_d8.elf
	arm-elf-objcopy -O binary nrv2e_d8.elf nrv2e_d8.bin

firmware_block.ucl: firmware_block.bin
	$(UCLPACK) --best --2e firmware_block.bin firmware_block.ucl

firmware_block.bin: $(INFILE) extract_fw
	./extract_fw $(INFILE) firmware_block.bin

$(OUTFILE): mkamsboot firmware_block.ucl test.bin nrv2e_d8.bin $(INFILE)
	./mkamsboot $(INFILE) firmware_block.ucl test.bin nrv2e_d8.bin $(OUTFILE)

clean:
	rm -fr amsinfo mkamsboot test.o test.elf test.bin extract_fw \
	nrv2e_d8.o nrv2e_d8.elf nrv2e_d8.bin firmware_block.bin \
	firmware_block.ucl $(OUTFILE) *~