ARM® DS-5 is an ideal platform for debugging multithreaded, multiprocess applications on ARM Powered® development boards that run the GNU/Linux operating system. The DE0-Nano-SoC is an ideal reference platform for developing multithreaded, multiprocess applications in Linux user space. Yocto provides an easy to use platform for building a bootable image and ARM® DS-5 easily integrates with the board for efficient debugging. Altera packages a version of ARM DS-5 for the DE0-Nano-SoC.
The following requirements were in place for this project.
- Use course-grained locking strategy. Only lock data.
- Minimize critical sections.
- Fork five processes, all of which are attached to the controlling terminal.
- Create three threads in one of the five processes.
- Two of the threads will simulate packet processing.
- One of the threads will generate packets in a buffer.
- Properly utilize synchronization primitives and mutex locks.
- Maximize concurrency.
- Minimize latency.
- Ensure order of context switching is always random upon execution - i.e. don't control the scheduler.
- Utilize ARM DS-5 for building and debugging the application on the attached de0-Nano-SoC FPGA.
- Use autotools for building a shared library and link against the library with a driver program in DS-5.
- Compile the shared library and driver program using the Linaro GCC ARM-Linux-GNUEABI Hard Float toolchain version 4.8 that is included in the Altera DS-5 download.
- Compile the shared library and test program using the Linaro GCC ARM-Linux-GNUEABI Hard Float toolchain version 5.3 (latest stable from Linaro as of 08/15/16).
- Debug the multiprocess, multithreaded application using both toolchains from DS-5.
- Ensure that all possible errors from calls to pthread functions and other libc functions are properly handled.
Note the DS-5 Settings in the following images. In order to compile the code from Eclipse, a level of familiarity with DS-5 and Eclipse is required.
|DS-5 disassembly / memory analysis - debugging multithreaded, multiprocess applications on ARM Powered® boards|
|DS-5 Debug Configurations - Files|
|DS-5 Debug Configurations - Connection|
|DS-5 Autootols Configure Settings|
|Synchronized Swimming. For a description and overview of Parallel Computing, |
see an Introduction to Parallel Computing at computing.llnl.gov
|DS-5 Toolchain Editor|