Перейти к содержанию
    

как указать в линкере размер стека/хипа с указанием конкретных границ

Еще раз: Си-шная куча к куче FreeRTOS (heap_2.c) не имеет отношения. Если Вы этого не понимаете, мне очень жаль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 минуты назад, another_one сказал:

куча имеет отношение в выделении памяти

Таскам и системным вызовам ртос гдето надо размещатся, а в случае ограниченной памяти лучше это делать через управление от самой ОС

В случае ограничения памяти не нужно вообще кучу использовать. Так как статически распределять память - обычно гораздо эффективнее, чем динамически.

И насчёт тасков и пр.: во-первых - использовать именно FreeRTOS выбрали вы сами. Почему не выбрали другую ОС, которая не использует дин.память? на FreeRTOS свет клином не сошёлся.

И во-вторых: я хоть и не использую FreeRTOS, но насколько знаю - в ней есть возможность распределять память (для стеков задач) статически. Динамическое распределение не обязательно даже во FreeRTOS.

 

Так что, куча - это чисто ваш выбор. А не необходимость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 hours ago, jcxz said:

При таких скромных ресурсах ОЗУ, полезно обходиться вообще без heap-ов....  :wink:

Стандартной библиотеке в GCC нужно минимум 256 байт кучи для инициализации.

У FreeRTOS своя куча.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, tonyk_av сказал:

Стандартной библиотеке в GCC нужно минимум 256 байт кучи для инициализации.

Хоть в чём-то IAR круче GCC.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/6/2022 at 5:29 PM, jcxz said:

Хоть в чём-то IAR круче GCC.  :biggrin:

Ну а если так же голословно сказать, что стандартной библиотеке в IAR требуется минимум 512 байт кучи для инициализации? В том сообщении, на которое вы отвечали немного не хватает конкретики ;) Вообще можно и без кучи, как вы выше предложили. И, конечно, это никак не зависит от компилятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, one_eight_seven said:

В том сообщении, на которое вы отвечали немного не хватает конкретики ;)

Какая нужна конкретика? Пройдите отладчиком и посмотрите, что где-то в дебрях есть malloc().

1 hour ago, one_eight_seven said:

Вообще можно и без кучи, как вы выше предложили. И, конечно, это никак не зависит от компилятора.

Это зависит от используемой библиотеки, а не компилятора. Думаю, что есть реализации стандартной библиотеки без использования кучи. Возможно, на использование кучи влияют функции, которые дальше используются в программе. Мне памяти хватает, поэтому рыть землю из-за 256 байт я не стал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использование кучи библиотекой окружения Си можно отключить, ибо она используется только для поддержки semihosting. Хз как в GCC, но в Keil-е, например, так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Arlleex said:

Использование кучи библиотекой окружения Си можно отключить, ибо она используется только для поддержки semihosting

Не нужно говорить за все реализации стандартных библиотек для С/С++. Давно не пользуюсь Кайлом, но, вроде, у него свои реализации всех стандартных библиотек были, не GNUсные. И нет у меня никакого semihosting.

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...