GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ValentiWorkLearning/Ne10: An open optimized software library project for the ARM® Architecture

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

287 Commits
287 Commits

Folders and files

NameName
Last commit message
Last commit date
android
android
 
 
circle
circle
 
 
cmake
cmake
 
 
common
common
 
 
doc
doc
 
 
inc
inc
 
 
ios
ios
 
 
modules
modules
 
 
samples
samples
 
 
test
test
 
 
tools
tools
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
GNUlinux_config.cmake
GNUlinux_config.cmake
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
VitisWindows_toolchain.cmake
VitisWindows_toolchain.cmake
 
 
circle.yml
circle.yml
 
 
dco.txt
dco.txt
 
 

Repository files navigation

README

What’s Ne10?

Ne10 is a library of common, useful functions that have been heavily optimised for ARM-based CPUs equipped with NEON SIMD capabilities. It provides consistent, well-tested behaviour, allowing for painless integration into a wide variety of applications. The library currently focuses primarily around math, signal processing, image processing, and physics functions.

Building CircleCI

Out of the box, Ne10 supports the Linux, Android, and iOS platforms. For instructions on building Ne10 for these platforms, please consult the build instructions in building.md. It is possible to use the library on other platforms (or, indeed, “without a platform”), however you may have to fiddle with some of the build configuration files.

Once Ne10 has been built, it can be linked against just like any other C library. To link C code against Ne10, for instance, the compiler must first be aware of Ne10's library and header files — those within build/modules/ and inc/. To do this, these files can be copied to the standard directories used by compilation tools by running make install, or by installing Ne10 from a package manager. Following this, you can simply include Ne10.h in your C code, and ask the compiler to link against the NE10 library (e.g. with -lNE10).

Documentation

Ne10’s official documentation is generated from doxygen annotations in the source code. As such, these documents can be generated locally from the codebase by running doxygen within the doc directory (producing results in doc/html), or viewed remotely as hosted copies available over the Internet.

We also have a handful of carefully prepared sample code snippets in the samples/ directory that outline how Ne10 can be used to accomplish a number of common tasks. These include example programs to perform the FFT, FIR, and matrix multiply operations.

Contributing

Ne10 welcomes and encourages external contributions of any and all forms. If you’ve found a bug or have a suggestion, please don’t hesitate to detail these in the official issue tracker. For those looking to get their hands dirty and contribute code (the best kind of contribution!), please see CONTRIBUTING.md for more details.

Quick Links

  • Official website
  • Source repository
  • Issue tracker
  • Doxygen documentation
  • Coding style guidelines

Call for Use Cases

Find Project Ne10 useful? You can help us justify spending more engineering resources on the project! Please email us, outlining how you are using the project in your applications.

Want us to help cross-promote your product using Ne10 at developer events? We’re also looking for Ne10 use cases to show at conferences and meetups.

Building for ZYNQ on Windows:

mkdir build && cd build
cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="full_file_path/VitisWindows_toolchain.cmake" -DBUILD_DEBUG=0 ..
cmake --build .

Some advice for Zynq uses

Taken from: https://github.com/rubennc91/Ne10_zynq_lib

If you want to make an FFT less than 256 points, maybe you can run the program perfectly, depends on the platform you are implementing. But if you have a problem, you may not have enought "heap" memory. To avoid this problem it is necessart to change the properties of the linker script. On the project, right-click and select "Generate linker script". In this part, you can change the reserved memory for the program. Change the "Heap Size", default is 1KB, then change the size in bits that you need (4096000 = 4MB). Arround 4MB is anought to make an FFT of 8192 points.

With all this, you can run the sample program.

The sample program has some definitions to test all possibilities that the library has.

#define NFFT 128

This define is used to select the number of points for the FFT function.

The following defines are used to select between different FFT configurations.

  • C2C: is used to select between differents input types, it is possible real (0) or complex (1). The output is always complex.
  • NEON: You can select between using the NEON module (1) or not using it (0).
  • FFT: If you need to perform the inverse FFT (Complex inputs, and real outputs), you can modify it with this define.

Obiously if you select C2C=1 the inputs are complex and the output complex too, therefore the iFFT is implemented, but the input is complex and the output too.

#define C2C 	1	// COMPLEX INPUT AND COMPLEX OUTPUT
#define NEON	0	// USING NEON BLOCK
#define FFT	0	// FFT = 0; iFFT = 1;

The final definition is as follows: *SHOW_RESULTS it is used to display the input and output of the FFT test running. *TEST_SAMPLES it is used to select the number of repetitions that the FFT algorithm must execute to obtain the time.

#define SHOW_RESULTS 	0
#define TEST_SAMPLES	1000

Tips when building

https://support.xilinx.com/s/question/0D52E00006hpJQcSAM/undefined-reference-to-pow-despite-linking-to-libm?language=en_US

Vitis IDE:

  • Navigate to Application Properties->ARM v7 gcc linker->Inferred Options->Software Platform Inferred Flags
  • Add the following targets:
-Wl,--start-group,-lxil,-lgcc,-lc,-lm,-lNE10,--end-group
  • Add path to the built artifacts(build/modules) to the linker libary search paths in Vitis

About

An open optimized software library project for the ARM® Architecture

Resources

Readme
License

Contributing

Contributing
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.