Chen Ji Chang b39fd79cb8 Merge branch 'feature/add_mcpwm_carrier_clk_source' into 'master' 2 years ago
..
adc_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
adc_hal_common.h 5b523a3313 esp_adc: new esp_adc component and adc drivers 3 years ago
adc_oneshot_hal.h 5653018cd1 esp_adc: support selecting clock source for oneshot driver 3 years ago
adc_types.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
adc_types_private.h 87848110c1 adc: new feature adc digital monitor supported 3 years ago
aes_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
aes_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
apm_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
apm_types.h 8d0f6dab0f apm: added support for APM on esp32c6 3 years ago
assist_debug_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
brownout_hal.h 56a2d0b8a2 BOD: Bringup for ESP32C6 3 years ago
cache_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
cache_types.h c1cbd7bbf6 cache/mmu: implememnt cache and mmu hal APIs in bootloader 4 years ago
clk_tree_hal.h 2c9aa4559c clk_tree: Add a general API to get the frequency of different clocks 3 years ago
dac_types.h 8ef9fd4623 dac: optimize the dma stratege 3 years ago
dma_types.h 3b7da7eae5 feat(gdma): gdma descriptor alignment 2 years ago
ds_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
ds_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
ecc_hal.h a485b1cb67 esp32h2: Add support for ECC hardware accelerator 3 years ago
ecc_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
ecdsa_hal.h d634970ed1 ecdsa: Support multiple ECDSA keys 3 years ago
ecdsa_types.h d345c684ba esp32h2: Add support for ECDSA peripheral 3 years ago
efuse_hal.h ffb40a89d9 adc_cali: supported channel compensation of adc calibration on esp32c6 3 years ago
emac_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
esp_flash_err.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
eth_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
etm_hal.h fb26d0e11f etm: added etm channel allocator 3 years ago
gdma_hal.h 274e1c0089 fix(gdma): fixed compilation failure of gdma 2 years ago
gdma_hal_ahb.h 274e1c0089 fix(gdma): fixed compilation failure of gdma 2 years ago
gdma_hal_axi.h 274e1c0089 fix(gdma): fixed compilation failure of gdma 2 years ago
gdma_types.h 9eb145aa21 feat(esp_gdma): adapt the gdma driver to ahb-dma and axi-dma 2 years ago
glitch_filter_types.h ca1b182b25 glitch_filter: support derive clock source form IO MUX 3 years ago
gpio_hal.h be9afeac86 feat(gpio): add support for ESP32P4 2 years ago
gpio_types.h be9afeac86 feat(gpio): add support for ESP32P4 2 years ago
hmac_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
hmac_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
i2c_hal.h 4ef94fc0dc feat(i2c): Add new API and implementation for I2C driver 2 years ago
i2c_types.h 4ef94fc0dc feat(i2c): Add new API and implementation for I2C driver 2 years ago
i2s_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
i2s_types.h fa9b022f68 i2s: support 4 line pdm rx on esp32s3 3 years ago
ieee802154_common_ll.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
lcd_hal.h 454d658309 rgb_lcd: workaround pclk polarity bug by setting mo>=2 3 years ago
lcd_types.h fc1aa2848b rgb_lcd: support yuv converter 3 years ago
ledc_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
ledc_types.h ad55230b0a ledc: Add support for esp32h2; Refactor ledc driver clock source selection related code 3 years ago
lp_timer_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
lp_timer_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
mcpwm_hal.h f7ff7ac4d0 mcpwm: clean up hal driver and add doc 4 years ago
mcpwm_types.h 97d5db32ae feat(MCPWM): Add mcpwm carrier clk source 2 years ago
memprot_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
mmu_hal.h bae6680207 mmu: hal function to init, and hal function to unmap all 3 years ago
mmu_types.h 8c8affc812 feat(mmu): support mmu and flash mmap driver on p4 2 years ago
modem_clock_hal.h 21781b1ab1 modem clock: provide a protected wifipwr clock enable/disable interface to fix the bug of selecting xtal as the low power clock source for ble 2 years ago
modem_clock_types.h 63af1e9631 modem clock(driver): implemented the modem clock driver for esp32c6 3 years ago
mpi_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
mpi_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
mpu_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
mpu_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
parlio_hal.h f534247a00 driver: add parallel IO TX driver 3 years ago
parlio_types.h f534247a00 driver: add parallel IO TX driver 3 years ago
pau_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
pau_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
pcnt_hal.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral 4 years ago
pcnt_types.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral 4 years ago
pmu_types.h a329b15e7e Power Management: support pu xtal in light sleep for esp32h2 2 years ago
readme.md 5425ef4ee4 hal: extract hal component from soc component 5 years ago
rmt_hal.h 2fb43820c2 driver_ng: implement new rmt driver 4 years ago
rmt_types.h d82981c437 rmt: use gpio_num_t to define gpio number 3 years ago
rtc_hal.h 808a01e656 feat(pm/deepsleep): Support EXT1_WAKEUP_MODE_PER_PIN 2 years ago
rtc_io_hal.h 4985caa38f refactor(driver/rtcio): Re-wrap RTCIO APIs with more accurate soc_caps 2 years ago
rtc_io_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
sdio_slave_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
sdio_slave_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
sdm_hal.h 4154eaec93 sdm: clean up soc/hal/ll code 3 years ago
sdm_types.h 4154eaec93 sdm: clean up soc/hal/ll code 3 years ago
sha_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
sha_types.h ea05ae6af2 feat(esp32p4): added hal support 2 years ago
spi_flash_encrypt_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
spi_flash_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
spi_flash_types.h ed96dadd06 spi_flash: 2nd stage for supporting flash suspend. (1). Support more esp chips (2). Improve real-time performance (3). Making timing more stable (4) Add documents 3 years ago
spi_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
spi_slave_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
spi_slave_hd_hal.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
spi_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
systimer_hal.h 63f852adc8 hal: Adds hal/ll func for SYSTIMER to select clock source: XTAL or RC_FAST_CLK 3 years ago
systimer_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
temperature_sensor_types.h 4154eaec93 sdm: clean up soc/hal/ll code 3 years ago
timer_hal.h a1030307f1 gptimer: bringup driver on esp32c6 3 years ago
timer_types.h de68029de9 change(header): modify p4 headers issues from check_header_py 2 years ago
touch_sensor_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
touch_sensor_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
twai_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
twai_types.h a18d7e24d6 Fix initialization macros for twai_timing_config_t not setting .clk_src and .brp 3 years ago
uart_hal.h 921713fff4 uart: Support LP_UART port with UART driver on esp32c6 2 years ago
uart_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
uhci_types.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
usb_dwc_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
usb_dwc_ll.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
usb_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
usb_phy_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
usb_phy_types.h 1fcd639224 usb: Add usb_phy driver to support operations on USB PHY 4 years ago
usb_types_private.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago
wdt_hal.h 9c37441b17 wdt: refactor wdt codes to use unified type 3 years ago
wdt_types.h 5e9e8c396f wdt: add support for WDTs on C6 3 years ago
xt_wdt_hal.h 333553caf2 fix(hal): check the public header files and fix violations 2 years ago

readme.md

HAL Layer Readme

The HAL layer is designed to be used by the drivers. We don't guarantee the stability and back-compatibility among versions. The HAL layer may update very frequently with the driver. Please don't use them in the applications or treat them as stable APIs.

The HAL layer consists of two layers: HAL (upper) and Lowlevel(bottom). The HAL layer defines the steps and data required by the peripheral. The lowlevel is a translation layer converting general conceptions to register configurations.

Lowlevel

This layer should be all static inline. The first argument of LL functions is usually a pointer to the beginning address of the peripheral register. Each chip should have its own LL layer. The functions in this layer should be atomic and independent from each other so that the upper layer can change/perform one of the options/operation without touching the others.

HAL

This layer should depend on the operating system as little as possible. It's a wrapping of LL functions, so that the upper layer can combine basic steps into different working ways (polling, non-polling, interrupt, etc.). Without using queues/locks/delay/loop/etc., this layer can be easily port to other os or simulation systems.

To get better performance and better porting ability, contexts are used to hold sustainable data and pass the parameters.

To develop your own driver, it is suggested to copy the HAL layer to your own code and keep them until manual update.