Software development tools and several example designs are already installed on the SD Card that comes with the Atlas-SoC evaluation board. You can begin immediately by using the Atlas-SoC board as a remote development system via SSH or VNC. For serious development we recommend you download and install the appropriate tool chain on a PC or workstation; installation instructions are covered in the Develop page.
Developing on the Atlas-SoC Board (via SSH or VNC)
There are two methods for accessing the tools and design examples on the Atlas-SoC board. In both cases you will need to connect the USB cable between your PC and the USB port of the Atlas-SoC board.
Secure Shell (SSH)
Terminal program:
PuTTY:
Get a free version of PuTTY.
Download
Virtual Network Computing (VNC)
All host OS:
Get a free version of TightVNC software.
Download
General Purpose I/O
Example Programs
There are three example directories that contain examples and instructions for interacting with the GPIO resources on the Atlas-SoC board using the gpio framework provided by the Linux environment.
raw-gpio
A script and two C programs demonstrate how to programmatically detect the state of the KEY0 push button on the Atlas board. The script and one C program simply read the state, output it and exit, the second C program enables the interrupt functionality for the GPIO and waits for the push button press to generate the interrupt that it waits for.
gpio-keys
A script and two C programs demonstrate how to programmatically detect the input events generated by the SW0, SW1, SW2 and SW3 switches on the Atlas-SoC board. The script and one C program simply report the input events as they are detected, the second C program adds a call to the ioctl() function to read the current state of all four switches as each input event is processed.
gpio-leds
A script and a C program demonstrate how to programmatically control the LEDS on the Atlas-SoC board.
Tutorials
The README files in each of the example folders contain detailed instructions, sample scripts and functions for interacting with the board.
If you are using SSH, it is handy to have two terminals open to the same example directory.
If you are using a VNC client:
Build Scripts
Scripts are provided to build the example applications.
Sandbox Directory
The sandbox directory contains source files, scripts, and instructions you can review, run, modify, and recompile the example designs. It also contains a tar ball copy of the entire sandbox contents so they can be restored if needed.
/examples/gpio
├── sandbox
│ ├── gpio-keys
│ │ ├── build_watch_switch_events_ioctl.sh
│ │ ├── build_watch_switch_events.sh
│ │ ├── README_gpio-keys.txt
│ │ ├── watch_switch_events.c
│ │ ├── watch_switch_events_ioctl.c
│ │ └── watch_switch_events.sh
│ ├── gpio-leds
│ │ ├── build_toggle_fpga_leds.sh
│ │ ├── README_gpio-leds.txt
│ │ ├── toggle_fpga_leds.c
│ │ └── toggle_fpga_leds.sh
│ ├── raw-gpio
│ │ ├── build_poll_KEY0_pb_state.sh
│ │ ├── build_show_KEY0_pb_state.sh
│ │ ├── poll_KEY0_pb_state.c
│ │ ├── README_gpio.txt
│ │ ├── show_KEY0_pb_state.c
│ │ └── show_KEY0_pb_state.sh
│ ├── COPYING
│ └── README_first.txt
└── gpio_sandbox.tgz
Accelerometer
Example Programs
Each of the examples below demonstrate how to interact with the Analog Devices ADXL345 Input 3-Axis Digital
Accelerometer Linux driver deployed on the Atlas-SoC software environment.
adxl_calibrate.sh
Shows how to calibrate the accelerometer.
tap_detect.c
Demonstrates how to detect the tap events that the accelerometer produces.
watch_adxl.c
Shows how to interact with the sysfs files and the input event node provided by the adxl34x driver.
Tutorials
The README_SANDBOX.txt file contains detailed instructions. scripts and functions for interacting with the board.
If you are using SSH, it is handy to have two terminals open to the same example directory.
If you are using a VNC client:
Build Scripts
Scripts are provided to build and run the applications.
Building the applications
Sandbox Directory
The sandbox directory contains source files, scripts and documentation you can review, run, modify, and recompile as you wish. It also contains a tar ball which is a copy of the entire sandbox contents so they can be restored if needed.
/examples/adxl
├── bin
│ └── pov_demo
├── sandbox
│ ├── adxl_calibrate.sh
│ ├── build_tap_detect.sh
│ ├── build_watch_adxl.sh
│ ├── COPYING
│ ├── README_SANDBOX.txt
│ ├── tap_detect.c
│ └── watch_adxl.c
├── src
│ ├── build_pov_demo.sh
│ ├── COPYING
│ ├── pov_demo.c
│ └── README_SRC.txt
├── adxl_sandbox.tgz
└── adxl_src.tgz
Fast Fourier Transform Hardware Accelerator
Example Programs
There are two example programs for the FFT application; one uses the ARM CPU & NEON co-processor to perform the FFT calculation, and the other uses the FFT hardware in the FPGA. There are many more variants of these examples, using different data sizes, and data sources (FFT RAM vs. CPU cache) in the src directory. There are also scripts for generating waveform plots of from the results data if you wish to experiment further.
neon32_256.c
This program performs the FFT operation using the ARM CPU and NEON co-processor using data stored on the SD Card.
ffftdma_256.c
This program performs the FFT operation using the hardware accelerator and DMAs inside the FPGA using data stored on the SD Card. The input and output data pass through the Acceleration Coherency Port (ACP) of the processor's L2 cache.
Please see the README files in the sandbox directory for more information.
Tutorials
The README_SANDBOX.txt file contains detailed instructions. scripts and functions for interacting with the board.
If you are using SSH, it is handy to have two terminals open to the same example directory.
If you are using a VNC client:
Build Scripts and Related C code
Scripts are provided to build the applications, generate sample data, and prepare results to be displayed using tools like GNU Plot.
Building the applications
Generate Sample Data
Prepare Results For Display
Sandbox Directory
The sandbox directory contains source files, scripts and documentation you can review, run, modify, and recompile as you wish. It also contains a tar ball which is a copy of the entire sandbox contents so they can be restored if needed.
/examples/fft
├── bin
│ ├── fft.tgz
│ ├── README_TARGET.TXT
│ └── setup_target_fft_env.sh
├── sandbox
│ ├── clean_all.sh
│ ├── COPYING
│ ├── create_real_short_sine32.c
│ ├── create_real_short_square32.c
│ ├── create_real_short_triangle32.c
│ ├── duplicate_x8.sh
│ ├── fftdma_256.c
│ ├── ne10cpx_long_to_text.c
│ ├── Ne10-master.zip
│ ├── neon32_256.c
│ ├── overhead.c
│ ├── README_SANDBOX_BUILD.TXT
│ ├── README_SANDBOX.TXT
│ ├── real_short_to_ne10cpx_long.c
│ ├── real_short_to_ne10cpx_short.c
│ ├── sandbox_build_all.sh
│ ├── sandbox_create_input_waveforms.sh
│ ├── target_build_app.sh
│ ├── target_build_lib.sh
│ └── target_build_ne10.sh
├── src
│ ├── images
│ │ ├── create_gnuplot_sine_256.gnu
│ │ ├── create_gnuplot_sine_256x32.gnu
│ │ ├── create_gnuplot_sine_4096.gnu
│ │ ├── create_gnuplot_squares_256.gnu
│ │ ├── create_gnuplot_squares_256x32.gnu
│ │ ├── create_gnuplot_squares_4096.gnu
│ │ ├── create_gnuplot_triangle_256.gnu
│ │ ├── create_gnuplot_triangle_256x32.gnu
│ │ ├── create_gnuplot_triangle_4096.gnu
│ │ ├── create_montage_sine_256.sh
│ │ ├── create_montage_sine_256x32.sh
│ │ ├── create_montage_sine_4096.sh
│ │ ├── create_montage_squares_256.sh
│ │ ├── create_montage_squares_256x32.sh
│ │ ├── create_montage_squares_4096.sh
│ │ ├── create_montage_triangle_256.sh
│ │ ├── create_montage_triangle_256x32.sh
│ │ └── create_montage_triangle_4096.sh
│ ├── archive_for_target.sh
│ ├── c16_256.c
│ ├── c16_256x32.c
│ ├── c16_256x32x128.c
│ ├── c16_4096.c
│ ├── c32_256.c
│ ├── c32_256x32.c
│ ├── c32_256x32x128.c
│ ├── c32_4096.c
│ ├── clean_all.sh
│ ├── COPYING
│ ├── create_input_waveforms.sh
│ ├── create_real_short_sine32.c
│ ├── create_real_short_square32.c
│ ├── create_real_short_triangle32.c
│ ├── duplicate_x128.sh
│ ├── duplicate_x32.sh
│ ├── duplicate_x8.sh
│ ├── fft_256.c
│ ├── fft_256x32.c
│ ├── fft_256x32x128.c
│ ├── fft_4096.c
│ ├── fftdma_256.c
│ ├── fftdma_256x32.c
│ ├── fftdma_256x32x128.c
│ ├── fftdma_4096.c
│ ├── ne10cpx_long_to_text.c
│ ├── ne10cpx_short_to_text.c
│ ├── Ne10-master.zip
│ ├── neon16_256.c
│ ├── neon16_256x32.c
│ ├── neon16_256x32x128.c
│ ├── neon16_4096.c
│ ├── neon32_256.c
│ ├── neon32_256x32.c
│ ├── neon32_256x32x128.c
│ ├── neon32_4096.c
│ ├── overhead.c
│ ├── README_TARGET_BUILD.TXT
│ ├── README_TARGET.TXT
│ ├── real_short_to_ne10cpx_long.c
│ ├── real_short_to_ne10cpx_short.c
│ ├── run_all.sh
│ ├── run_fft_256.sh
│ ├── run_fft_256x32.sh
│ ├── run_fft_256x32x128.sh
│ ├── run_fft_4096.sh
│ ├── run_stream_256x32x128.sh
│ ├── setup_target_fft_env.sh
│ ├── stream_fpga_256x32x128.c
│ ├── stream_neon32_256x32x128.c
│ ├── stream_raw_256x32x128.c
│ ├── target_build_all.sh
│ ├── target_build_app.sh
│ ├── target_build_lib.sh
│ └── target_build_ne10.sh
├── fft_sandbox.tgz
└── fft_src.tgz