I was originally going to examine Analog Devices's Blackfin kits in the context of Labview given some neat integration between the two but I also wanted to present the boards and Analog Device's tool suite as well. Instead of generating a tremendously large article I split it up the articles so you will have to read the next one to hear more about National Instrument's Labview can be used to generate embedded applications for the Blackfin. The graphical programming environment is integrated with the VisualDSP++ IDE that most Blackfin developers are used to.
The two kits I examined include the ADSP-BF537 STAMP Board and the Multimedia Starter Kit with a BF561 EZ-Kit Lite that bundles the Blackfin USB-LAN EZ-Extender Daughter Board and Blackfin A-V EZ-Extender. The STAMP is a great platform for general DSP application development. It supports the National Instruments Educational Laboratory Virtual Instrumentation Suite (ELVIS).
Blackfin ADSP-BF537 STAMP
Analog Device's ADSP-BF537 STAMP board sports a 500MHz ADSP-BF537 Blackfin processor along with 64Mbytes of SDRAM and 4Mbytes of flash memory. That's plenty of capacity for a wide range of applications.
The board (Fig. 1) brings out all the Blackfin peripherals including SPI, two-wire interface (TWI, aka I2C), IrDA, SPORT0 and SPORT1, timers, PPI (general purpose parallel high speed interface with glueless TFT flat panel support) and an RS232 serial interface. Headers or connectors are provided for these interfaces. Drivers for the 10/100 Ethernet interface and CAN (Controller Area Network) 2.0B interface are provided as well.
There are a few undedicated push buttons and half a dozen LEDs that can be driven by the Blackfin. A host of jumpers and switches are available to customize the I/O on the board. The ELVIS bus connection provides access to additional peripheral interfaces. There are also three headers on the bottom of the board that accommodate Analog Device's EZ peripheral boards like the Blackfin A-V EZ-Extender that we take a look at with the Multimedia Kit.
The kit comes with cables including USB and Ethernet cables. A Koss headset is included as well since there are audio jacks and sample software for audio applications.
The JTAG interface can be used for debugging and flash programming although it is also possible to utilize the U-Boot bootloader as well. This approach is suitable for use with the uClinux (EiED Online>> The Penguin Rides A Blackfin, ED Online ID 10199) instead of using VisualDSP++. The uClinux development can be done using open source GNU tools running on a range of hosts from Linux to Windows. Debugging is also possible using the USB interface. This tends to be the primary method since a JTAG emulator is not included.
This time around I used VisualDSP++ and National Instrument's LabView. The latter will be covered in a forthcoming article.
The kit comes with most of its documentation on CD but there are some very nice starter manuals. These outline the hardware and VisualDSP++ support. The latter supports a Blackfin simulator and a free eval download of VisualDSP++ is available at Analog Device's website.
Software and hardware installation took less than half an hour. I then followed the documentation to walk through the various demo applications. The application source code is provided so the demos go quickly. They also introduce you to some of the more interesting aspects of VisualDSP++ like the plot window. They even get into some more advanced topics such as using the profiler to show the impact of the memory hierarchy (the Blackfin has faster internal memory).
The demos address many of the peripherals as well. The Ethernet support is highlighted with TCP/IP support. This is also tied in with some audio support with a demo that uses the headphones and input from a PC with volume control via Ethernet. It is actually quite impressive after just unpacking the system. The volume control is actually a multithreaded application so the documentation shows how to trace thread messages.
Checking out the board takes an afternoon at which point you can check out some of the additional samples and application notes on the Internet or get started on your own application. The overview addresses primarily the tools and interfaces versus the Blackfin itself. Still, there is a hoard of codecs and other source code that can significantly simplify application creation while still taking advantage of the Blackfin's DSP roots.
Blackfin ADSP-BF561 Multimedia Development Kit
ADSP-BF561 multimedia kit is a step up from the STAMP. It is designed for audio and video support out of the box whereas the STAMP is primarily an audio or system control platform unless you add more hardware.
The multimedia kit uses a BF561 Blackfin processor on the ADSP-BF561 (Fig. 2). It also has 64Mbytes of SDRAM plus 8Mbytes of flash memory (larger than the STAMP). It does not have the ELVIS expansion connector like the STAMP but it does have the EZ Extender headers on the bottom of the board (Fig. 3).
The ADSP-BF561 is designed to handle audio and video multimedia support. There is an AD1836 multichannel 96KHz audio codec with stereo audio jacks, an ADV7183A advanced 10-bit video decoder with composite (CVBS), differential component (YUV) or S video (Y/C) input, and an ADV7179 chip scale NTSC/PAL video encoder with RCA jacks for the same complement of video output.
There are four undedicated push buttons and 16 LEDs. There is a JTAG header and a connector for an SPort interface. The board lacks the other headers found on the STAMP although the interfaces are available via the EZ Extender headers. This makes the ADSP-BF561 more suitable for its intended target: multimedia applications. The STAMP is more suitable for systems that require more connections between the Blackfin and user supplied peripherals.
Alone, the ADSP-BF561 offers significant multimedia support but the kit also includes a pair of EZ-Extender cards. These are the Blackfin A-V EZ-Extender (Fig. 4) and the USB-LAN EZ-Extender boards. They plug into the bottom of the ADSP-BF561 (Fig. 5). Each board has another set of headers so multiple boards can be stacked on top of each other although typically each one will be different.
The A-V EZ-Extender includes an AD1836 96 kHz audio codec, an ADV7179 video encoder, and an ADV7183B video decoder. There are connections for camera modules from Micron, OmniVision, and Kodak plus connections for a flat panel display. Drivers are included for the NEC NL644BC33, Micron MT9V002, and OmniVision OV7x48 modules. This board improves the video performance of the system in addition to providing more device connections.
The Blackfin USB-LAN EZ-Extender adds another Ethernet interface with an external SMSC LAN 91C111 chip. It also adds a USB 2.0 interface using PLX Technology's Netchip 2272 device.
The out of box experience with the ADSP-BF561 is similar to the STAMP but more interesting because of the range of samples provided. It is handy to have some video sinks and sources and even more interesting if you have a camera module handy.
The ADSP-BF561 comes with VisualDSP++ and the Blackfin SDK (software development kit). After installing the software I was able to follow the manual as it stepped through the tutorial. The big difference is the addition of a larger number of sample projects targeted at multimedia interfaces. There is also a very large block of codecs and algorithms that can be used in your own applications or that are used by the sample applications. There is a video input-LCD output if you happen to have the right hardware since an LCD panel is not part of the package. Other sample applications utilize the video outputs that work with standard monitors or television sets. Note, the board does not drive VGA monitors directly.
The kit does not require extensive multimedia algorithm understanding to run through the demos but you are likely to hit a major hurdle when developing your own applications if you do not have the proper background. All the tools are there but it takes some experience to know which to use. The platform is an excellent learning tool but additional training or online classes are definitely worth investigating if you are new to this application area.
Crosscore Development Tools
VisualDSP++ (Fig. 6) is the tool of choice for many Blackfin developers with uClinux and GNU tools addressing a significant block of developers. Open source tools like Eclipse offer a sophisticated development base but VisualDSP++ offers many features that make it preferable depending upon the type of application and the amount of tuning you require.
VisualDSP++ runs on Windows XP or 2000. It supports the range of Analog Devices' DSPs including the Blackfin. The versions included with the kits are designed to work only with the kits. You need to upgrade to the full version to gain access to other platforms.
The IDE supports C and C++. It also handles Analog Devices' module VisualDSP++ Kernel (VDK) that supports deterministic multitasking as well as multiprocessor messaging capabilities. This is especially handy for multiple core development as is the Background Telemetry Channel (BTC) support. BTC supports data streaming capability and provides a way to get a range of information into the Blackfin.
You won't find any surprises in the user interface. It is the usual multi-paned window environment that is easy to get utilize. As with most advanced IDEs it has a color-coding editor and source code management support. VisualDSP++ is integrated with a range of third party plug-ins although I didn't get a chance to check any of those out.
Where VisualDSP++ does differ from many other IDEs is in the DSP-specific features and enhancements to the tool chain like Profile-Guided Optimization (PGO). This is a very useful feature that requires runtime profile data that is fed back into the compiler, under programmer control, to improve code optimization. It is not hard to use although moving past the defaults takes a little insight into the optimizations and the DSP architecture. Still, if you are tuning your application at this level then the time to understand this and make the appropriate choices is well worth the effort.
Profiling can help reduce execution time so the system can run at a slower clock rate thereby saving power in mobile applications or it can let the system crank out even more information for a given wattage. The Instruction Level Energy Estimation (ILEE) support can help in this task as well. VisualDSP++ also supports statistical as well as linear (complete) profiling. The former samples the processor's operation at random intervals using non-intrusive JTAG access. It has significantly less impact than linear profiling but it is designed for evaluating overall performance over time. Linear profiling is better for fine tuning smaller pieces of code.
The debugging and scripting support is impressive. Like PGO, it takes a little investigation to see how the features work but the payoff is the ability to bring these tools to bear on those hard to solve bugs. The scripting also works interact with external applications so it is possible to automate testing and more quickly work with externally generated or processed data.
The debugging interface goes beyond the basic breakpoints and single stepping with graphical interfaces for displaying data as graphs as well as providing insights into low level timing. Effective pipelining and memory timing are key to developing highly efficient algorithms and VisualDSP++ provides this information. Most basic IDE tools do not drop to this level.
Developers familiar with any graphical IDE will be quite comfortable with VisualDSP++. Experts will revel in the plethora of tools, codecs and other features Analog Devices' wraps around VisualDSP++ to support its processors. It is a relatively easy package to use effectively but like most sophisticated packages it will take awhile to master the range of features.