PULP Community

Full Version: hero-sdk for ZynqMP
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello again,

I'm trying to build hero-sdk, specifically hero-gcc-toolchain, for use on a ZCU102 and I'm running into some errors.
The first error is when compiling aeabi_lcsts.c:
Code:
hero-sdk/hero-gcc-toolchain/install/arm-linux-gnueabihf/libc/usr/include/asm/sigcontext.h:53:2: error: unknown type name '__uint128_t'

With some googling this *may* be related to CFLAGS with a -std=c11 instead of -std=gnu11. However the output from make says I'm already using gnu11:
Code:
arm-linux-gnueabihf-gcc ../sysdeps/arm/aeabi_lcsts.c -c -std=gnu11 -fgnu89-inline [... snip ...]


To retarget the host CPU architecture I've made the following changes in hero-sdk:
Code:
diff --git a/scripts/hero-z-7045-env.sh b/scripts/hero-z-7045-env.sh
index 0c7af43..31bba7d 100755
--- a/scripts/hero-z-7045-env.sh
+++ b/scripts/hero-z-7045-env.sh
@@ -36,11 +36,11 @@ export HERO_TARGET_PATH_DRIVER="${HERO_TARGET_PATH}/drivers"
 export HERO_TARGET_PATH_LIB="${HERO_TARGET_PATH}/libs"
 
 # Host-side platform config
-export PLATFORM="2"
-export BOARD="zc706"
+export PLATFORM="5"
+export BOARD="zcu102"
 
 # Host-side user-space config
-export ARCH="arm"
+export ARCH="arm64"
 export CROSS_COMPILE="arm-linux-gnueabihf-"
 export HERO_LIBPULP_DIR=`realpath hero-support/libpulp`
And in hero-gcc-toolchain:
Code:
diff --git a/scripts/hero_arm_toolchain_env.sh b/scripts/hero_arm_toolchain_env.sh
index 6cedabe..67a3760 100755
--- a/scripts/hero_arm_toolchain_env.sh
+++ b/scripts/hero_arm_toolchain_env.sh
@@ -19,7 +19,7 @@
 
 HERO_HOST_TARGET=arm-linux-gnueabihf
 HERO_BUILD_TARGET=x86_64-linux-gnu
-HERO_HOST_LINUX_ARCH=arm
+HERO_HOST_LINUX_ARCH=arm64
 HERO_HOST_GLIBC=glibc-2.26
 HERO_HOST_FPU_CONFIG="--with-fpu=neon-fp16 --with-float=hard"

 

Build platform is Ubuntu 16.04.
If I leave scripts/hero-z-7045-env.sh so that it's configured for ZC706 with ARM7 host cores then all parts of the hero-sdk build process complete successfully.

Since there appears to be some code related to ZynqMP in the makefiles, is there somebody here who has successfully built for this target?
Hello,

Question at last working day of the year at 17:00 Smile I have forwarded this to the HERO master, but he might come back only next year, sorry if there is a delay.. 

I wish happy holidays
(12-21-2018, 04:03 PM)kgf Wrote: [ -> ]Hello,

Question at last working day of the year at 17:00 Smile I have forwarded this to the HERO master, but he might come back only next year, sorry if there is a delay.. 

I wish happy holidays

Doh! Thank you and have a good holiday Smile
Hello Dave,

HERO does not support ARMv8 host processors yet. We are working on it, but unfortunately this is more complex than just changing the architecture of the host compiler. Essentially, we need a full new host SW stack (kernel, compiler, rootFS, libraries) that is compatible with the OpenMP RTE and against which we can compile the heterogeneous toolchain. In HW, we will need to support sharing 64-bit pointers with the 32-bit PULP architecture. Stay tuned, though: The next major release of HERO is planned to support ARMv8 host processors! Code related to the ZynqMP comes from development efforts in this direction, but it is not yet complete and supported. I hope ARMv7 host processors, such as the one found on the ZC706, serve your needs in the meantime. 

Happy holiday!
(12-24-2018, 06:36 AM)akurth Wrote: [ -> ]Hello Dave,

HERO does not support ARMv8 host processors yet. We are working on it, but unfortunately this is more complex than just changing the architecture of the host compiler. Essentially, we need a full new host SW stack (kernel, compiler, rootFS, libraries) that is compatible with the OpenMP RTE and against which we can compile the heterogeneous toolchain. In HW, we will need to support sharing 64-bit pointers with the 32-bit PULP architecture. Stay tuned, though: The next major release of HERO is planned to support ARMv8 host processors! Code related to the ZynqMP comes from development efforts in this direction, but it is not yet complete and supported. I hope ARMv7 host processors, such as the one found on the ZC706, serve your needs in the meantime. 

Happy holiday!

Ah okay thank you Andreas.

I'd assumed that the arXiv paper on Juno required ARMv8 support too.

Do you have any idea when the next release is likely to be?
I don't have the budget for ZC706 unfortunately so I'll be looking forward to it keenly.
Hi Dave,

That's correct, we developed a proof-of-concept implementation for ARMv8 host processors and used it for the benchmarks in the CARRV paper. We used ILP32 as data model, so host applications had a 32-bit virtual address space. We could develop this relatively rapidly since we could reuse large parts of our host software. However, the goal is to support full 64-bit applications with the 'native' LP64 data model. We are planning to release this by the end of the first half of 2019. If you are interested in having access to this as early as possible, we could discuss a pre-release collaboration.
(01-03-2019, 10:37 AM)akurth Wrote: [ -> ]Hi Dave,

That's correct, we developed a proof-of-concept implementation for ARMv8 host processors and used it for the benchmarks in the CARRV paper. We used ILP32 as data model, so host applications had a 32-bit virtual address space. We could develop this relatively rapidly since we could reuse large parts of our host software. However, the goal is to support full 64-bit applications with the 'native' LP64 data model. We are planning to release this by the end of the first half of 2019. If you are interested in having access to this as early as possible, we could discuss a pre-release collaboration.

Thank you that makes more sense now. I'll PM you.