Script » Historie » Version 1
Maximilian Seesslen, 29.11.2021 11:50
1 | 1 | Maximilian Seesslen | h1. Script |
---|---|---|---|
2 | |||
3 | <pre><code class="shell"> |
||
4 | #!/bin/bash |
||
5 | |||
6 | set -e |
||
7 | set -u |
||
8 | |||
9 | handleError() |
||
10 | { |
||
11 | echo "Error: Something went wrong here. $1" |
||
12 | exit 22 |
||
13 | } |
||
14 | |||
15 | writeHwInfo() |
||
16 | { |
||
17 | echo "BINARY: $BINARY" |
||
18 | cat << EOF > .gdbinit |
||
19 | set arm abi AAPCS |
||
20 | target remote localhost:3333 |
||
21 | monitor reset halt |
||
22 | EOF |
||
23 | |||
24 | cat << EOF > gdb.txt |
||
25 | br main:loop |
||
26 | echo Waiting for application does stop at breakpoint.\n |
||
27 | echo If it does not stop, the given binary file is probably wrong.\n |
||
28 | c |
||
29 | # call (flash)(10,\"mmm\") |
||
30 | print &bringupFirmware |
||
31 | clear main:loop |
||
32 | monitor reset run |
||
33 | EOF |
||
34 | |||
35 | echo $GDB $BINARY -x gdb.txt |
||
36 | # $GDB $O/$B -x gdb.txt -batch-silent -q || handleError "Could not verify bringup firmware. Is bringup firmware flashed?" |
||
37 | $GDB $BINARY -x gdb.txt --batch || handleError "Could not verify bringup firmware. Is bringup firmware flashed?" |
||
38 | |||
39 | echo -n "Please enter serial number in hex or dec (e.g. 0x123): " |
||
40 | read serial |
||
41 | |||
42 | serial=$(printf '0x%x\n' $serial) |
||
43 | serialLong=$(printf '%08X\n' $serial) |
||
44 | |||
45 | # echo -n "Please enter variant in hex or dec (e.g. 0x123): " |
||
46 | # read serial |
||
47 | variant=0 |
||
48 | |||
49 | if [ -z "$serial" ]; then hanleError "You did not specify an serial number."; fi |
||
50 | |||
51 | # SEepromMain hwInfoMain |
||
52 | # a=$(nm $O/$B | grep hwInfoMain) || handleError "Could not find 'myStruct'" |
||
53 | |||
54 | # addr=${a%% *} |
||
55 | # echo "Will try x/20xb 0x$addr" |
||
56 | |||
57 | cat << EOF >gdb.txt |
||
58 | echo "Helllooooooo" |
||
59 | br main:loop |
||
60 | # run |
||
61 | echo "### Continue run" |
||
62 | c |
||
63 | echo ### Braked\n |
||
64 | set var \$new = (SEepromMain *)malloc(sizeof(struct SEepromMain)) |
||
65 | set var \$new.main.magic='H' |
||
66 | set var \$new.main.articleId=$articleId |
||
67 | set var \$new.main.boardId=$boardId |
||
68 | set var \$new.version.hwVersionMajor=$versionMajor |
||
69 | set var \$new.version.hwVersionMinor=$versionMinor |
||
70 | set var \$new.version.hwVersionPatch=$versionPatch |
||
71 | set var \$new.production.serialNumber=$serial |
||
72 | set var \$new.production.variant=$variant |
||
73 | set var \$new.production.productionDateYear=$year |
||
74 | set var \$new.production.productionDateMonth=$month |
||
75 | set var \$new.production.productionDateDay=$day |
||
76 | set var \$new.production.productionSite=$site |
||
77 | |||
78 | echo ### calling function\n |
||
79 | call (writeHwInfo)(\$new) |
||
80 | # monitor reset run |
||
81 | echo ### Read back\n |
||
82 | call (readHwInfo)() |
||
83 | |||
84 | print/x bringupFirmware |
||
85 | set logging file serial.txt |
||
86 | set logging overwrite |
||
87 | set logging on |
||
88 | print/x $cppObject->hwInfoMain.production.serialNumber |
||
89 | set logging off |
||
90 | set logging file all.txt |
||
91 | set logging overwrite |
||
92 | set logging on |
||
93 | print/x $cppObject->hwInfoMain |
||
94 | |||
95 | print &$cppObject->hwInfoMain |
||
96 | x/28xb \$0 |
||
97 | set logging off |
||
98 | |||
99 | echo ### finished\n |
||
100 | clear main:loop |
||
101 | echo "### END" |
||
102 | # must not continue or we stuck here |
||
103 | # c |
||
104 | EOF |
||
105 | echo "### Waiting for application to break to write stuff 2" |
||
106 | echo "### $GDB $BINARY -x gdb.txt -batch-silent -q" |
||
107 | $GDB $BINARY -x gdb.txt --batch || handleError "Could not write HwInfo. Is bringup firmware flashed?" |
||
108 | echo "### Waiting for application to break to write stuff 3" |
||
109 | echo -e "\n" |
||
110 | |||
111 | echo "Serial: " |
||
112 | |||
113 | a=$(cat serial.txt) |
||
114 | isSerial="${a##* = }" |
||
115 | |||
116 | if [ "$serial" == "$isSerial" ]; then |
||
117 | cat all.txt |
||
118 | echo "Serial is OK; $serial == $isSerial" |
||
119 | else |
||
120 | handleError "Serial is NOT OK; $serial != $isSerial" |
||
121 | fi |
||
122 | |||
123 | mv all.txt $opwd/hwinfo_${serialLong}.txt |
||
124 | } |
||
125 | |||
126 | opwd=$PWD |
||
127 | GDB=/opt/tcb-stm32/usr/bin/arm-none-eabi/arm-none-eabi-gdb |
||
128 | month=$(date +"%m") |
||
129 | day=$(date +"%d") |
||
130 | year=$(date +"%y") |
||
131 | |||
132 | |||
133 | #---fin------------------------------------------------------------------------ |
||
134 | |||
135 | </code></pre> |