1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/x-eks-fusion-xf_heap

Клонировать/Скачать
README.md 4.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.06.2025 04:07 4200ce2

XF_HEAP

Основные характеристики

Этот репозиторий использует методы управления памятью из freeRTOS и имеет следующие характеристики:

  1. Поддерживает замену алгоритмов управления памятью, позволяя регистрировать и изменять их реализацию.
  2. Алгоритмы управления памятью уменьшают фрагментацию памяти путем объединения смежных свободных блоков, что повышает эффективность использования памяти.
  3. Можно инициализировать пул памяти с использованием кучи, глобальной области данных или внешнего пространства, что позволяет управлять памятью в соответствии с различными требованиями к памяти.
  4. Можно запросить размер оставшейся свободной памяти и минимальный размер свободной памяти, который когда-либо был доступен.
  5. Выравнивание памяти и скорость доступа.
  6. Добавлено XF_HEAP_LOCK для защиты запросов памяти от вызовов ОС.
  7. Поддерживает стандарт C99, не имеет никаких зависимостей (включая libc), что облегчает его перенос в различные встраиваемые системы.

Адреса открытого исходного кода

github

gitee

Запуск тестов

xmake b                 # Компиляция
xmake r xf_heap         # Запуск примера
xmake r xf_heap_test    # Запуск юнит-тестов

Результаты запуска

Результаты запуска примера

free_size = 12256
free_size = 12236
p = 0x556abe3dc0b0, *p = 123
min_stack_size = 12256
free_size = 12256
```**Результаты запуска юнит-тестов**
```bash
Unity test run 1 of 1
.......

-----------------------
6 Тестов 0 Ошибок 0 Игнорированных
OK

Основные API

/**
 * @brief Запрос памяти
 *
 * @param size Размер запрашиваемой памяти
 * @return void* Адрес запрошенной памяти
 */
void *xf_malloc(size_t size);

/**
 * @brief Освобождение памяти
 *
 * @param pv Адрес освобождаемой памяти
 *
 * @note При освобождении памяти необходимо установить указатель в NULL, чтобы избежать доступа к неосвобожденной памяти
 */
void xf_free(void *pv);

/**
 * @brief Перезагрузка интерфейсов управления памятью
 * 
 * @param api Интерфейсы управления памятью
 * @return int 
 *      - XF_HEAP_FAIL Ошибка в определении параметров
 *      - XF_HEAP_OK Успешная перезагрузка
 */
int xf_heap_api_redirect(const xf_heap_api_t *api);

/**
 * @brief Размонтирование управления памятью
 * 
 * @return int 0 Успешное размонтирование, -1 Неудачное размонтирование 
 */
int xf_heap_uninit(void);

/**
 * @brief Получение общего размера свободной памяти
 *
 * @return size_t Общий размер свободной памяти
 */
size_t xf_heap_get_free_size(void);

/**
 * @brief Получение минимального размера свободной памяти, который когда-либо был доступен
 *
 * @return size_t Размер свободной памяти в байтах
 */
size_t xf_heap_get_min_ever_free_size(void);

Советы по переносу

Перенос требует копирования файлов из папки src. Необходимо предоставить файл конфигурации xf_heap_config.h (если он пуст, используются все значения по умолчанию). Конфигурируемые параметры и значения по умолчанию можно найти в файле xf_heap_internal_config.h.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/x-eks-fusion-xf_heap.git
git@api.gitlife.ru:oschina-mirror/x-eks-fusion-xf_heap.git
oschina-mirror
x-eks-fusion-xf_heap
x-eks-fusion-xf_heap
main