Embedded development / Digital signal processing
The folks working within section5 have a lot of experience in electronics and
signal processing on various platforms, starting from simple discrete
MCU development up to FPGA design and simulation.
Some of our non-commercial projects can be seen in our Tech Blog
Apart from the fun stuff, a few keywords about our current portfolio or stuff we really know well:
- New: High speed Hardware image compression
- JPEG encoder IP core (Xilinx, Lattice in planning)
- FPGA 2D-DCT for x.264 accelerator (Blackfin featured)
- Blackfin based designs, high speed DSP (vision algorithms)
- 'ready to play' DSP camera reference designs ('VisionKit')
- Embedded (uc)Linux, Realtime (Xenomai, ..), Kernel driver development
- FPGA based signal processing, co-simulation with software
- tiny 8051 solutions (Cypress FX2, AX206, etc.)
- MSP430 power management applications
- JTAG debugging and flash programming solutions (Blackfin, ARM, ZPU, MIPS, custom)
Our most used working horse is the Blackfin CPU from Analog
devices, see below.
advantages of this architecture is a complex instruction set, but well
readable assembly code, which allows parallel execution in one clock
cycle inside the pipeline and provides dedicated video processing
instructions, among other extras. Its "System on a chip" functionality
and hybrid architecture makes this CPU an excellent engine for embedded
systems running uClinux or other kernels.
Also, in our opinion, the excellent DMA functionality of this chip makes it unbeaten in its microcontroller domain when it comes to efficient data transmission..
section5 has contributed a complete rewrite of the Blackfin assembler parser for the GNU toolchain in 2004/2005 and implemented the first GNU JTAG debugger for this architecture. Thus, we are proud to say: We do know this chip !
Products and services
ICEbear USB-JTAG adapter
The ICEbear also supports
Boundary Scan on Blackfin and SHARC 21xxx platforms.
- USB 2.0 (1.1) connection
- Flash programming of CFI, SPI based or specific flashes, suitable for bulk production (see below=
- Support for Linux, Windows 2000/NT/XP (32 bit)
- High speed downloads, typical 120 kB/s
- Very reliable timing
- Well suited for developers writing their own kernel
or kernel drivers. Debugger support: GDB, Insight
The ICEbear does not support debugging with the VisualDSP
Read more on the ICEbear product page.
- Flash programmer (Throughput: typical 50kB/s)
- First time CPLD or FPGA programming (JTAG bitbanging,
- Board tests
Bulk programming solution
Based on the ICEbear JTAG adapter, we offer a bulk programming solution for your production environment
when time matters. An embedded Linux PC with Ethernet (100MBit) and two USB ports can program two units simultaneously, see image below. More units can be supported via USB hubs.
An In-Circuit-Tester or production PC communicates with the Embedded Linux PC via TCP/IP and can remotely control programming and status of each unit. The ICEbear adapters can of course run on the production PC directly (Linux and Windows XP/2000 32 bit supported) as well.
Alternatively, one USB port of the embedded PC can be used for automatical programming by using a USB stick containing the flash images
and the programming scripts.
This solution is not provided 'from the box', as it often needs to be customized. Contact us for details and please provide us with an overview about your production environment.
Insight: graphical debugger for
For the 1.0 release of the ICEbear software distribution, the graphical
Insight debugger was adapted to Blackfin.
||Insight is a fully featured variant of the
GNU debugger (gdb) with a built in user interface and quite
Development is supported mainly by Red Hat Inc - see homepage of Insight.
Insight is especially suited for debugging of embedded targets.
- Source code and assembly debugging with various
stepping features, breakpoint per click and various display modes
- Separate windows for variable watching
(local/global), Stack trace, memory dump registers, etc.
- Classical GDB command line interface with native
It is available both as Linux and Windows version as part of the
ICEbear software distribution on the software download page
Find more specific information on how to debug embedded targets in the
documentation of the Embedded
JTAG emulation library
JTAG is a very important feature when it comes to board
testing and first time programming, as well as hardware level
debugging. section5 has developed a library allowing to access the in
circuit emulation mode of the Blackfin hardware.
You may also want to check the Application
Read more about the JTAG blackfin functionality in the PDF of
the presentation given at the Embedded Systems Conference San Francisco
in March 2005, which is found here.
Detailed information: Documentation
libbfemu. Note that this documentation might not be up to date,
please check the ICEbear software distribution for the current version.
uClinux is a Linux variant for non-MMU controllers which is getting increasingly popular, especially on the Blackfin series. With uClinux, you can for instance, build a multimedia system at very little development costs, due to known and existing components.
Find more information about the Blackfin uClinux port and toolchain at http://blackfin.uclinux.org.
section5 has been participating in early development of uClinux and can offer:
- Palette of kernel drivers:
Development of kernel drivers for custom hardware
- PPI high performance DMA buffer queue drivers for line scan applications, etc.
- Drivers for USB FIFOs
- FPGA slave serial
- Various SPI devices (FPGA, ADC, etc)
In our development, we focus on the Blackfin, but we also use XScale and are not afraid to touch other ARM chips featured by the GNU toolchain.
XML Device control library: netpp
A standard task when designing an embedded device is, to remote control
it via a user interface. This can happen via web interface or other
standardized protocols as XMLRPC. However, most of these protocols are
too heavy weight for their target platform. Some hardware may just be
register based and talk via simple interfaces such as I2C. Covering
simple hardware up to complex systems, we have developed a library that
allows a user to create register or property and attribute
specifications of a device in XML. From this, we generate very compact
C code in order to obtain a library knowing the properties of the
system and allowing to remote control it via PC applications. Examples:
The protocol allows accessing of single bits in a register for hardware
prototyping. The code generation chain is set up that way, that you can
also create register definitions in VHDL for your own programmed
hardware. The design flow is then like:
- Remote control an intelligent sensor (SPI) from within a
- Configure and control an Ethernet camera via a proprietary
real time capable UDP protocol from your PC
- Talk to a little MCU controlling various I/Os over a simple
checksummed serial protocol
- Ponder about functionality and property names first
- Define registers for flags, modes and parameters and their
according bit fields
- Map the properties into the low level entities (integer
registers, bit fields, etc.)
- Generate and compile the library with a single 'make'
- Talk to the device using Python scripts or a GUI front end.
Find more on the netpp page.
Blackfin uClinux camera reference designs
Since 2005, we have supported a significant number of customers in getting their uClinux powered data acquisition hardware running - from the first prototype up to maturity for the market. In particular, we can offer a camera framework with the following features:
- Fast onboard processing for line scan applications with no tolerable data loss using improved, modularized v4l2 driver
- Realtime (guaranteed low latency) image processing
- 2D bar code solution (not open source)
- Motion-JPEG video streaming (VGA @20 fps)
- Wireless 802.11 data transmission/video streaming
Update: This reference design has now a name and is described in detail here: VisionKit
VHDL designs and co-simulation
Based on the free GHDL simulator engine, section5 has created some extensions that allow to co-simulate real software interaction with virtual hardware such that the same software runs on the real hardware design as well.
A few example applications:
- JTAG test access port (TAP) for various custom CPU/DSP architectures supported by GDB
- ZPU based SoC (System on Chip) FPGA design for dedicated DSP operations
- Virtual silicon: Simulation of signal processing hardware with I/O stimulation and 'live' data
Find more information:
Since we have developed our own JTAG toolchain, we know very well what
is happening on the hardware. Our expertise thus lies in debugging errors
or occasional dropouts down to the hardware. If you are developing your
own blackfin platform, we can definitely help you with:
We are in close cooperation with core module developers (see Partners page), if you need a
ready made engine for your platform, we can guide you in your decision,
be it Blackfin, ARM, or MSP430 and in general: not too expensive but
powerful enough for your needs:
- Getting your hardware verified, tested (via Emulation or
- Assist you with setting up the automated production chain
(including database interfaces)
- uClinux ports
- Development of drivers for various hardware (Flash chips,
- CAN bus Motor controls
- Blackfin based cameras or intelligent video processing
systems (prototype for demonstration available)
- High speed UDP/TCP stacks
- General device remote control via USB, Ethernet, serial