Skip to content

Glossary

Jonatan Antoni edited this page Nov 10, 2021 · 3 revisions

Recommended terminology

General

  • API An application programming interface defines the interactions between multiple software intermediaries. They are what Open-CMSIS-Pack components publicly expose for the other components to use.
  • API extension A set of methods and types exposed by a Open-CMSIS-Pack Component expanding the capabilities of another Open-CMSIS-Pack component.
  • Baremetal application Bare metal refers to a computer executing instructions directly on logic hardware without an intervening operating system. On Cortex-M target this is generally understood as an application running in a single thread without task-scheduling. A bare-metal application may still use interrupts.
  • Bootstrap Bootstrapping is a self-starting process that is supposed to proceed without external input.
    • Application bootstrap Covers the operation related to the application specific operations such as setup of the connectivity stacks as well as the various middleware constituting the application.
    • Device bootstrap Covers the operation related to the board/product startup. E.g. clock initialisation, external peripheral reset and initialisation.
  • BSP / Board Support Package A component providing board-specific support. This component typically provides through direct implementation or through dependencies, the device bootstrap and exposes the device specific features such as functions to get peripherals and/or bus instances, pin multiplexing etc.
  • Components The use of component on its own is deprecated because ambiguous. Please use one of those more specific forms instead:
    • API component A specialization of a software component that describes an interface. It must also document all expected behaviour of the API implementation as well as correct usage of the API.
    • Implementation Component A component that implements an interface. Such component may export an API extension.)
    • Software component A software component is a basic building block for the construction of applications. It is a set of files, include paths, configurations and dependencies. It can optionally implement one or more API.
  • Connectivity Any technology used to interact with entities beyond the device's boundary. For example, a UART interface may be considered connectivity when used as a Modbus server endpoint.
  • Dependency In context of software components is a relationship where one software component requires anything from the other software component or API component or configuration or tool chain or hardware.
  • External peripheral A piece of hardware external to the chip running the code. It may be controlled through a hardware-accelerated bus interface or a bit-banged bus interface.
  • Host / Host platform A machine running a desktop/server grade OS.
  • Hardware (HW) Platform A piece of hardware running an embedded application. This can be anything from development kits to standalone System on Chips or for example an IoT device.
  • IoT OS A set software stacks typically used by IoT devices and provided by an OS vendor (Mbed, Zephyr, AWS FreeRTOS, Azure RTOS, ...). An IoT OS is typically made of a kernel (the RTOS), a connectivity stack (IP, BLE etc), a storage stack (block devices, file systems etc) and other middleware.
  • Internal / On-chip peripheral A piece of hardware internal to the chip running the code. It is controlled through the chip memory space.
  • Pack / Software Pack A collection of files including a Pack Description file forming one or more Software Component(s) to be distributed, e.g. as an archive or through a Software Repository.
  • Pack Description (PDSC) A machine readable file containing meta data for one or more Software Component(s) maintained and shipped alongside.
  • Pack Index A machine readable index file of available Packs and their according origin. The origin can be the location a Pack archive can be fetched from or a Software Repository to refer to.
  • (Local) Packs Folder A location within an Application Developer's development environment where Packs are stored to (unarchived).
  • Peripheral driver / Hardware Abstraction Layer (HAL) A piece of software interacting with some piece of hardware either as an internal peripheral through the memory bus or as an external peripheral through an ADC input, a SPI bus, or an I²C bus. In the context of Open-CMSIS-Pack, Peripheral driver and HAL driver are synonyms. Examples include:
    • The software driving a CRC hardware acceleration
    • The software driving a sensor, for example an accelerometer
    • The software driving a stepper motor controller
  • Real-Time Operating System (RTOS) Part of the OS that implements threading, real-time scheduling and related operations. Some well known RTOS for microcontrollers include FreeRTOS (used in AWS-FreeRTOS), RTX (used in Mbed-OS), and ThreadX (used in Azure RTOS).
  • Software Repository Arbitrary directory structure containing files typically version controlled by a VCS.

Testing

There are two major ways of categorising tests :

  • By scope:
    • Unit tests Covers a specific piece of software isolating it from its environment for example by mocking its dependencies. In the case of Internal peripheral drivers that means mocking/simulating the hardware's behaviour and/or memory map.
    • Integration tests Verifies that multiple components can work together in the expected way.
    • System tests Verifies that the components work together as expected and that the whole system also behaves as defined.
  • By test objectives:

The following terms are generally accepted and listed here as reminders :

  • Acceptance test Tests against design document(s) or specification(s).
  • Regression test Tests that are repeatable and used to catch regressions as the code base evolves.
  • Test framework Library used to help implement a test, e.g. CppUTest
  • Test harness Combination of the Test framework and test data that allow automation of the tests.
  • Test infrastructure Describes the environment where the tests are run. This includes CI and the required HW and SW tools down to the HW Platform boundaries.
  • Test tool Includes the software tools as well as the physical tools such as the FPGA test shield.

Deprecated terminology

Those terms are not forbidden but frowned upon because of their history, ambiguity and more generally their lack of clarity.

  • Target Has proven ambiguous and highly dependant on the context. It may identify a board, a module, a specific chip, a family of device, a core or even a platform or an OS. Recommended alternative: Use specific wording.
  • Component Similarly to target component may indistinctly refer to hardware or software elements. Recommended alternative: Use specific wording. See Component.
Clone this wiki locally