-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathpic24f_gen.sh
executable file
·105 lines (65 loc) · 1.9 KB
/
pic24f_gen.sh
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
if [ -z $1 ]; then
echo "usage: $0 [device_name]"
exit 1
fi
DEVICE=$1
OUTPUT=output/${DEVICE}.gld
cat >$OUTPUT << ENDHEADER
/************************************************
Linker script for $DEVICE
Generated by the Signal 11 Software
PIC24F Linker Script Generator
http://github.com/signal11/pic_linker_script
This script may be used by anyone for any
purpose and may be redistributed freely.
************************************************/
ENDHEADER
cat ${DEVICE}_mem.txt >> $OUTPUT
echo "" >> $OUTPUT
cat pic24f_mem.txt >> $OUTPUT
echo "" >> $OUTPUT
echo "" >> $OUTPUT
echo "#define HANDLER(X) LONG(DEFINED(__##X)? ABSOLUTE(__##X): ABSOLUTE(__DefaultInterrupt));" >> $OUTPUT
echo "" >> $OUTPUT
echo "" >> $OUTPUT
echo "#define ALTHANDLER(X) LONG(DEFINED(__Alt##X)? ABSOLUTE(__Alt##X): DEFINED(__##X) ? ABSOLUTE(__##X) : ABSOLUTE(__DefaultInterrupt));" >> $OUTPUT
echo "" >> $OUTPUT
echo "SECTIONS {" >> $OUTPUT
cat pic24f_reset.txt >> $OUTPUT
echo "" >> $OUTPUT
cat pic24f_icd.txt >> $OUTPUT
echo "" >> $OUTPUT
cat pic24f_debug.txt >> $OUTPUT
echo "" >> $OUTPUT
cat pic24f_configs.txt >> $OUTPUT
echo "" >> $OUTPUT
echo -e "\t.intvec IVT_BASE : {" >> $OUTPUT
cat pic24f_interrupts.txt | while read INTERRUPT IMPLEMENTED
do
if [ $INTERRUPT ]; then
echo -e "\t\tHANDLER($INTERRUPT)" >> $OUTPUT
fi
done
echo -e "\t} >ivt" >> $OUTPUT
echo "" >> $OUTPUT
echo "" >> $OUTPUT
echo -e "\t.altintvec ALT_IVT_BASE : {" >> $OUTPUT
cat pic24f_interrupts.txt | while read INTERRUPT IMPLEMENTED
do
if [ $INTERRUPT ]; then
echo -e "\t\tALTHANDLER($INTERRUPT)" >> $OUTPUT
fi
done
echo -e "\t} >aivt" >> $OUTPUT
echo "}" >> $OUTPUT # SECTIONS
echo "" >> $OUTPUT
cat ${DEVICE}_regs.txt | while read REG ADDR
do
if [ $REG ]; then
echo -e "$REG = 0x$ADDR;" >> $OUTPUT
echo -e "_$REG = 0x$ADDR;" >> $OUTPUT
echo -e "_${REG}bits = 0x$ADDR;" >> $OUTPUT
fi
done
echo "" >> $OUTPUT