Compile Error on AM335x_PRU_BeagleBone examples - vfp mismatch

Hi Forum,

I am attempting to learn to use the PRU on the BBB. I have ubuntu-armhf 3.8.13-bone30 kernel with gcc-armhf 3.8.13-bone30 compiler installed.

I am following the instructions from ECE497 BeagleBone PRU at
http://elinux.org/ECE497_BeagleBone_PRU#Building_and_Running_the_GPIO_PWM_PRU_Example

However, when I try to compile the example I get an error message about VFP. My system is reported as “soft”.

ubuntu@ubuntu-armhf:~$ gcc -print-multi-lib
.;
sf;@mfloat-abi=soft

What is the problem and what should I do to resolve it?

Thanks

Stuart

ubuntu@ubuntu-armhf:~$ git clone git://github.com/millerap/AM335x_PRU_BeagleBoneCloning into ‘AM335x_PRU_BeagleBone’…
remote: Reusing existing pack: 111, done.
remote: Total 111 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (111/111), 248.41 KiB | 131.00 KiB/s, done.
Resolving deltas: 100% (34/34), done.
Checking connectivity… done

ubuntu@ubuntu-armhf:~$ cd AM335x_PRU_BeagleBone/GPIO_PWM_PRU/interface
ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU/interface$ export CROSS_COMPILE=""
ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU/interface$ make
gcc -I. -Wall -I…/include -c -g -O0 -D__DEBUG -o debug/prussdrv.o prussdrv.c
ar rc …/lib/libprussdrvd.a debug/prussdrv.o

ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU/interface$ cd …/utils/pasm_source
ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU/utils/pasm_source$ ./linuxbuild

ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU/utils/pasm_source$ cd …/…/
ubuntu@ubuntu-armhf:~/AM335x_PRU_BeagleBone/GPIO_PWM_PRU$ make CROSS_COMPILE=""

gcc -Wall -I./include -D__DEBUG -O2 -mtune=cortex-a8 -march=armv7-a -o bin/blinker obj/blinker.o -L./lib -lprussdrv -lpthread
/usr/bin/ld: error: bin/blinker uses VFP register arguments, obj/blinker.o does not
/usr/bin/ld: failed to merge target specific data of file obj/blinker.o
/usr/bin/ld: error: bin/blinker uses VFP register arguments, ./lib/libprussdrv.a(prussdrv.o) does not
/usr/bin/ld: failed to merge target specific data of file ./lib/libprussdrv.a(prussdrv.o)
collect2: error: ld returned 1 exit status
make: *** [bin/blinker] Error 1

Hi, did you solve this trouble? I’m having the same problem and cant imagine what is the problem (I’m learning about PRU so my knowledge about this is near 0).

Thank you

i had a similar error and ended up doing “make clean && make” in the libpruss folder.
i had copied the folder from an older beagle that had the angstrom distribution to one with the debian image. they seem not to use the same things here and gcc seems to do a lot of magic when compiling to figure out the environment of the system.