aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-devtools/gdbc6x/gdbc6x/init
blob: 90210b822deb16893cd2eeba288aee9c6c9acfdf (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
#!/bin/bash

GDB_DEVICE_NAME='/dev/gdbtty$i'
DSP_FIRMWARE_NAME='/lib/firmware/dra7-dsp$[$i+1]-fw.xe66'

DSP_L2_GLOBAL_OFFSET="40000000"
DSP_L2_GLOBAL_SHIFT="00800000"

case "$1" in
  start)

    dsp_core_l2_offset=$DSP_L2_GLOBAL_OFFSET

    i=0
    while [ -c "`eval echo $GDB_DEVICE_NAME`" ]
    do
      dsp_firmware=`eval echo $DSP_FIRMWARE_NAME`

      if [ -f "`eval echo $DSP_FIRMWARE_NAME`" ]
      then 
        eval echo "Initializing $GDB_DEVICE_NAME based on $DSP_FIRMWARE_NAME ..."

        gdb_data_local=`eval readelf -s "$DSP_FIRMWARE_NAME" | \
                        grep 'gdb_globalData' | \
                        awk '{print $2}'`

        echo "gdb_globalData (local)  = $gdb_data_local"
        printf "gdb_globalData (global) = %X\n" \
          $[0x$gdb_data_local + 0x$dsp_core_l2_offset]


        printf "%X\n" $[0x$gdb_data_local + 0x$dsp_core_l2_offset] \
          >> `eval echo $GDB_DEVICE_NAME`
      fi
      i=$[$i + 1]
      dsp_core_l2_offset=`printf "%X" $[0x$dsp_core_l2_offset + 0x$DSP_L2_GLOBAL_SHIFT]`
    done
  ;;
  stop)
    # Nothing to be done.
  ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
  ;;
esac