Software

Sign up for an account to download embARC software.

embARC is an open software platform to accelerate the development of embedded systems based on DesignWare® ARC® processors built on the ARCv2 ISA. embARC provides a solid starting foundation for embedded developers, simplifying development and improving time to market through software reuse.

The embARC software includes the following components:

ARC Hardware Abstraction Layer

The ARC HAL provides hardware abstraction for ARCv2 ISA compatible processors. In this layer, the following functions are provided:

Device Hardware Abstraction Layer

The device HAL provides abstraction for following devices:

Common features between different devices such as UART, I2C and SPI are abstracted in the device HAL. Object-oriented concepts are adopted to provide the common device operation API and the device information access API. The following diagram provides examples for UART, SPI/I2C and GPIO devices.

Board Support Layer

The BSP layer provides support for different boards based on ARCv2 processors. The layer contains the following functions:

Peripherals Driver Instantiation
In embARC, an object-oriented design is applied for device drivers. The peripheral driver implementations in the device abstraction layer are similar to the definition of class, so for each board, the peripheral drivers should be instantiated.

Common Board Initialization Process
A standard bootup process is defined for each board. The entry of this process is board_init, defined by the specific board and called by the application.

Board Resource Unified Definitions
Most boards share common peripherals, so unified definitions are provided. Examples include the UART used to print messages, SD card interface, buttons, LEDs, etc.

Linker Scripts for Boards
To compile an application for different boards, developers need to provide proper linker scripts to describe the board memory resource schemes. Developers can define their own linker scripts for specific schemes.

The BSP layer currently supports the ARC EM Starter Kit.

Real Time Operating Systems

embARC provides a choice of well-known and accepted OS to use with DesignWare ARCv2 processors in embedded applications, with an emphasis on the IoT space.  Three OS choices are currently supported in embARC: Contiki and FreeRTOS, which are delivered with embARC OSP, and ARC MQX RTOS, which is available separately from Synopsys.

FreeRTOS
FreeRTOS is the market-leading real time operating system (RTOS), and the de-facto standard solution for microcontrollers and small microprocessors.

Contiki
Contiki is an open-source operating system for networked, memory-constrained systems with a particular focus on low-power wireless IoT devices such as street lighting systems, sound monitoring for smart cities, radiation monitoring systems, and alarm systems. Contiki was created by Adam Dunkels in 2002 and has been further developed by a world-wide team of developers from Atmel, Cisco, Enea, ETH Zurich, Redwire, RWTH Aachen University, Oxford University, SAP, Sensinode, Swedish Institute of Computer Science, STMicroelectronics, Zolertia, and many others.

Contiki comes out of the box with a very rich set of communication protocols and applications including:

MQX RTOS
The ARC MQX RTOS offers leading-edge technology for embedded designs based on the ARC processor platforms. Unlike general-purpose operating systems, the MQX RTOS was designed for speed and size efficiency in embedded systems. The MQX RTOS delivers true RTOS performance, with context switch and low-level interrupt routines hand-optimized in assembly, which can be configured to use as little as 3.4 KB of ROM, including kernel, interrupts, semaphores, queues, and memory manager. MQX RTOS components are linked in only if needed, preventing unused functions increasing the memory footprint. MQX RTOS is available separately from Synopsys.

Middleware Layer

embARC leverages several open source projects to deliver integrated IoT protocol stack choices for embedded devices based on ARC processors. This section describes various middleware packages that have ported and integrated for use in embARC.

  • Security Protocols:
  • Graphics: