[dpdk-users] [dpdk-dev] Issue->Dpdk for arm cortex-a15 compilation

Jan Viktorin viktorin at rehivetech.com
Tue May 16 14:28:08 CEST 2017


On Tue, 16 May 2017 17:25:20 +0530
Jimmy Carter <jimmycarter256 at gmail.com> wrote:

> Hi All
> 
> Attached is the complete env variables file
> I have added RTE_KERNELDIR too
> Also I am  now using gnu-eabi version 5.4.0
> [arm-openwrt-linux-muslgnueabi-gcc (LEDE GCC 5.4.0 r3909-6411a12) 5.4.0]
> But I am still getting the same error
> 
> Currently I am not using buildroot
> Is there any step by step available guide for cross compiling dpdk using
> buildroot for target arm cortex-a15 using some external toolchain.
> I found this http://dpdk.org/ml/archives/announce/2015-October/000066.html

This short tutorial points to some older version of the Buildroot
support. That was before the ARM support has been merged into DPDK.

I've just pushed the branch dpdk-support-v5 (d25ddaadf2) into
the RehiveTech repository. It contains the latest patch sent to the
Buildroot mailing list [1] and some more. By the way, it cleanly
applies to the latest Buildroot master as well.

This branch assumes DPDK 16.04 which is quite old but if you drop the
0001-mk-do-not-enforce-any-specific-ARM-ABI.patch, it might work for newer
DPDK as well.

Steps:

$ git clone https://github.com/RehiveTech/buildroot
$ cd buildroot
$ make qemu_arm_vexpress_defconfig
$ make menuconfig

 * set libc library to glibc
 * enable DPDK in Target packages/Libraries/Networking/DPDK

$ make linux-menuconfig

 * enable UIO, PCI and MSI-X (if applicable)

$ make

I didn't test it myself recently but I belive that it should work well.
Instead of qemu_arm_vexpress_defconfig, you should select your target
board, if applicable.

I hope, it would help you.

Regards
Jan

[1] https://patchwork.ozlabs.org/patch/611383/

> 
> 
> Please advise
> 
> 
> 
> Thanks
> 
> On Tue, May 16, 2017 at 5:14 PM, Neil Horman <nhorman at tuxdriver.com> wrote:
> 
> > On Tue, May 16, 2017 at 12:51:40PM +0200, Jan Viktorin wrote:  
> > > Hello Jimmy,
> > >
> > > On Tue, 16 May 2017 15:38:22 +0530
> > > Jimmy Carter <jimmycarter256 at gmail.com> wrote:
> > >  
> > > > Hi All
> > > >
> > > > I am using dpdk16.11.1 and want to use openwrt external toolchain so  
> > that I  
> > > > can cross compile for arm cortex 15
> > > > neon.(arm_cortex-a15+neon-vfpv4_gcc-5.4.0_musl_eabi)  
> > >
> > > I've never built DPDK with musl-eabi. I don't think that your issue is
> > > related but just note that my builds have always been done with gnueabi.
> > >  
> > > > My target board is Tp link archer C2600.
> > > > I am have assigned these env variables but still getting compilation  
> > error  
> > > >
> > > > export
> > > > STAGING_DIR=/home/xav-101000739/ovslede/source/  
> > staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-5.4.0_musl_eabi  
> > > > export
> > > > PATH=$PATH:/home/xav-101000739/ovslede/source/  
> > staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-5.4.0_musl_eabi/bin  
> > > >
> > > >
> > > > export CROSS=arm-openwrt-linux-
> > > > export DPDK_TARGET=arm-armv7a-linuxapp-gcc
> > > > export DPDK_DIR=$PWD
> > > > export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
> > > > export
> > > > CFLAGS+=-I/home/xav-101000739/ovslede/source/staging_dir/  
> > toolchain-arm_cortex-a15+neon-vfpv4_gcc-5.4.0_musl_eabi  
> > > > export RTE_SDK=$PWD
> > > > export RTE_TARGET=arm-armv7a-linuxapp-gcc
> > > > export DPDK_BUILD_DIR=arm-armv7a-linuxapp-gcc
> > > >  
> > >
> > > There is a patch to Buildroot that can help you with the setup. See:
> > >
> > >  https://patchwork.ozlabs.org/patch/611383/
> > >  
> > > >
> > > > Error:Attached file  
> > >
> > > Your build fails on
> > >
> > > eal_memory.c:92:
> > > /home/xav-101000739/Downloads/dpdk/dpdk-stable-16.11.1/  
> > build/include/rte_lcore.h:56:10: error: unknown type name 'cpu_set_t'  
> > >   typedef cpu_set_t rte_cpuset_t;
> > >
> > > This looks like there is some issue with Linux Kernel headers.
> > >
> > > lib/librte_eal/common/include/rte_lcore.h:
> > >
> > >  53 #if defined(__linux__)
> > >  54         typedef cpu_set_t rte_cpuset_t;
> > >  55 #elif defined(__FreeBSD__)
> > >  56 #include <pthread_np.h>
> > >  57         typedef cpuset_t rte_cpuset_t;
> > >  58 #endif
> > >
> > > Probably, you should set the RTE_KERNELDIR properly.
> > >  
> > I don't think so.  cpu_set_t is most recently defined in
> > /usr/include/bits/shced.h, which is a glibc header.  What version of glibc
> > are
> > you building with?
> >
> > Neil
> >  
> > > >
> > > > Please advise
> > > > Does dpdk have support for openwrt (arm cortex a15)  
> > >
> > > DPDK does not support OpenWRT because (as far as I know) nobody from
> > > the DPDK community is using it in this way. I build DPDK via Buildroot
> > > but this is unsupported by the DPDK upstream.
> > >
> > > I could build DPDK for Cortex-A7, Cortex-A9 and Cortex-A15 in the past.
> > >
> > > I run regular builds of the master branch and I can see no breakage
> > > for the arm-armv7a-linuxapp-gcc configuration.
> > >
> > > Regards
> > > Jan
> > >  
> > > >
> > > > Thanks
> > > > Akshay  
> > >  
> >  



-- 
   Jan Viktorin                  E-mail: Viktorin at RehiveTech.com
   System Architect              Web:    www.RehiveTech.com
   RehiveTech
   Brno, Czech Republic


More information about the users mailing list