OpenECU

OpenECU Platform Software Overview

OpenECU platform software supports Pi Innovo’s family of customizable Off-the-shelf rapid control prototyping ECUs suitable for use in vehicle prototypes or fleet trials for a range of applications such as automotive gateway, engine control, motor control and Electric Vehicle (EV) or Hybrid Electric Vehicle (HEV) supervisory control.

OpenECU is a development platform allowing customers to develop control applications with production level Electronic Control Unit (ECU) targets using developer interfaces of Simulink® or C. OpenECU platform software provides Basic Software modules (BSW) for automotive ECU software development using Model Based Development or C Programming.

For higher volume production, we develop cost-optimized custom ECUs. Pi Innovo also provides engineering services which is supported by a strong team of Systems, Controls, Software and Hardware engineers. Contact Pi Innovo for specific requirements.

Application Development: Developer API

OpenECU allows customers to develop automotive ECU software application and retain Intellectual Property (IP) using our developer APIs.

In addition to OpenECU’s real-time operating system, the OpenECU platform software provides two distinct APIs for application development. For controls systems that use Model-Based software development, OpenECU comes with the Simulink-API. This allows developers to use the Mathworks toolsuite to develop automotive ECU software. Other control systems have been developed in C. For those customers, OpenECU provides a C-API for C application development. Both interfaces, C and Simulink, allow companies and their engineers to develop and retain their own designs and IP.

Developer Platform API
OpenECU Developer Simulink-API

OpenECU-FS Platform Software Architecture

Bootloader

Bootloader in the Automotive ECU is the entry point when the Electronic Control Unit (ECU) powers up. It verifies the application and calibration binary image. OpenECU uses a monolithic design of the bootloader. A monolithic bootloader initially loads the binary image into a temporary area within the automotive ECU and then the complete image is flashed or programmed into the ECU. The microprocessor invokes the boot loader when the processor comes out of reset. OpenECU provides various ECU modes: Boot Mode, Reprogramming Mode, Factory Mode and Application Mode.

Vehicle ECU Reprogramming

OpenECU supports ECU reprogramming, which allows users to reflash new application to target automotive or vehicle Electronic Control Unit (ECU). An OpenECU rapid control prototyping embedded controller can transition to a reprogramming mode when the boot loader does the checksum and it is invalid. A user can change the target ECU to reprogramming mode when a request to flash a new application is performed using a PC based service or calibration tool.

Real-time Operating System

OpenECU is a real-time operating system (RTOS) for automotive embedded software supporting Pi Innovo ECUs with microprocessor configurations. OpenECU RTOS is a priority ceiling preemptive task scheduler with rate-monotonic application task prioritization and can do tasks as fast as 1ms period on the primary microprocessors. Preemptive task scheduling provides an interface for the application to monitor missed or over run tasks. Applications can create tasks at different rates allowing optimization of CPU usage and resource utilization. Rate-Monotonic Scheduling (RMS) is an application task prioritization algorithm adopted in OpenECU RTOS which assigns highest priority to tasks that have high rate.

Platform Library: Features

OpenECU platform software provides services to automotive ECU application software, ECU hardware abstraction and provides a consistent programming interface for ECU software developers to design and model control applications. Available services from OpenECU Platform Libraries include CAN communication services, diagnostics, timed I/O, angular I/O, Non-volatile data storage and many more. Refer to OpenECU Technical Specification for more details.

Each Electronic Control Unit (ECU) within the OpenECU family of rapid control prototyping embedded controllers has a Basic Software (BSW) or platform library component associated with specific processor providing Microcontroller Abstraction Layer (MCAL) comprising of memory drivers, communication drivers (CAN driver), I/O drivers, PWM and more.

Automotive ECU Application Software Interface

OpenECU application software interface allows automotive software developers access to services and capabilities available to OpenECU family of rapid control prototyping embedded controller such as the M110, M211, M220, M250 or M670. Automotive ECU applications include automotive gateway, motor control, Hybrid Control Unit (HCU) control algorithm, Vehicle Control Unit (VCU) control algorithm or supervisory control which can be developed using Model Based Development through OpenECU Developer Simulink API or using OpenECU Developer C-API.

OpenECU Platform Software Structure

OpenECU platform software provides abstraction layer between specific hardware and application development. The abstraction layer allows application linking to various features developed in the form of platform libraries or services.

These platform libraries provide automotive functionalities. Features include the following:

Development environment

OpenECU development environment supports various automotive ECU as targets. OpenECU supports compilers such as Wind River Diab C compiler and MGCC compiler. OpenECU supports calibration tools such as PiSnoop, ATI Vision, ETAS INCA and Vector CANape.

Automotive ECU Messaging and Communication

OpenECU platform software supports various industry recognized communication buses and protocols. Supported communication protocols can be visualized with the OSI model: physical, data link, network, transport and application layers.

Communication protocols available for support by OpenECU platform software include ISO 11898, ISO 14229, ISO 14230, ISO 15765 and J1939.

CAN Calibration Protocol (CCP) allowing interaction with reprogramming and calibration tools. CCP is primarily a client/server based protocol where a client, a calibration tool requests the server, the target ECU to perform a task or provide status information.

OpenECU has capabilities to implement more communication features such as automotive Ethernet and LIN. Contact Pi Innovo to learn more.

Memory Management

OpenECU platform software performs management of non-volatile, adaptive and calibration memory. It handles storage of data parameters across power cycles and provide utility functions for adaptive data and maps for Non-volatile and adaptive memory. OpenECU platform software handles calibration memory, whether provided by dedicated on-board memory or attachable emulators.

OpenECU also provides memory mapping, allocating different memory spaces during build done by linker files.

Stack monitoring

OpenECU provides a way of monitoring how much stack space is utilized by the application. For the primary microcontroller, you can select the stack size with a Simulink build configuration. OpenECU provides safe shut-down during a stack anomaly by implementing stack overflow check.

Device driver

OpenECU implements device drivers for hardware peripherals such as CAN transceivers, Analog inputs or outputs, digital input or outputs, and ASICs with SPI or NVM interfaces. OpenECU also supports ASIC digital IOs used for multiplexing signals.