Our previous blog highlighted key hardware considerations when selecting a new enterprise embedded platform for your company. This blog will dive into the key software considerations. The software will consist of the framework that allows your software developers to create an application. The software framework is expected to include the boot block for programming the controller, drivers for the controller hardware, and operating system.
One assumption is that the desire is to create a common software framework that will be used for all the embedded controllers across the enterprise.
The first consideration is the system and software architecture. Requirements must be clear and defined! This will help determine the items discussed later. Based upon the system and software requirements, there may be opportunities for efficiency gains through:
- Common software opportunities – API definitions or code reuse
- Keeping the core OS light
- Reducing complexity when configuring the micro
The next consideration is the tools and workflow. How seamless should the development process be? How automated? Will the Agile or Waterfall development cycle be utilized? How big will the software team be? What is the delivery schedule? How is functional safety incorporated and documented? Some of the tools to consider are:
- Package control/distribution (Docker, Artifactory, Npm…)
- Source code control like Git
- Embedded development environment
Another consideration is security. How will the embedded system be accessible to the techs responsible to keep the vehicle working, but inaccessible to those that may not have good intentions or may not know what they are doing?
Software development trends are another consideration. Are the tools and practices current? Will it be difficult to hire people with the skills necessary to perform the tasks later in the life cycle because the expertise in the tools have become niche?
Next is deciding upon the framework. Some considerations include:
- Are there existing frameworks that can be utilized? (e.g. AUTOSAR)
- Does the framework have licensing costs? Special tooling to purchase? Does it have any workflow constraints? Does it support desired source control, traceability, etc?
- Does the framework allow for abstracting the hardware details from the application details?
- Is the desire to use the included software/tool system that comes with the hardware?
- What compilers are supported?
- What tools configure the hardware? – Does the HW/microprocessor tool configure in the manner desired for the hardware connections?
- Is the complexity of configurability appropriate?
- What needs to be configured? What basic settings or what non-standard configuration requirements are needed?
- What is the cost? Licensing. Besides outlay of cash, there is the cost of time.
- Is the framework widely used? Will it be supported into the future?
- Training costs? Will everyone need to be trained or are there people that will already have experience with the framework when they are hired?
- If multiple hardware platforms are to be supported, or hardware components are expected to change rapidly, does the framework allow for reuse of application code while minimizing the driver layers?
Closely related to the framework is deciding upon an operating system. Some considerations related to the operating system include:
- Does it support multi-core? (if that is the hardware choice)
- Is it widely used? Will it be supported in the future?
- Task scheduler
- Custom vs. Off-the-shelf
Next is selecting the programming language. Some choices include:
- Functional programming
- Classic C
- Does the language support low coupling well, which is a desirable trait in modern development?
- Are there knowledgeable developers available within the organization or within the industry, if selecting a new language?
The lowest level of the software is the drivers. The key considerations regarding the drivers include:
- Do drivers exist that can be purchased instead of developed? Do they meet safety requirements? Cost? Support?
- Does the desired communication protocol support exist?
- Does the desired memory support (EE, etc.) support exist?
- Is the selected microprocessor supported?
As discussed, there are many factors that must be considered when selecting an enterprise software framework. Given the impact of this type of decision, I hope that these considerations provide an understanding of the magnitude of this endeavor. Technology is constantly evolving. Starting with the requirements of your enterprise embedded platform, which includes the requirements for the software framework, will lead you to capturing the best value for your money and time.
This content was developed with support from the following members of our DISTek team of experts: Shane Murphy (Senior Software Engineer & DISTekian since 1995), Bryan Guthrie (Senior Staff Engineer & DISTekian since 1999), and Robert Larsen (Software Engineer & DISTekian since 2015).