androidtensorflowhexagon-dsp

Can not execute hexagon_graph_execution on hexagon-sim


I have followed the build_and_run_inception_hexagon.sh and generated the hexagon_graph_execution executable. Now instead of using a real device I would like to test inception model with hexagon-sim available at SDK 3.0. So there is no need to use adb push commands as the SDK can simulate HVX device with hexagon-sim. I have put the run-time libraries and the inception model plus the image at the same folder. After execution It gives me this error:

~/Qualcomm/HEXAGON_Tools/7.2.12/Tools/bin/hexagon-sim ./hexagon_graph_execution "/home/aashouri/Qualcomm/Hexagon_SDK/3.0/test/common/inception"
Error: Unsupported machine type 0x0 in ELF image "./hexagon_graph_execution" - exiting.

Can anyone comment on this?

Hexagon-readelf:

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0xc8c9c
  Start of program headers:          52 (bytes into file)
  Start of section headers:          39944896 (bytes into file)
  Flags:                             0x5000000, Version5 EABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         8
  Size of section headers:           40 (bytes)
  Number of section headers:         36
  Section header string table index: 35

XXD info:

0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............
0000010: 0300 2800 0100 0000 9c8c 0c00 3400 0000  ..(.........4...
0000020: c082 6102 0000 0005 3400 2000 0800 2800  ..a.....4. ...(.
0000030: 2400 2300 0600 0000 3400 0000 3400 0000  $.#.....4...4...
0000040: 3400 0000 0001 0000 0001 0000 0400 0000  4...............
0000050: 0400 0000 0300 0000 3401 0000 3401 0000  ........4...4...
0000060: 3401 0000 1300 0000 1300 0000 0400 0000  4...............
0000070: 0100 0000 0100 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 ece6 2a01 ece6 2a01 0500 0000  ......*...*.....
0000090: 0010 0000 0100 0000 20eb 2a01 20fb 2a01  ........ .*. .*.

Solution

  • ELF Header:
      Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
      Class:                             ELF32
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              DYN (Shared object file)
      Machine:                           ARM
      Version:                           0x1
    

    This binary was not built by hexagon-clang. You must have accidentally built it with the ARM toolchain -- the "Machine" field would say "Qualcomm Hexagon" if it had been built for the hexagon DSP.