What embedded development tool do you want?

Wednesday, December 14th, 2011 by Robert Cravotta

Over the years, embedded development tools seem to deliver more capabilities at lower price points. Over the years, $40,000+ development workstations and $10,000+ in-circuit emulators have given way to tools that are lower in cost and more capable. Compilers can produce production quality code in record compilation times by arming the compilation activity across a networked farm of workstations with available processing bandwidth. IDE’s (integrated development environments) greatly improve the productivity of developers by seamlessly automating the process of switching between editing and debugging software on a workstation and target system. Even stepping through software execution backwards to track down the source of difficult bugs has been possible for several years.

The tools available today make it a good time to be an embedded developer. But can the tools be even better? We are fast approaching the end of one year and the beginning of the next, and this often marks an opportunity to propose your wish items for the department or project budget. When I meet with development tool providers, I always ask what directions they are pushing their future tools development. In this case, I am looking for something that goes beyond faster and more towards assisting the developer with analyzing their system.

One tool capability that I would like to see more of is a simulator/profiler feedback based compiler tool that enables you to quickly explore many different ways to partition your system across multiple processors. Embedded systems have been using multiple processors in the same design for decades, but I think the trend is accelerating to include even more processors (even in the same package) than before to squeeze out costs and energy efficiency as well as to handle increasingly complex operating scenarios.

This partition exploration tool goes beyond those current tools that perform multiple compilations with various compiler switches and presents you with a code size versus performance trade-off. This tool should help developers understand how a particular partitioning approach will or will not affect the performance and robustness of a design. Better yet, the tool would assist in automating how to explore different partitioning approaches so that developers could explore dozens (or more) partitioning implementations instead of the small handful that can be done on today’s tight schedules with an expert effectively doing the analysis by hand. I suspect this type of capability would provide a much needed productivity boost for developers to handle the growing complexity of tomorrow’s applications.

Is there an embedded development tool that lifts your productivity to new heights such that you would recommend to your management that every member of your team had it? Is there a capability you wish your development tools had that isn’t quite available yet? What are the top one to three development tools you would recommend as must-have for embedded developers?


3 Responses to “What embedded development tool do you want?”

  1. Paul A. Clayton says:

    This feature may already be present in existing tools, but it seems that it would be useful to have a software compilation system that could prove the equivalence of a simple, easily understood encoding and a more obscure, highly optimized form. (This would seem to require support for preconditions and the like since many optimizations are dependent on special knowledge that is not expressed in standard C source code.)

    Generating a specification based in the English language which can be used for formal verification is very likely impractical, but generating a correct simple C-like language specification and proving equivalence may be practical.

    Along similar lines libraries and portable code might benefit from a means of providing multiple ‘overloadable’ implementations for which the compiler could prove equivalence and from which the compiler could choose an optimal implementation for a given target use and goals, ISA, processor microarchitecture, and system features. Ideally, the tools could even suggest updates of a variant implementation when a change in the canonical implementation breaks the variant (as well as detecting the breaking), possibly even feeding back to the developer that a specific small change will ‘break’ many variants so that the developer can make a more informed decision about whether the change is worthwhile or an alternative is appropriate. Such a system might make maintaining code with many optimizing variations practical.

    (I am just a thinker not even a programmer so the above might not be practical or useful.)

  2. Hi Robert,

    great article … here’s my answer to your question:

    Code Composer Studio v5.1 is great for all customers using TI products from low power MSP430 up to high performance C6000 multicore architectures. CCS is based on the latest version of Eclipse with no modifications. This allows customers to integrate a wide range of 3rd party plugins and allows upgrades of open source components of CCS. See a introduction video here:


    CToolsLib provides a set of fundamental libraries for the configuration and control of debug and profiling trace modules common to high performance C6000 multicore and OMAP devices. See more details here:


    And there are advanced Emulators that allow you to perform Program Counter Trace which is natively supported in CCS and supplemented by the CToolsLib functionality:


    Kind regards,

    one and zero

  3. B.E. @ TI says:

    Great article and read Robert and have a Happy Holiday!

Leave a Reply