Git Product home page Git Product logo

hero-sdk's Introduction

DEPRECATED

This repository is part of a deprecated version of HERO. Please refer to the current HERO repository for the current heterogeneous SDK.

HERO Software Development Kit

HERO [1], the open Heterogeneous Research Platform, combines a PULP-based [2] open-source parallel manycore accelerator implemented on FPGA with a hard ARM Cortex-A multicore host processor running full-stack Linux. HERO is the first heterogeneous system architecture that combines a powerful ARM multicore host with a highly parallel and scalable manycore accelerator based on a RISC-V cores. HERO offers a complete hardware and software platform which advances the state of the art of transparent accelerator programming using the OpenMP v4.5 Accelerator Model. The programmer can write a single application source file for the host and use OpenMP directives for parallelization and accelerator offloading. Lower-level details such as differing ISAs as well as shared virtual memory (SVM) [3] between host and accelerator are handled by our heterogeneous toolchain based on GCC 7 [4], runtime libraries, kernel driver and our open-source hardware IPs.

Contents

The HERO software development kit (SDK) contains the following submodules:

  • hero-gcc-toolchain: heterogeneous toolchain based on GCC 7 with RISC-V offloading support through OpenMP 4.5.
  • hero-support: accelerator kernel driver and user-space runtime library, host Linux system based on Buildroot.
  • hero-openmp-examples: HERO application examples using the OpenMP Accelerator Model.
  • libhero-target: HERO hardware-specific APIs accessible through OpenMP.
  • pulp-sdk: accelerator SDK (more info here)

Getting Started

Prerequisites

Hardware

The HERO SDK currently supports the Xilinx Zynq ZC706 Evaluation Kit as target hardware platform.

Software

First, make sure your shell environment does not deviate from the system defaults regarding paths (PATH, LD_LIBRARY_PATH, etc) before setting up the SDK or sourcing the environment of the HERO SDK.

Ubuntu 16.04

Starting from a fresh Ubuntu 16.04 distribution, here are the commands to be executed to get all required dependencies:

sudo apt install build-essential bison flex git python3-pip gawk texinfo libgmp-dev libmpfr-dev libmpc-dev swig3.0 libjpeg-dev lsb-core doxygen python-sphinx sox graphicsmagick-libmagick-dev-compat libsdl2-dev libswitch-perl libftdi1-dev cmake u-boot-tools fakeroot
sudo pip3 install artifactory twisted prettytable sqlalchemy pyelftools openpyxl xlsxwriter pyyaml numpy

CentOS 7 (Experimental)

Starting from a fresh CentOS 7 distribution, here are the commands to be executed to get all required dependencies:

sudo yum install git python34-pip python34-devel gawk texinfo gmp-devel mpfr-devel libmpc-devel swig libjpeg-turbo-devel redhat-lsb-core doxygen python-sphinx sox GraphicsMagick-devel ImageMagick-devel SDL2-devel perl-Switch libftdi-devel cmake uboot-utils fakeroot
sudo pip3 install artifactory twisted prettytable sqlalchemy pyelftools openpyxl xlsxwriter pyyaml numpy

Get the HERO SDK sources

The HERO SDK uses GIT submodules. Thus, you have to clone it recursively:

git clone --recursive [email protected]:pulp-platform/hero-sdk.git

or if you use HTTPS

git clone --recursive https://github.com/pulp-platform/hero-sdk.git

Build the HERO SDK from the sources

The build is automatically managed by various scripts. The main build script is hero-z-7045-builder. You can build everything by launching the following command:

./hero-z-7045-builder -A

The first build takes at least 1 hour (depending on your internet connection). The whole HERO SDK requires roughly 25 GiB of disk space. If you want to build a single module only, you can do so by triggering the corresponding build step separately. Execute

./hero-z-7045-builder -h

to list the available build commands. Note that some modules have dependencies and require to be built in order. The above command displays the various modules in the correct build order.

Setup of the HERO platform

Once you have built the host Linux system, you can set up operation of the HERO platform.

Format SD card (HERO boot medium)

To properly format your SD card, insert it to your computer and type dmesg to find out the device number of the SD card. In the following, it is referred to as /dev/sdX.

NOTE: Executing the following commands on a wrong device number will corrupt the data on your workstation. You need root privileges to format the SD card.

First of all, type

sudo dd if=/dev/zero of=/dev/sdX bs=1024 count=1

to erase the partition table of the SD card.

Next, start fdisk using

sudo fdisk /dev/sdX

and then type n followed by p and 1 to create a new primary partition. Type 1 followed by 1G to define the first and last cylinder, respectively. Then, type n followed by p and 2 to create a second primary partition. Select the first and last cylinder of this partition to use the rest of the SD card. Type p to list the newly created partitions and to get their device nodes, e.g., /dev/sdX1. To write the partition table to the SD card and exit fdisk, type w.

Next, execute

sudo mkfs -t vfat -n ZYNQ_BOOT /dev/sdX1

to create a new FAT filesystem for the boot partition, and

sudo mkfs -t ext2 -L STORAGE /dev/sdX2

to create an ext2 filesystem for storage. (Do not use FAT for storage because it does not support symlinks, which are needed to correctly install libraries.)

Load boot images to SD card

To install the generated images, copy the contents of the directory

linux-workspace/sd_image

to the first partition of the prepared SD card. You can do so by changing to this directory and executing the provided script

cd linux-workspace/sd_image
./copy_to_sd_card.sh

NOTE: By default, this script expects the SD card partition to be mounted at /run/media/${USER}/ZYNQ_BOOT but you can specify a custom SD card mount point by setting up the env variable SD_BOOT_PARTITION.

Insert the SD card into the board and make sure the board boots from the SD card. To this end, the boot mode switch of the Zynq must be set to 00110. Connect the board to your network. Boot the board.

Install HERO SDK support files

Once you have set up the board you can define the following environmental variables (e.g. in scripts/hero-z-7045-env.sh)

export HERO_TARGET_HOST=<user_id>@<hero-target-ip>
export HERO_TARGET_PATH=<installation_dir>

to enable the HERO builder to install the driver, support applications and libraries using a network connection. Then, execute

./hero-z-7045-builder -i

to install the files on the board.

By default, the root filesystem comes with pre-generated SSH keys in /etc/ssh/ssh_host*. The default root password is

hero

and is set at startup by the script /etc/init.d/S45password.

NOTE: We absolutely recommend to modify the root filesystem to set a custom root password and include your own SSH keys. How this can be done is explained on our HOWTO webpage. We are not responsible for any vulnerabilities and harm resulting from using the provided unsafe password and SSH keys.

Execute OpenMP Examples

Environmental Setup

The HERO SDK contains also some OpenMP 4.5 example applications. Before running an example application, you must have built the HERO SDK, set up the HERO platform and installed the driver, support applications and libraries.

Setup the build environment by executing

source scripts/hero-z-7045-env.sh

Connect to the board and load the PULP driver:

cd ${HERO_TARGET_PATH_DRIVER}
insmod pulp.ko

To print any UART output generated by PULP, connect to the HERO target board via SSH and start the PULP UART reader:

cd ${HERO_TARGET_PATH_APPS}
./uart

Application Execution

To compile and execute an application, navigate to the application folder and execute make:

cd hero-openmp-examples/helloworld
make clean all run

Alternatively, you can also directly connect to the board via SSH, and execute the binary on the board once it has been built:

cd ${HERO_TARGET_PATH_APPS}
export LD_LIBRARY_PATH=${HERO_TARGET_PATH_LIB}
./helloworld

Additional information

For additional information on how to build the host Linux system, customize the Buildroot root filesystem (e.g. installing your SSH keys) etc. visit the corresponding HOWTO webpage.

Issues and troubleshooting

If you find problems or issues during the build process, you can take a look at the troubleshooting page or you can directly open an issue in case your problem is not a common one.

References

  1. Kurth, Andreas, et al. "HERO: Heterogeneous Embedded Research Platform for Exploring RISC-V Manycore Accelerators on FPGA." arXiv preprint arXiv:1712.06497 (2017)
  2. Rossi, Davide, et al. "PULP: A parallel ultra low power platform for next generation IoT applications." Hot Chips 27 Symposium (HCS), 2015 IEEE. IEEE, 2015
  3. Vogel, Pirmin, Andrea Marongiu, and Luca Benini. "Lightweight virtual memory support for zero-copy sharing of pointer-rich data structures in heterogeneous embedded SoCs." IEEE Transactions on Parallel and Distributed Systems 28.7 (2017): 1947-1959. IEEE, (2017)
  4. Capotondi, Alessandro, and Andrea Marongiu. "Enabling zero-copy OpenMP offloading on the PULP many-core accelerator." Proceedings of the 20th International Workshop on Software and Compilers for Embedded Systems. ACM, 2017.

hero-sdk's People

Contributors

alessandrocapotondi avatar andreaskurth avatar vogelpi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hero-sdk's Issues

Hero openmp examples linker error

Bug description
When building the helloworld example, linker reports that it cannot find -lhero-target although libhero-target.so exists and path given to the linker with -L flag is valid.

To Reproduce

  1. source scripts/hero-z-7045-env.sh
  2. cd hero-openmp-examples/helloworld
  3. make clean all
  4. Build fails

Console output

root@38574fee9dc5:/hero-sdk/hero-openmp-examples/helloworld# make all
arm-linux-gnueabihf-gcc  -O3 -g3 -fopenmp -Wall -I. -I../common -I/hero-sdk/libhero-target/inc    -c -o helloworld.o helloworld.c
arm-linux-gnueabihf-gcc  -O3 -g3 -fopenmp -Wall -I. -I../common -I/hero-sdk/libhero-target/inc  helloworld.o  -L/hero-sdk/libhero-target/lib -lhero-target -o helloworld
/hero-sdk/hero-gcc-toolchain/install/lib/gcc/arm-linux-gnueabihf/7.1.1/accel/riscv32-unknown-elf/../../../../../../riscv32-unknown-elf/bin/ld: cannot find -lhero-target
collect2: error: ld returned 1 exit status
lto-wrapper: fatal error: /hero-sdk/hero-gcc-toolchain/install/libexec/gcc/arm-linux-gnueabihf/7.1.1//accel/riscv32-unknown-elf/mkoffload terminated with signal 11 [Segmentation fault], core dumped
compilation terminated.
/hero-sdk/hero-gcc-toolchain/install/lib/gcc/arm-linux-gnueabihf/7.1.1/../../../../arm-linux-gnueabihf/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
/hero-sdk/hero-openmp-examples/helloworld/../common/default.mk:36: recipe for target 'helloworld' failed
make: *** [helloworld] Error 1

OS and environment information
Output of lsb_release -a:

LSB Version:	core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.6 LTS
Release:	16.04
Codename:	xenial

Output of env:

BOARD=zc706
HOSTNAME=38574fee9dc5
PULP_CURRENT_CONFIG=hero-z-7045@config_file=/hero-sdk/pulp-sdk/configs/json/hero-z-7045.json
HERO_SUPPORT_DIR=/hero-sdk/hero-support
PULP_RISCV_GCC_TOOLCHAIN=/hero-sdk/hero-gcc-toolchain/install
TERM=xterm
PULP_CURRENT_CONFIG_ARGS=platform=hsa
HERO_SDK_DIR=/hero-sdk
HERO_TARGET_PATH=/mnt/storage
LIBGOMP_PLUGIN_PULP_HERO_LDFLAGS=-L/hero-sdk/hero-support/libpulp/lib -lpulp -lstdc++
HERO_PULP_SDK_DIR=/hero-sdk/pulp-sdk
OLDPWD=/hero-sdk/hero-openmp-examples
KERNEL_CROSS_COMPILE=arm-linux-gnueabihf-
PULP_HERO_EXTLDFLAGS=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/hero/hero-z-7045/rt_conf.o /hero-sdk/pulp-sdk/pkg/sdk/dev/install/lib/hero-z-7045/rt/crt0.o -nostartfiles -nostdlib -Wl,--gc-sections -T/hero-sdk/pulp-sdk/pkg/sdk/dev/install/hero/hero-z-7045/test.ld -T/hero-sdk/pulp-sdk/pkg/sdk/dev/install/hero/hero-z-7045/test_config.ld -L/hero-sdk/pulp-sdk/pkg/sdk/dev/install/lib/hero-z-7045 -lgomp -lrt -lrtio -lrt -lhero-target -lvmm -larchi_host -lrt -larchi_host -lgcc -lbench -lm
LD_LIBRARY_PATH=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws/lib:/hero-sdk/hero-gcc-toolchain/install/lib
KERNEL_ARCH=arm
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
PULP_SDK_WS_INSTALL=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws
HERO_TARGET_PATH_DRIVER=/mnt/storage/drivers
HERO_LINUX_WORKSPACE_DIR=/hero-sdk/linux-workspace
[email protected]
PATH=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws/bin:/hero-sdk/hero-gcc-toolchain/install/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PULP_HERO_EXTCFLAGS=-march=rv32imcxpulpv2 -D__riscv__ -DPLATFORM=2 -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/io -I/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include
HERO_TOOLCHAIN_DIR=/hero-sdk/hero-gcc-toolchain
HERO_OMP_EXAMPLES_DIR=/hero-sdk/hero-openmp-examples
PWD=/hero-sdk/hero-openmp-examples/helloworld
PULP_SDK_HOME=/hero-sdk/pulp-sdk/pkg/sdk/dev
KERNEL_DIR=/hero-sdk/linux-workspace/linux-xlnx
HERO_PULP_INC_DIR=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include
HERO_GCC_INSTALL_DIR=/hero-sdk/hero-gcc-toolchain/install
PULP_SDK_INSTALL=/hero-sdk/pulp-sdk/pkg/sdk/dev/install
PLATFORM=2
SHLVL=1
HOME=/root
HERO_TARGET_PATH_LIB=/mnt/storage/libs
LIBGOMP_PLUGIN_PULP_HERO_CPPFLAGS=-O3 -Wall -g2 -shared -fPIC -I/hero-sdk/hero-support/libpulp/inc -I/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/archi/chips/bigpulp -I/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include -DPLATFORM=2
PYTHONPATH=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws/python:/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws/python
HERO_LINUX_KERNEL_DIR=/hero-sdk/linux-workspace/linux-xlnx
HERO_TARGET_PATH_APPS=/mnt/storage/apps
LESSOPEN=| /usr/bin/lesspipe %s
ARCH=arm
PULP_CONFIGS_PATH=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/ws/configs
CROSS_COMPILE=arm-linux-gnueabihf-
HERO_LIBPULP_DIR=/hero-sdk/hero-support/libpulp
LESSCLOSE=/usr/bin/lesspipe %s %s
SDK_TILER_PATH=/hero-sdk/pulp-sdk/pkg/sdk/dev/install/auto-tiler
_=/usr/bin/env

Additional context
I am working in a docker image.

Include problem for omp.h

omp.h is defined both on ARM and bigPULP RTE but when the ARM application is compiled it tries to use the bigPULP one.

HERO Toolchain Artifact

  • Test OS compatibilty for deployed v1.0.0 toolchain
  • Extend builder script
  • Add CI deployment

Buildroot Root Filesystem

I get this error when execute this command : ./generate_fs.sh -j8 to to build the root filesystem.
OS: Ubuntu 18.04

chacl.c:335:12: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
while ((d = readdir64(dir)) != NULL) {
^
chacl.c:337:15: error: dereferencing pointer to incomplete type ‘struct dirent64’
if (strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0)
^~
: recipe for target 'chacl.o' failed
make[3]: *** [chacl.o] Error 1
make[3]: Leaving directory '/home/user/Desktop/hero/zc706/zynqlinux/buildroot/output/build/host-acl-2.2.52/chacl'
include/buildrules:35: recipe for target 'chacl' failed
make[2]: *** [chacl] Error 2
make[2]: Leaving directory '/home/user/Desktop/hero/zc706/zynqlinux/buildroot/output/build/host-acl-2.2.52'
Makefile:47: recipe for target 'default' failed
make[1]: *** [default] Error 2
make[1]: Leaving directory '/home/user/Desktop/hero/zc706/zynqlinux/buildroot/output/build/host-acl-2.2.52'
package/pkg-generic.mk:234: recipe for target '/home/user/Desktop/hero/zc706/zynqlinux/buildroot/output/build/host-acl-2.2.52/.stamp_built' failed
make: *** [/home/user/Desktop/hero/zc706/zynqlinux/buildroot/output/build/host-acl-2.2.52/.stamp_built] Error 2
Copying the root file system image to ../root_file_system/rootfs.cpio.gz
cp: cannot stat 'output/images/rootfs.cpio.gz': No such file or directory
Syncing BusyBox configuration
root@ubuntu:/home/user/Desktop/hero/zc706/zynqlinux/buildroot#

omp.h include error

Fix the `omp.h' include during the host compilation due to conflicting include path.

build failure when hero-z-7045-builder: asking for password

Hi,

I am trying to build HERO SDK but met the following error when run ./hero-z-7045-builder -A command. Do you miss something? Thanks!

sdk:hal:prepare (hero-z-7045@config_file=/home/speedzheng/hero/hero-sdk/pulp-sdk/configs/json/hero-z-7045.json): make header
make: Nothing to be done for 'header'.
Reached EOF with exit status 0

MODULE jtag-bridge:jtag-bridge command checkout
Cloning into '/home/speedzheng/hero/hero-sdk/pulp-sdk/tools/jtag-bridge'...
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:

HERO. PULP SDK environment problem.

I found this issue on fresh cloned repo during the environment setup.

Here the log

capotondi@compute:/tmp/capotondi-scratch/hero-sdk$ ./hero-z-7045-builder -loi
Configuring HERO SDK at: /tmp/capotondi-scratch/hero-sdk
/tmp/capotondi-scratch/hero-sdk/pulp-sdk/pkg/sdk/dev/sourceme.sh: line 4: /tmp/capotondi-scratch/hero-sdk/pulp-sdk/pkg/sdk/dev/env/setup.sh: No such file or directory
Fixed adding make all env after HERO setup.sh during the PULP sdk build

Build Failed HERO-SDK

LSB Version: core-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic

When I try to build HERO-SDK in Ubuntu by using the following command: ./hero-z-7045-builder -A . I get the following message

libtool: link: gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -I/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/src/binutils/binutils/../zlib -g -O2 -static-libstdc++ -static-libgcc -o objcopy objcopy.o not-strip.o rename.o rddbg.o debug.o stabs.o ieee.o rdcoff.o wrstabs.o bucomm.o version.o filemode.o ../bfd/.libs/libbfd.a -L/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/build/arm-linux-gnueabihf/binutils/zlib -lz ../libiberty/libiberty.a -ldl
collect2: error: ld returned 1 exit status
Makefile:816: recipe for target 'objcopy' failed
make[4]: *** [objcopy] Error 1
make[4]: Leaving directory '/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/build/arm-linux-gnueabihf/binutils/binutils'
Makefile:1004: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/build/arm-linux-gnueabihf/binutils/binutils'
Makefile:663: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/build/arm-linux-gnueabihf/binutils/binutils'
Makefile:3611: recipe for target 'all-binutils' failed
make[1]: *** [all-binutils] Error 2
make[1]: Leaving directory '/home/khatatbih/Desktop/HERO/hero-sdk/hero-gcc-toolchain/build/arm-linux-gnueabihf/binutils'
Makefile:850: recipe for target 'all' failed
make: *** [all] Error 2
ERROR: build_arm_toolchain failed, aborting now.

Vivado's version of cmake causes build failure.

Can the build instructions in the README please note that sourcing vivado's settings64.sh in ~/.bashrc or ~/.bash_profile will cause the build to fail at pulp-sdk.
Vivado's version of cmake will be found on $PATH first which is too old and causes breakage without a helpful error message.

I asked about this here: https://pulp-platform.org/community/showthread.php?tid=46

I'd suggest some simple text like this in the section "Build the HERO SDK from the sources":
"Make sure your bash setup does not source Vivado's settings64.sh as this will prevent the build succeeding."

U-Boot

There is a problem when I try to execute U-Boot compile script with the following command :
./compile_loader.sh -j8

/Desktop/hero/zc706/zynqlinux/u-boot-xlnx$ ./compile_loader.sh -j8

  • Executing U-Boot compile script -

Adding kernel scripts to PATH
Comiling U-Boot

configuration written to .config

scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/config.h
CFG u-boot.cfg
GEN include/autoconf.mk.dep
CFG spl/u-boot.cfg
GEN include/autoconf.mk
GEN spl/include/autoconf.mk
CHK include/config/uboot.release
CHK include/generated/timestamp_autogenerated.h
UPD include/generated/timestamp_autogenerated.h
CHK include/generated/version_autogenerated.h
CHK include/generated/generic-asm-offsets.h
CHK include/generated/asm-offsets.h
HOSTCC tools/mkenvimage.o
HOSTCC tools/fit_image.o
HOSTCC tools/image-host.o
HOSTCC tools/lib/rsa/rsa-sign.o
HOSTCC tools/dumpimage.o
HOSTCC tools/mkimage.o
In file included from tools/lib/rsa/rsa-sign.c:1:0:
./tools/../lib/rsa/rsa-sign.c: In function ‘rsa_remove’:
./tools/../lib/rsa/rsa-sign.c:156:2: warning: ‘ERR_remove_thread_state’ is deprecated [-Wdeprecated-declarations]
ERR_remove_thread_state(NULL);
^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/openssl/x509_vfy.h:20:0,
from /usr/include/openssl/x509.h:309,
from /usr/include/openssl/pem.h:17,
from ./tools/../lib/rsa/rsa-sign.c:13,
from tools/lib/rsa/rsa-sign.c:1:
/usr/include/openssl/err.h:247:1: note: declared here
DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *))
^
In file included from tools/lib/rsa/rsa-sign.c:1:0:
./tools/../lib/rsa/rsa-sign.c: In function ‘rsa_sign_with_key’:
./tools/../lib/rsa/rsa-sign.c:213:2: warning: implicit declaration of function ‘EVP_MD_CTX_cleanup’; did you mean ‘EVP_MD_CTX_create’? [-Wimplicit-function-declaration]
EVP_MD_CTX_cleanup(context);
^~~~~~~~~~~~~~~~~~
EVP_MD_CTX_create
./tools/../lib/rsa/rsa-sign.c: In function ‘rsa_get_exponent’:
./tools/../lib/rsa/rsa-sign.c:279:21: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
if (BN_num_bits(key->e) > 64)
^~
scripts/Makefile.host:116: recipe for target 'tools/lib/rsa/rsa-sign.o' failed
make[1]: *** [tools/lib/rsa/rsa-sign.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:1217: recipe for target 'tools' failed
make: *** [tools] Error 2
Copying u-boot to ../sdk/u-boot.elf
cp: cannot stat 'u-boot': No such file or directory

[pulp-sdk] Build fails on `sdk:archi-host`

sdk:archi-host:build (hero-z-7045@config_file=/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/configs/json/hero-z-7045.json): make build install
/home0/alessandro/workspace_PULP/hero/hero-sdk/hero-gcc-toolchain/install/bin/riscv32-unknown-elf-gcc  -march=rv32imcxpulpv2 -D__riscv__  -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/io -I/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include -include /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/cl_config.h    -MMD -MP -c src/arm/phys_addr.c -o /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/archi_host/cl/src/arm/phys_addr.o
/home0/alessandro/workspace_PULP/hero/hero-sdk/hero-gcc-toolchain/install/bin/riscv32-unknown-elf-gcc  -march=rv32imcxpulpv2 -D__riscv__  -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/io -I/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include -include /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/cl_config.h    -MMD -MP -c src/phys_addr.c -o /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/archi_host/cl/src/phys_addr.o
In file included from /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/rt/data/rt_data_bridge.h:42:0,
                 from /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/rt/rt_data.h:152,
                 from /home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/rt/rt_alloc.h:20,
                 from src/phys_addr.c:21:
/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/hal/debug_bridge/debug_bridge.h: In function 'hal_bridge_is_connected':
/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/pkg/sdk/dev/install/include/hal/debug_bridge/debug_bridge.h:46:39: error: 'hal_bridge_t {aka struct <anonymous>}' has no member named 'bridge_connected'
   return *(volatile uint32_t *)&bridge->bridge_connected;
                                       ^~
/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/__rules.mk:57: recipe for target '/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/archi_host/cl/src/phys_addr.o' failed
make: *** [/home0/alessandro/workspace_PULP/hero/hero-sdk/pulp-sdk/build/sdk/archi-host/hero-z-7045/archi_host/cl/src/phys_addr.o] Error 1
Reached EOF with exit status 2
FATAL ERROR: the command 'build' has failed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.