Этот код из многих примеров FreeRTOS. В линкере объявляются много __end с различными подчёркиваниями. И это конец размещения данных в RAM, то есть начало heap. Вроде этот код работает так: выделяется память от конца даных до текущего указателя стека. Что есть говнокод, потому что метка "размер кучи" не определена, а метка "размер стека" не используется, вместо неё используется текущий получаемый на момент выполнения регистр стека. Надобно бы определиться с концом стека по-другому, может, в линкере завести соответствующие секции или константы.