For RoweBots, satisfied customers during embedded software design and development are a primary concern. We want you to be successful with your projects so we can be successful. For this reason, we will insist on a clear scope for a given node, through the embedded requirements documentation for the node. The goal of this approach is to eliminate rework and deliver what the marketing group and customers want.
Embedded Software Design and Development Overview
RoweBots does two kinds of embedded software design. The primary work that is done is deeply embedded and utilizes RoweBots Unison embedded operating system or RTOS and the DSPnano embedded operating system. These systems are microcontroller (MCU), microprocessor (MPU), digital signal processor (DSP), digital signal controller (DSC) and FPGA based. They are generally part of a larger machine to machine (M2M) communications system, although they could be stand alone devices for a broad set of applications. Typical applications are sensors, gateways, actuators and other embedded devices.
The second part of the embedded software design and development work that is done is directly related to the larger server side control of these devices. This is not embedded software for the most part but a collection of databases, web servers and data exchange components that support the machine to machine (M2M) system. The features of these servers tends to be things like database storage, archiving data, managing remote devices, field service, billing and the other parts of the application.
For both types of systems there is two embedded software design and development approachs. The first is a more traditional waterfall method using object oriented design and the second is agile development. Each has its advantages. Both approaches start with the overall embedded system requirements document and the node specific system requirements documents. The node specific document must clearly state which features are hardware and which are software.
Agile Embedded Software Design and Development
Embedded Software Design and Development using the Agile method really assumes that the prototype becomes the product when the time or money runs out. The general idea here is to prototype for a day and then revise the plan each day as more information is available about what the highest value additions would be. The project stops when the money or time run out.
Agile development is a good approach when well executed because it is good at providing visability into the system, proving feedback on a consistent basis and it recognizes that the time and resources are limited so it focuses on getting the best result given the contraints. A diagram below shows one model of the process.
Object Oriented Embedded Software Design and Development
The second approach taken uses more of an object oriented design approach and some combination of agile and waterfall development. There are many reasons for this but part of the reason is that there is much more software reuse than we had many years ago. Today, there is a greater focus on modification and adaptation of existing software than on greenfield development. This modification is high suitable to agile development. At the same time, testing and integrating the system in parts and then in the whole favors a waterfall model because testing can be more complete.
Actor models are popular in Object Oriented Embedded Software Design and Development. Using actor models (or homomorphic programming) users visualize the interaction of objects either locally or across the network as people that interact, passing information between them and synchronizing and processing information as required. This approach is ideal for multi-threaded systems which operate as small embedded systems and also map exceptionally well into systems that have machine to machine (M2M) capabilities and talk across local wireless or wide area Internet or cell networks.
Project Development Model
Another key issue is the type of cooperation between the parties. Depending on the type of interaction different software development approaches are better. For example, if the specifications are clear and static, then a time and materials based fixed price is possible. If an agile approach is taken, time and materials billing is required. If RoweBots undertakes the project, the customer must decide on the approach - a clear specification up front or an agile approach which can only be time and materials.
|Client needs||Model of operation|
|Clear and static specifications||Project-based plan|
|Tight control with adequate supervision resources||Direct supervision model|
|Few supervisory resources and/or minimal project knowledge||RoweBots team leader solution|
Embedded Software Testing
Software testing costs are often under estimated. Where ever possible RoweBots utilizes automated testing with regression capabilities. We also try to get feedback during development so that the algorithms used are tested thoroughly and the validation of the system aligns with the original specifications. Examples of our testing approaches include the use of standards throughout and then testing using standards based test suites - POSIX test suites for example. This eliminates many issues and a great deal of development of test capabilities.
Embedded Software Design and Development Summary
- ● Embedded software design and development services for a broad set of devices are provided.
- ● The devices range from stand alone intelligent items to full blown integrated machine to machine (M2M) communicatons systems with maintenance, billing and distributed applications serving large populations.
- ● Full life cycle support.
- ● End to end service - from ideas to finished products.
- ● Systems engineering background and a systems oriented group that delivers quality workin products that fit budget and time constraints.
- ● Highly educated and proven team.
- ● Microcontroller (MCU), Microprocessor (MPU), Digital Signal Processor (DSP), Digital Signal Controller (DSC), and FPGA focus for embedded hardware.
- ● Multiple customer interaction models to fit user needs.
- ● Structured, documented and proven project management and software development processes which are FDA approval ready.
- ● Rigorous source code control and software testing.
- ● Embedded System Software Design and Development Specialists.
Embedded Software Design and Modeling Approaches
The various methods used for the overall embedded systems engineering design can also be used for embedded software design and development. These models can be used for a variety of things including allocation of software modules to nodes, decomposition with high cohesion and low coupling, performance estimation and more. The appropriate models are:
- ● Object oriented design and actor models or homomorphic programming complete with scenarios and design templates
- ● UML
- ● Cocomo
- ● Function points
- ● Historical analysis or Analogy
- ● Expert estimates
- ● SLIM
- ● State machines
- ● Petri nets and colored petri nets
- ● Cut Set Function Allocation
- ● Simulation
- ● Throughput models
- ● Graph theory
- ● Complexity theory
- ● Catastrophe models
- ● Fuzzy logic
- ● Neural networks
- ● Markov and Bayesian Models
These models can capture the key embedded software design issues and provide a deeper understanding of design tradeoffs. They can also provide good insight into the maintainability of the software and how design changes in the future will affect the system architecture. Note that for the most part, these approaches are language independent.
Embedded Software Design and Development Languages
There is two separate types of software development and design that we generally do. Some is done for the cloud services side of machine to machine communication systems and the other is done for the deeply embedded sensors and secure gateways.
The languages of choice for the embedded sotware design are C, C++, assembler only if necessary, Lua and Java. There is a big size constraint in the typical microcontroller, microprocessor, digital signal processor, digital signal controller and FPGA target systems and as a result altneratives like Phython are not so useful. Test languages might also be used but in general, the focus on regression testing and using industry standards is the preferred approach.
The mention of Java is interesting in this context. Most microprocessors and RTOS offerings would require about 3MB for Java to run. It is possible to run Java in less space and given that this is possible, the footprint can be reduced enough to make it practical. This is achieved by eliminating the just in time compile aspects and requiring all elements to be precompiled and available in byte code. All I/O in this case can be mapped to standard Unison RTOS device interfaces.
The use of Lua is due to its portability and small size interpreter. It is by far the best choice for microcontrollers because it substantially reduces the space requirements compared to Java and Phython. Uses for this include CGI handlers and user defined execution environments without requiring a recompilation.
Embedded Software Design Processor Targets
The target processors are all microcontroller, microprocessor, digital signal processor, digital signal controller and FPGA based. The typical targets are listed below. Other targets may be added as required for special features or to conform with corporate requirements. Please see our supported hardware under the products section for more details.
- - Renesas
- RX, SH2A, R8, M16C, R32C, RZ
- - Texas Instruments
- Tiva, OMAP, DaVinci, Sitara
- - ST Microelectronics
- STM32 Family
- - Microchip
- Pic24, dsPic, Pic32
- - NXP/Freescale
- LPC 1700, 1800, Kinetis, iMX6
- - Cypress/Spansion
- - Microsemi
- Smartfusion 1, Smartfusion 2
- - Xilinx
Pricing for these services is conducted on a custom basis. Services can be requested on a firm fixed price, royalty basis, time and materials basis or some hybrid approach.
All embedded system software design and development services are performed on a custom basis and provided with a quality guarantee; please contact us for a quote.
You don`t have permission to comment here!