esp-hal 1.1.0

Bare-metal HAL for Espressif devices
Documentation
crate: esp-hal

options:
  - name: place-spi-master-driver-in-ram
    description: Places the SPI master driver in RAM for better performance
    default:
      - value: false

  - name: place-switch-tables-in-ram
    description: "Places switch-tables, some lookup tables and constants related to
      interrupt handling into RAM - resulting in better performance but slightly more
      RAM consumption."
    default:
      - value: true
    stability: !Stable "1.0.0"

  - name: place-anon-in-ram
    description: "Places anonymous symbols into RAM - resulting in better performance
      at the cost of significant more RAM consumption. Best to be combined with
      `place-switch-tables-in-ram`."
    default:
      - value: false
    stability: !Stable "1.0.0"

  - name: place-rmt-driver-in-ram
    description: Places the RMT driver in RAM for better performance
    default:
      - value: false

  - name: spi-address-workaround
    description: "Enables a workaround for the issue where SPI in
      half-duplex mode incorrectly transmits the address on a single line if the
      data buffer is empty."
    default:
      - value: true
    active: 'chip == "esp32"'

  - name: stack-guard-offset
    description: The stack guard variable will be placed this many bytes from the stack's end. Needs to be a multiple of 4.
    default:
      - value: 60
    active: "true"
    stability: !Stable "1.0.0"

  - name: stack-guard-value
    description: The value to be written to the stack guard variable.
    default:
      - value: 3740121773
    display_hint: Hex

  - name: stack-guard-monitoring
    description: Use a data watchpoint to check if the stack guard was overwritten.
    default:
      - value: true

  - name: write-vec-table-monitoring
    description: Use a data watchpoint to check that the vector table was not unintentionally overwritten.
    default:
      - value: false
    active: 'chip == "esp32c2" || chip == "esp32c3" || chip == "esp32c6" || chip == "esp32h2"'

  - name: stack-guard-monitoring-with-debugger-connected
    description: Enable the stack guard also with a debugger connected. Also applies to `write-vec-table-monitoring`.
    default:
      - value: true

  - name: impl-critical-section
    description: "Provide a `critical-section` implementation. Note that if disabled,
      you will need to provide a `critical-section` implementation which is
      using `restore-state-u32`."
    default:
      - value: true

  - name: instruction-cache-size
    description: Instruction cache size to be set on application startup.
    default:
      - value: '"8KB"'
        if: 'chip == "esp32s2"'
      - value: '"32KB"'
    constraints:
      - if: 'chip == "esp32s2"'
        type:
          validator: enumeration
          value:
            - "8KB"
            - "16KB"
      - type:
          validator: enumeration
          value:
            - "16KB"
            - "32KB"
    active: 'chip == "esp32s2" || chip == "esp32s3"'

  - name: instruction-cache-line-size
    description: Instruction cache line size to be set on application startup.
    default:
      - value: '"32B"'
    constraints:
      - type:
          validator: enumeration
          value:
            - "16B"
            - "32B"
    active: 'chip == "esp32s2" || chip == "esp32s3"'

  - name: icache-associated-ways
    description: Instruction cache associated ways to be set on application startup.
    default:
      - value: '"8"'
    constraints:
      - type:
          validator: enumeration
          value:
            - "4"
            - "8"
    active: 'chip == "esp32s3"'

  - name: data-cache-size
    description: Data cache size to be set on application startup.
    default:
      - value: '"8KB"'
        if: 'chip == "esp32s2"'
      - value: '"32KB"'
    constraints:
      - if: 'chip == "esp32s2"'
        type:
          validator: enumeration
          value:
            - "0KB"
            - "8KB"
            - "16KB"
      - type:
          validator: enumeration
          value:
            - "16KB"
            - "32KB"
            - "64KB"
    active: 'chip == "esp32s2" || chip == "esp32s3"'

  - name: data-cache-line-size
    description: Data cache line size to be set on application startup.
    default:
      - value: '"32B"'
    constraints:
      - if: 'chip == "esp32s2"'
        type:
          validator: enumeration
          value:
            - "16B"
            - "32B"
      - type:
          validator: enumeration
          value:
            - "16B"
            - "32B"
            - "64B"
    active: 'chip == "esp32s2" || chip == "esp32s3"'

  - name: dcache-associated-ways
    description: Data cache associated ways to be set on application startup.
    default:
      - value: '"8"'
    constraints:
      - type:
          validator: enumeration
          value:
            - "4"
            - "8"
    active: 'chip == "esp32s3"'

  - name: min-chip-revision
    description: "The minimum chip revision required for the application to run, in format: major * 100 + minor."
    default:
      - value: 0

  - name: use_rwdata_ld_hook
    description: Include 'rwdata_hook.x'
    default:
      - value: false

  - name: use_rwtext_ld_hook
    description: Include 'rwtext_hook.x'
    default:
      - value: false

checks:
  - "ESP_HAL_CONFIG_STACK_GUARD_OFFSET % 4 == 0"