This module defines the API for the mbed low-level Hardware Abstraction Layer, which is implemented by target-specific modules.
mbed hal API is considered an internal interface. It is not recommended to depend on this module in an application. We are planning to improve mbed-hal in the future, which might require changes in API.
yotta install --save ARMmbed/mbed-hal
The mbed HAL defines API for the following peripherals/functionality:
- Analog in
- Analog out
- Buffer
- GPIO
- GPIO IRQ
- Low power timer
- Ticker - high precision timer
- I2C
- Init HAL
- Port
- Pin maping
- PWM out
- RTC
- Serial
- Sleep
- SPI
mbed-hal requires a number of sub-modules when a port is created.
For instance, mbed-hal hierarchy might be:
+----------+
| mbed-hal |
+----+-----+
| TD
+--------+----------+
| mbed-hal-<vendor> |
+--------+----------+
| TD
+----------------+----------------+ D +--------------------------------+
| mbed-hal-<vendor>-<chip family> +-------+ mbed-hal-<vendor>-<vendor hal> |
+----------------+----------------+ +--------------------------------+
| TD
+------------+-------------+
| mbed-hal-<vendor>-<chip> |
+--------------------------+
| TD
+------------+---------------+
| mbed-hal-<vendor>-<target> |
+----------------------------+
In the diagram above, six hal repositories are defined to support a single target. Each of these repositories should contain specific parts of the mbed hal.
This repository contains redirections based on target only. mbed-hal- should contain a single file: a module.json.
Contains: No source/header files required
Dependencies: None
Target Dependencies: mbed-hal-<vendor>-<chip family>
This repo should contain the files which implement the api defined in mbed-hal, e.g. spi_api.c, uart_api.c, us_ticker.c, etc.
Contains:
- source
- analogin_api.c
- analogout_api.c
- gpio_api.c
- gpio_irq_api.c
- i2c_api.c
- lp_ticker.c
- pinmap.c
- port_api.c
- pwmout_api.c
- rtc_api.c
- serial_api.c
- sleep.c
- spi_api.c
- us_ticker.c
- mbed-hal-<vendor>-<chip family>
- PeripheralNames.h
- PeripheralPins.h
- PortNames.h
- gpio_object.h
- objects.h
Dependencies: mbed-hal-<vendor>-<vendor hal>
Target Dependencies: mbed-hal-<vendor>-<chip>
Contains a vendor-specific hal if necessary. This repository is optional. No dependencies are mandated, but most implementations of this repository will include a dependency on mbed-hal-<vendor>-<chip family>
Contains: Vendor-specific HAL
Dependencies: None required
Target Dependencies: None required
The chip-specific definitions expected by the vendor HAL and/or mbed-hal-<vendor>-<chip family>
Contains: chip-specific definitions and code
Dependencies: None required
Target Dependencies: None required
This module should define chip pin names. More information about pin names in mbed OS here.
The target-specific definitions expected by the vendor HAL and/or mbed-hal-<vendor>-<chip family>
Contains:
- source
- init_api.c
- PeripheralPins.c
- mbed-hal-<vendor>-<target>
- device.h
- target_config.h
Dependencies: None required
Target Dependencies: None required