We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I am using beaglebone which has the processor TI Sitara AM335X. I want to make use of Neon coprcessor for my project, To enable neon, I have to follow these commands. But I can't access these registers ( especially FPEXC) in user mode. I have to enter into privileged mode according to ARM reference manual.
My questions are, Are those commands enough to enable neon? If privileged mode is required, then how to do it? ( I also referred the SWI-software interrupt and SWI handler, which excecute the commands in privileged mode but the complete procedure from user level is not clear). Apart from enabling neon, do I need any other commands/procedures? Please help me to figure it out.
Thank you,
Rakshith Rao.
How to have that privilege? What is the complete procedure of software interrupt? If I write a driver for enabling neon which has those assembly codes, is that fine?
The link you gave has the detail for bare metal. But I am using angstrom os. Doesn't it matter?
I just looked up that distribution and found this
https://groups.google.com/forum/#!topic/beagleboard/hZ39EQr_tyk
from that it looks like there should be no difficulty using the facilities if you just compile and run with the right options. The operating system has the code to enable hard floating point and neon built into it.
Thank you for your help. But in my .config file neon and vfp are enabled. By the way, I am not giving --sysroot option for my application. Am I missing anything there?
Let me get this right, if you write a simple main program that uses floating point and prints the result out and compile it with for instance
export CC="arm-angstrom-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8 --sysroot=/usr/local/oecore-i686/sysroots/cortexa8hf-vfp-neon-angstrom-linux-gnueabi"
as in that discussion, no special use of assembler or anything like that, then the program will fail to run?
Ok. My scenario is, I am using openssl for encryption. The encryptio and decryption take longer time. So I thought I could build openssl for neon(with auto vectorization). The application which makes use of that library is not giving any better performance. So I am suspecting if I am using neon properly. I compiled openssl with all those essential flags.
OpenSSL has NEON support built into it, perhaps you have already got it running properly, which is a bit sad if it is not fast enough for you.
Anyway I think what you should do is check to see if it is all working properly so I did a Google search with 'beaglebone openssl speed' and restricted the search to the last year and got for instance the following along with a number of other responses
ssl - Beaglebone Black OpenSSl crypto acceleration - Super User
It says how about how long the tests should take, if they take much longer there is some problem with setting it up.