Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Sootla__Sten
Beginner
244 Views

Support for 64 bit ARM (e.g. OrangePi 2)

Is it possible to get the samples compiled with OpenVINO R5 on 64-bit ARM? By following the tutorial for Raspbian and modifying the CMake files with the correct paths, I was able to produce the relevant makefiles for the samples on OrangePi 2. However, compilation didn't succeed for any of the samples, as linking the inference engine shared library fails as follows: 

/armv7l/libinference_engine.so: error adding symbols: File in wrong format.

I also tried to add the extra armhf architecture (dpkg --add-architecture armhf), and installed some common libraries along with it (e.g.  libc++-dev:armhf), but to no avail.

 

 

0 Kudos
9 Replies
om77
New Contributor I
244 Views

Hi,

the step you did in the last paragraph may be sufficient to get the samples (which are compiled on armhf architecture) to be executed on arm64 user space. But it's not enough to cross compile them on arm64 user space for armhf arch.

Is your arm64 gcc toolchain able to produce armhf binaries?

Sootla__Sten
Beginner
244 Views

Sorry, can you elaborate on your reply? If my steps were sufficient, wouldn't have I been able to run the samples :d? What am I missing?

om77
New Contributor I
244 Views

I meant the first step to try is: compile samples on armhf (e.g. Raspberry), copy binaries to arm64 board and run there. The next (more complex) step is to cross-compile samples on arm64 board for armhf.

And for the first step your "extensions" of arm64 user space should be enough.

om77
New Contributor I
244 Views

After passing my "first" step (from previous comment) you will get a full list of dependency (e.g. by issuing on armhf board ldd command for final binary). So if libraries from this list are not from OpenVINO package, you need to check if these libraries of armhf architecture are installed on arm64 user space. Next you need to install cross compiling toolchain (containing gcc arm64 binary which is able to produce armhf binaries). Finally you need to configure cmake of OpenVINO to use just installed cross compiling toolchain.

P.S. The error which you get "/armv7l/libinference_engine.so: error adding symbols: File in wrong format." means that you're trying to link different elfs: arm64 and armhf. And /armv7l/libinference_engine.so is obvoiusly armhf one. This means that you currently use arm64 gcc which is incorrect.

Sootla__Sten
Beginner
244 Views

Thanks, 

I got the object detection sample compiled in this way, but now get the following runtime error when actually trying to run the sample on the NCS2, even though I added the USB rules:

E: [ncAPI] [    211820] ncDeviceOpen:870        failed to find device

[ ERROR ] Can not init USB device: NC_DEVICE_NOT_FOUND

om77
New Contributor I
244 Views

Hi Stan,

is it noted in lsusb output? If yes, try to run it with root permissions. I guess you installed libusb1.0 of armhf architecture on arm64.

Actually I did the similar thing to get it working on Tegra TX1 arm64 board which only present here, just Movidius 1 stick is used.

ruan__jiayang
Beginner
244 Views

Hi Sootla, have you succeeded to run on ARM? I can run openvino samples on Raspberry 3B, but I am trying to transfer to an ARM board based on CPU RK3399.

First, how do you modify those CMake files?

BBi
Beginner
244 Views

hi, ruan, jiayang. i am also trying to transfer openvino to an ARM based rk board. Have you worked it out? 

K__Shawn
Beginner
244 Views

I'm documenting how to resolve some ARM64 issues with a schroot workaround for those interested:
https://github.com/skhameneh/OpenVINO-ARM64

Feel free to file an issue or make a PR if you'd like anything to be added.

Reply