I use OpenCV on a Jetson Orin and can happily build all the way up to 4.10. But with the inclusion of stackblur in 4.11.0 I can no longer build it.
(I need to rebuild OpenCV to enable things like cuda and cudnn).
It seems that the assembler is not supported on the Nvidia Arm chip. (I explicitly tell gcc which processor to use.)
/tmp/ccm9pddF.s:7090: Error: selected processor does not support `fcvtzs s0,s0’
Unfortunately, Nvidia Jetson is basically a closed system, you cannot freely upgrade things like the compiler without upgrading the whole BSP. This is a big change most Jetson users will not be able to do.
The compiler is old gcc v9. Agree its going to be related to this, but it stops me moving to 4.11.
you said you think this comes from stackblur? if that is the case, and if you aren’t interested in that specific function, you could still work with 4.11 source, but excise that function.
Yes, I was going to do that, but discovered stackblur was unfairly being blamed.
The root cause was cmake of all things, it selects the system processor. Despite an Orin being an Arm 8.1 core, it is selecting Arm 8.2 core. Hence the unsupported instructions. (Working on a fix.)
A bit more surprising as I am building on the target system but yes it seems its doing a cross compiler and has all the problems which that includes.
My solution was to add (for an Orin NX):
-D CMAKE_SYSTEM_PROCESSOR=ARM8 -D CMAKE_C_FLAGS=”-mtune cortex-a73 -march=arm8.1-a” -D CMAKE_CXX_FLAGS=”-mtune cortex-a73 -march=arm8.1-a”
(setting CMAKE_SYSTEM_PROCESSOR just removes the Arm8.2 flags from the compile.)
So to be clear I am building on the Orin for the Orin, but need to explicitly set the processor cos’ cmake gets it wrong and selects a different CPU.