Я думаю о настройке области памяти в моей STM32L151 (Cortex M3) для кучи, которая будет использоваться в malloc().Настройка кучи в памяти для встроенной системы ARM
Я использую toolchain и newlib GNU ARM.
Я знаю, как настроить стек в сценарии компоновщика, назначить адрес стека SP ... и что ARM uC может получить доступ к стеку с помощью указателя стека, SP.
Мой вопрос: как компилятор GNU GCC знает, где находится адрес кучи? Я могу настроить кучу в скрипте компоновщика, как и для стека. Но как передать информацию о куче в компилятор GCC?
спасибо.
1) таНос на такую систему, что это плохая идея ... 2) newlib имеет libcfunc.c и система что-то файл это все системные интерфейсы, в том числе malloc, посмотрите, как сообщить newlib, где находится ваша куча. компилятор не заботится и не знает, что malloc - это библиотека C, которая не является компилятором. –
@old_timer, к сожалению, в newlib есть ряд стандартных функций, которые используют malloc/free (т. Е. Некоторые из таких вещей, как dtoa, itoa, вызванные из vsnprint, также localtime и т. Д.). Поэтому, если вы собираетесь использовать любой из них, вам понадобится хотя бы небольшая куча. –
@CraigB, это точка, это голый металл, таких функций следует избегать на такой платформе. Нет места для malloc в такой системе, как любая функция, которая опирается на нее. Если вам нужна операционная система или вы не можете жить без системных вызовов, найдите подходящую платформу. Они мало ценят на такой платформе, легко заменяются чем-то разумным. –