Shu Chen 5d222db12f Merge branch 'support/ieee802154_driver_opensrc' into 'master' пре 2 година
..
adc_hal.h 5653018cd1 esp_adc: support selecting clock source for oneshot driver пре 3 година
adc_hal_common.h 5b523a3313 esp_adc: new esp_adc component and adc drivers пре 3 година
adc_oneshot_hal.h 5653018cd1 esp_adc: support selecting clock source for oneshot driver пре 3 година
adc_types.h b7053b46ef esp32h4: remove esp32h4 target from peripherals пре 2 година
adc_types_private.h b7053b46ef esp32h4: remove esp32h4 target from peripherals пре 2 година
aes_hal.h 51169b0e0c AES/SHA: use GDMA driver instead of LL пре 5 година
aes_types.h 457ce080ae AES: refactor and add HAL layer пре 5 година
apm_hal.h 8d0f6dab0f apm: added support for APM on esp32c6 пре 3 година
apm_types.h 8d0f6dab0f apm: added support for APM on esp32c6 пре 3 година
brownout_hal.h 56a2d0b8a2 BOD: Bringup for ESP32C6 пре 3 година
cache_hal.h fda9746bb8 esp_mm: cache_msync API пре 3 година
cache_types.h c1cbd7bbf6 cache/mmu: implememnt cache and mmu hal APIs in bootloader пре 4 година
clk_tree_hal.h 2c9aa4559c clk_tree: Add a general API to get the frequency of different clocks пре 3 година
dac_types.h 8ef9fd4623 dac: optimize the dma stratege пре 3 година
dma_types.h cd21058097 C/Cxx: unify static assertions with the macro ESP_STATIC_ASSERT пре 3 година
ds_hal.h f80d6f8c21 Digital Signature support for S3 пре 4 година
ecc_hal.h a485b1cb67 esp32h2: Add support for ECC hardware accelerator пре 2 година
ecc_types.h a485b1cb67 esp32h2: Add support for ECC hardware accelerator пре 2 година
ecdsa_hal.h d634970ed1 ecdsa: Support multiple ECDSA keys пре 2 година
ecdsa_types.h d345c684ba esp32h2: Add support for ECDSA peripheral пре 2 година
efuse_hal.h c3e701588e efuse: add efuse hal api пре 2 година
emac_hal.h c231c79fc8 HAL: wrapped emac_ll functions to emac_hal пре 2 година
esp_flash_err.h 5425ef4ee4 hal: extract hal component from soc component пре 5 година
eth_types.h 8da2e4088c esp_eth: Update esp32's EMAC API to decouple driver and vendor config пре 4 година
etm_hal.h fb26d0e11f etm: added etm channel allocator пре 3 година
gdma_hal.h 83d16aa00c gdma: support IRAM interrupt пре 4 година
gdma_types.h f534247a00 driver: add parallel IO TX driver пре 3 година
glitch_filter_types.h ca1b182b25 glitch_filter: support derive clock source form IO MUX пре 3 година
gpio_hal.h 51777a6862 gpio: Fix io hold functionality on esp32c6 and esp32h2 пре 3 година
gpio_types.h b7053b46ef esp32h4: remove esp32h4 target from peripherals пре 2 година
hmac_hal.h 1c233cc508 hmac_hal: Merge hmac hal layer for different into one пре 3 година
i2c_hal.h 803fc3fbe0 I2C: Add i2c support for ESP32C6 пре 3 година
i2c_types.h 31b88a4c88 I2C: Refactor i2c hal and ll пре 3 година
i2s_hal.h 039af72058 i2s: fixed typo 'philip' пре 3 година
i2s_types.h fa9b022f68 i2s: support 4 line pdm rx on esp32s3 пре 3 година
ieee802154_common_ll.h c8c1cd1c55 ieee802154: support driver opensrc пре 2 година
lcd_hal.h 454d658309 rgb_lcd: workaround pclk polarity bug by setting mo>=2 пре 3 година
lcd_types.h fc1aa2848b rgb_lcd: support yuv converter пре 3 година
ledc_hal.h fcc6514dde ledc: Add an all-in-one HAL function to set fade parameters, and refactor ledc_ll_get_max_duty function пре 2 година
ledc_types.h ad55230b0a ledc: Add support for esp32h2; Refactor ledc driver clock source selection related code пре 3 година
lp_timer_types.h c0ddaa5920 lp_timer: add hal-layer codes for esp32c6 пре 3 година
mcpwm_hal.h f7ff7ac4d0 mcpwm: clean up hal driver and add doc пре 3 година
mcpwm_types.h c4e84751a5 driver: fix public header exceptions for driver пре 3 година
memprot_types.h 7cb9304b65 Clean IRAM and DRAM address space conversion macros пре 3 година
mmu_hal.h bae6680207 mmu: hal function to init, and hal function to unmap all пре 2 година
mmu_types.h 82ee8403b6 mmu: mmu_hal_check_valid_ext_vaddr_region пре 3 година
modem_clock_hal.h 485f2882d1 modem_clock: rename modem_clock_lp_timer to ble_rtc_timer пре 2 година
modem_clock_types.h 63af1e9631 modem clock(driver): implemented the modem clock driver for esp32c6 пре 3 година
mpi_hal.h 4ae1ea7b9f bignum: refactored the hardware abstraction of the mpi peripheral пре 2 година
mpi_types.h 4ae1ea7b9f bignum: refactored the hardware abstraction of the mpi peripheral пре 2 година
mpu_hal.h 66fb5a29bb Whitespace: Automated whitespace fixes (large commit) пре 5 година
mpu_types.h 58c3f6a421 hal: explicitly include soc_caps.h пре 5 година
parlio_hal.h f534247a00 driver: add parallel IO TX driver пре 3 година
parlio_types.h f534247a00 driver: add parallel IO TX driver пре 3 година
pau_hal.h 5850cd7492 pau: implement the pau regdma hal&ll layer for esp32c6 пре 3 година
pau_types.h d3e0e3e3b6 pau: implement the pau regdma driver for esp32c6 пре 3 година
pcnt_hal.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral пре 4 година
pcnt_types.h ec8defaa96 pulse_cnt: new driver for PCNT peripheral пре 4 година
pmu_types.h 6c1f58f135 pmu: add hal layer codes for esp32c6 пре 3 година
readme.md 5425ef4ee4 hal: extract hal component from soc component пре 5 година
rmt_hal.h 2fb43820c2 driver_ng: implement new rmt driver пре 3 година
rmt_types.h d82981c437 rmt: use gpio_num_t to define gpio number пре 2 година
rtc_hal.h 9eae151f7c esp32c6: bringup deepsleep examples пре 3 година
rtc_io_hal.h 9eae151f7c esp32c6: bringup deepsleep examples пре 3 година
rtc_io_types.h 66fb5a29bb Whitespace: Automated whitespace fixes (large commit) пре 5 година
sdio_slave_hal.h f1de9faa71 sdio: c6 support пре 3 година
sdio_slave_types.h 507864c4f1 sdio_slave: allow disabling highspeed mode пре 3 година
sdm_hal.h 4154eaec93 sdm: clean up soc/hal/ll code пре 3 година
sdm_types.h 4154eaec93 sdm: clean up soc/hal/ll code пре 3 година
sha_hal.h 51169b0e0c AES/SHA: use GDMA driver instead of LL пре 5 година
sha_types.h b7053b46ef esp32h4: remove esp32h4 target from peripherals пре 2 година
spi_flash_encrypt_hal.h 0d81edb174 spi_flash: refactoring flash encryption into new api пре 4 година
spi_flash_hal.h cd21058097 C/Cxx: unify static assertions with the macro ESP_STATIC_ASSERT пре 3 година
spi_flash_types.h 4418a855ba spi_flash: refactor the spi_flash clock configuration, and add support for esp32c2 пре 3 година
spi_hal.h 184145817c spi_master: add feature spi periph clk source selectable пре 3 година
spi_slave_hal.h ea0b839302 spi: limit esp32 dma workaround only on esp32 пре 3 година
spi_slave_hd_hal.h 66ca403bc6 spi_slave: support spi slave hd append mode on chips other than s2 пре 2 година
spi_types.h 184145817c spi_master: add feature spi periph clk source selectable пре 3 година
systimer_hal.h 63f852adc8 hal: Adds hal/ll func for SYSTIMER to select clock source: XTAL or RC_FAST_CLK пре 3 година
systimer_types.h cd21058097 C/Cxx: unify static assertions with the macro ESP_STATIC_ASSERT пре 3 година
temperature_sensor_types.h 4154eaec93 sdm: clean up soc/hal/ll code пре 3 година
timer_hal.h a1030307f1 gptimer: bringup driver on esp32c6 пре 3 година
timer_types.h 00b6ec28b2 gptimer: support etm event and task пре 3 година
touch_sensor_hal.h a5b09cf015 rtc_clk: Clean up some clock related enum and macro in soc/rtc.h, replace with new ones in пре 3 година
touch_sensor_types.h 869bed1bb5 soc: don't expose unstable soc header files in public api пре 4 година
twai_hal.h a25123f703 twai: bringup on esp32c6 пре 3 година
twai_types.h fdeeced62c twai: h2 support twai driver пре 3 година
uart_hal.h b69f983525 uart: Fix two TX concurrency issues пре 3 година
uart_types.h 8138f8bb02 driver: remove deprecated code пре 3 година
uhci_types.h c053ef0541 examples: added support of ESP32-S3 chip in controller_hci_uart example пре 4 година
usb_dwc_hal.h d333833f59 usb_host: Rename struct/ll/hal symbols to use "usb_dwc" prefix пре 3 година
usb_dwc_ll.h d333833f59 usb_host: Rename struct/ll/hal symbols to use "usb_dwc" prefix пре 3 година
usb_hal.h 5425ef4ee4 hal: extract hal component from soc component пре 5 година
usb_phy_hal.h 1fcd639224 usb: Add usb_phy driver to support operations on USB PHY пре 4 година
usb_phy_types.h 1fcd639224 usb: Add usb_phy driver to support operations on USB PHY пре 4 година
usb_types_private.h accbaee57c Add USB Host Library пре 4 година
wdt_hal.h 9c37441b17 wdt: refactor wdt codes to use unified type пре 3 година
wdt_types.h 5e9e8c396f wdt: add support for WDTs on C6 пре 3 година
xt_wdt_hal.h 4869b3cd4a WDT: Add support for XTAL32K Watchdog timer пре 4 година

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.