Texas Instruments (TI) recently introduced C6EZFlo, a graphical programming tool for its C6000 and DaVinci DSP families. C6EZFlo is a prototyping tool to help users quickly develop initial software implementations of their applications. In particular, C6EZFlo is designed to help programmers develop initialization, configuration, and framework code for their applications. C6EZFlo generates C code and project files intended to be loaded into TI’s C language Code Composer Studio tool suite for further development.
Graphical programming tools have long been promoted for digital signal processing applications, and indeed block diagrams are a very natural way of expressing much of the functionality of typical DSP applications. Many graphical DSP programming tools have been developed and commercialized over the past 25 years, but very few of these have attracted significant numbers of users. Today the vast majority of DSP application developers use conventional programming languages like C.
While intuitively appealing, graphical programming environments often impose significant constraints that make them difficult to use for complex applications. And indeed, the initial release of TI’s new C6EZFlo suffers from a number of significant limitations.
Perhaps the most significant limitation is that C6EZFlo provides a one-way connection to C language development: The tool generates C code from a C6EZFlo block diagram, but once the C code is modified (as TI expects will be the case for most applications), there is no mechanism to update the block diagram to match the C code. This creates a difficult dilemma. If mid-way through the design, a programmer decides to add a new output or an additional processing thread, the programmer will be faced with two unattractive options: modify the C6EZFlo block diagram and abandon the coding and optimization work done in the C environment, or implement the new output or thread in C, bypassing C6EZFlo, and sacrificing the benefit of C6EZFlo’s abstraction of framework, configuration, and initialization details.
An additional limitation of C6EZFlo is that it is a stand-alone tool, not integrated with the Eclipse-based Code Composer Studio environment. Programmers using C6EZFlo with the latest version of Code Composer Studio (version 4) must employ a special “Import Legacy Project” wizard to bring C6EZFlo designs into Code Composer Studio.
Finally, C6EZFlo is based on a block library, and the utility of the tool is limited by the size of the library. Currently, the library is very modest in size with fewer than 30 math and DSP functions for each supported processor family, plus a handful of I/O functions compatible with TI’s evaluation modules. TI says that it will continue to develop new functions, and is in discussions with some of its software partners about providing blocks for use with the tool. Customers can also develop their own blocks using commands within C6EZFlo, or by modifying C and XML templates from existing functions.
TI deserves credit for a creative idea: Using graphical programming to automate the generation of “housekeeping code,” which while mundane is an essential (and increasingly complex) element of any application. However, the first release of C6EZFlo has rather limited capabilities, and as a result may serve better as a proof of concept than as a mainstream tool. TI’s planned improvements, including expanded block libraries and integration with Code Composer Studio—coupled with support for moving designs back and forth between the C and block diagram environments—could eventually make C6EZFlo a very powerful tool.