Today’s complex and powerful processors and SoCs demand more than just an RTOS and some drivers to get the developer started. A comprehensive and consistent software development environment along with a sample hardware board is increasingly essential for OEMs to start adding value.
BY JOHN CARBONE, EXPRESS LOGIC
Today’s embedded software engineer gets to choose from a plethora of development boards. Many of these boards boast high-performance MCUs like the ARM Cortex-M and MPUs like the Cortex-A series and have ample internal memory, USB host and device ports, Gigabit Ethernet, LCD touchscreens and more. Amazingly, many of these boards are priced below $100, but typically range from $25 – $1,000, depending on what they include.
Equally important, the boards include a host of software support. Developers can find free downloads for just about every piece of software imaginable. Don’t believe me—just look on a board vendors’ web site. Free software options include an RTOS, TCP/IP stack, USB stack, even GUI development tools. And for IDEs, developers can find Eclipse development IDEs, GCC compilers, and other tools. If needed, licenses are available for a more capable IDE as well as a JTAG debugger tailored for their chosen development board.
This comprehensive board support ecosystem is truly amazing, except for one thing—developers still have a lot of work to do before they can start prototyping their application!
The Integration Gap—Lots of Work Still To Be Done
The problem arises when developers begin to mix and match the software options available for their chosen board in order to create a complete “platform.” Developers need a board, RTOS, graphics, USB and Ethernet that all work together on the same board and with the same tools. This foundation lets them write application code that sits on top and freely calls on any one of these components without worrying about unintended interference with the others. Ideally, developers want to do all this while avoiding having to write device drivers for the specific peripherals used in the MCUI/MPU or externally on the board.
Figure 1 illustrates the challenge in achieving this. Even if developers invested the necessary time to solve these issues and get everything running successfully, they still face a real problem. They have a collection of very different products, from different vendors or authors, with different APIs, programming styles, quality of code, and underlying assumptions. If they are lucky enough to have source code for all of these tools, they’ll discover that each code base differs from the others and, navigating through each one, requires its own learning curve.
Beyond these issues of usability, developers also have to examine production-readiness of the software to see if there are free, suitable code samples that can be downloaded for production use? If there are examples, are they supported at all? And, even if the samples/tools are individually supported, each one might be supported by a different company—or by a different community—forcing the development team to work with many different support groups (Figure 1). Obviously, the ideal situation would involve a company that supports the combination of products for a specific board because if there is interference between multiple examples, who do developers contact for support? Design can quickly grind to a halt if their multiple support teams are simply pointing fingers at the other company’s software.
To solve or avoid each of these problems and inconveniences, a single supplier would need to provide and support all the software modules for the chosen development board. In porting each product to the exact board, they develop whatever peripheral drivers are necessary for the tools to be fully functional on that board. In essence, they would provide a unified board support package (BSP) and development environment that supported all of the products. Any resource conflicts would be resolved and the developer would be left with a comprehensive set of software products, fully ported, guaranteed to be interoperable without conflict, and fully supported by one company. The software platform would be truly production ready.
As an answer to these challenges faced by embedded developers worldwide, Express Logic has partnered with Renesas Electronics to develop and launch X-Ware Platform, a comprehensive, target-specific, integrated, development software suite that delivers all of Express Logic’s familiar X-Ware components (ThreadX, NetX, USBX, FileX, GUIX, and TraceX) pre-ported and fully integrated for use on the Renesas Cortex-A9-based, RZ/A1H RSK development board (Figure 2).
A finished platform includes fully integrated software and hardware and no inter-element software incompatibilities or mismatched driver code.
The Renesas RZ/A family is an ARM Cortex A9-based embedded MPU solution that features up to 10MB of embedded SRAM on chip, providing highly optimized system cost and performance for any HMI system. RZ/A is designed to be a hybrid between MCU and MPU, combining the advantages of both, making it ideal for migrating from MCU-based systems towards MPU, while avoiding challenges such as the need for expensive multi-layer PCBs and the overhead of external memory (Figure 3).
The Renesas RZ/A1 RSK is an excellent hardware development board with CPU, LCD touchscreen, USB, and Ethernet.
By integrating its high-quality, widely respected ThreadX RTOS and Middleware components with the Renesas RZ/A1H RSK board, the result is a Platform that simplifies and accelerates IoT development.
A Fast Start for IoT Development
IoT-targeted products typically require an RTOS, network connectivity, graphics displays, a file system, and sometimes USB or other middleware components. Developers working on bringing these products to market quickly, and with competitively superior features, need these software capabilities to be available in a fully integrated, ready-to-use form. Otherwise, developers would have to spend time selecting, acquiring, porting, and integrating multiple elements to form a satisfactory foundation for their application development. A Platform requires much more than just an RTOS kernel. To be complete, a Platform should include robust IPv4/IPv6 TCP/IP networking, and USB host/device support (see “TCP/IP Networking Protocols and USB Classes,” pxx).
HMI Development and Runtime Support
Many IoT products today offer touchscreen LCD displays for user interaction, enabling consumers and operators to see key information, and to instruct the device in an intuitive fashion. Developers therefore need a robust HMI development framework with rapid prototyping and automatic code generation, as well as all required peripheral device drivers, readily accessible from applications via a simple, intuitive API.
Use the Right Tools
A key element of any successful development platform is that it be designed to work with a good compiler, debugger, and IDE suite, such as IAR’s Embedded Workbench IDE. The value of a good IDE should not be underestimated. With tight IDE integration, a Platform benefits from RTOS-aware debugging support and a fully configured project structure, eliminating the need for developers to adapt software from one tool to another. Such a Platform enables rapid prototyping, speeding internal review and customer sampling. By minimizing integration and porting, a Platform shortens time to market and reduces risk. And of course, a Platform must begin with an appropriate development board, such as the Renesas Cortex-A9, RZ/A1-based Renesas RSK. Coupled with such a board and IDE, a software Platform can deliver all of the technologies required to create real-time, networked, connected, HMI-driven products for the IoT, so that developers can focus on their domain expertise. And by using a custom-constructed Platform for a specific development board, OEMs avoid re-inventing existing foundation technology and can invest their engineering development time in producing fully supportable, fully integrated, easy-to-use IoT systems.
With this kind of integrated Platform, developers are not slowed down by component selection, driver development, product integration, optimization, and the challenge of dealing with multivendor support. An integrated, developer-ready Platform eliminates all of that by knitting the entire RTOS, middleware, and IDE solution together, right down to optimized drivers and boot code. Developers can focus on their proprietary product attributes and not waste time reinventing the wheel.
Reference Design Projects for a Fast Start
Developers love to start with working examples, reference designs, for particular functionality. Rather than start from scratch and struggle with all the setup and initialization required to get any board and C program ready to run, it’s far more efficient to work from an existing reference point that is known to work correctly, and build the application from there. To satisfy this developer benefit, a Platform should include a number of reference design projects, provided for evaluation and product development. These example projects should illustrate the use of each hardware and software component individually, as well as in combination. These examples will help ensure that IoT developers have a head start on incorporating technologies such as a graphical user interface with high-speed networking, USB, and file management within a real-time system. These reference projects might include:
• RTOS Kernel, showing scheduling, interrupt processing, message passing, synchronization, and other kernel services;
• Event Trace, showing exactly what the application threads were doing at any point in time over a period of operation;
• IPv4/IPv6 Ping, enabling quick verification of correct IPv4/IPv6 operation;
• IPv4/IPv6 TCP/UDP Throughput, showing measured performance of both TCP and UDP data packet transfer throughput over an IPv4/IPv6 network;
• USB Host Mass Storage, showing an example of system operation as a host to a USB flash memory stick;
• USB Device Mass Storage, showing an example of system operation as a mass storage device, being accessed by a host PC;
• USB Device CDC/ACM, showing character echo from a simulated modem connected
to a PC;
• RAM-disk, showing a file system reading/writing a target RAM-based file system;
• SD Card, showing an example of access of an SD card on the target device;
• GUI Thermometer, showing a simple GUI with 2 graphic buttons, that simulates the operation of a Thermometer;
• GUI Medical, a tri-screen, muti-tab demo, that illustrates a GUI display with sliders, buttons, text, animation, list scrolling, and more;
• GUI Weather, a multi-screen example of imported graphics, animation, and buttons, simulating a weather forecast and thermostat station;
• Multifunction, combining RTOS, File System, Networking, USB, and GUI technologies in a comprehensive example;
All reference design projects should run out-of-the-box on the target board and include full application source code. Developers can start working on their applications immediately, rather than spending time on configuration, porting, and integration before meaningful work can even begin.
San Diego, CA