2022-05-10 22:32:56 -04:00
|
|
|
/*
|
2024-07-09 22:01:22 -04:00
|
|
|
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
2022-05-10 22:32:56 -04:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "esp_err.h"
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
2022-08-18 02:00:46 -04:00
|
|
|
* @brief Check if the pointer is on PSRAM
|
2022-05-10 22:32:56 -04:00
|
|
|
*
|
2022-08-18 02:00:46 -04:00
|
|
|
* @param[in] p The pointer to check
|
2022-06-27 06:48:01 -04:00
|
|
|
*
|
2022-05-10 22:32:56 -04:00
|
|
|
* @return
|
2022-08-18 02:00:46 -04:00
|
|
|
* - False: the pointer isn't on PSRAM, or PSRAM isn't initialised successfully
|
|
|
|
* - True: the pointer is on PSRAM
|
2022-05-10 22:32:56 -04:00
|
|
|
*/
|
2022-08-18 02:00:46 -04:00
|
|
|
bool esp_psram_check_ptr_addr(const void *p);
|
2022-05-10 22:32:56 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Add the initialized PSRAM to the heap allocator.
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
* - ESP_OK: On success
|
|
|
|
* Other error type, see `heap_caps_add_region`.
|
|
|
|
*/
|
|
|
|
esp_err_t esp_psram_extram_add_to_heap_allocator(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Reserve a pool of internal memory for specific DMA/internal allocations
|
|
|
|
*
|
|
|
|
* @param size Size of reserved pool in bytes
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
* - ESP_OK: On success
|
|
|
|
* - ESP_ERR_NO_MEM: When no memory available for pool
|
|
|
|
*/
|
|
|
|
esp_err_t esp_psram_extram_reserve_dma_pool(size_t size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Memory test for PSRAM. Should be called after PSRAM is initialized and
|
|
|
|
* (in case of a dual-core system) the app CPU is online. This test overwrites the
|
|
|
|
* memory with crap, so do not call after e.g. the heap allocator has stored important
|
|
|
|
* stuff in PSRAM.
|
|
|
|
*
|
|
|
|
* @return true on success, false on failed memory test
|
|
|
|
*/
|
|
|
|
bool esp_psram_extram_test(void);
|
|
|
|
|
2024-07-09 22:01:22 -04:00
|
|
|
/**
|
|
|
|
* @brief Init .bss on psram
|
|
|
|
*/
|
|
|
|
void esp_psram_bss_init(void);
|
|
|
|
|
2022-05-10 22:32:56 -04:00
|
|
|
#if CONFIG_IDF_TARGET_ESP32
|
|
|
|
/**
|
|
|
|
* @brief Force a writeback of the data in the PSRAM cache. This is to be called whenever
|
|
|
|
* cache is disabled, because disabling cache on the ESP32 discards the data in the PSRAM
|
|
|
|
* cache.
|
|
|
|
*
|
|
|
|
* This is meant for use from within the SPI flash code.
|
|
|
|
*/
|
|
|
|
void esp_psram_extram_writeback_cache(void);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|