2015-04-18 2 views
0

Есть ли простой способ найти указатель на основе стека программным путем? Я кодирую микроконтроллер STM32F4 и компилирую компилятор arm-none-eabi-gcc.Адрес ячейки базы данных

Когда я использовал компилятор Arm C, упакованный в Keil uVision 5, я мог использовать функцию ABI __user_initial_stackheap() для извлечения базы стека, но это не похоже на работу с gcc.

+1

нет общего ответа на этот вопрос, так как это зависит от того, какой код запуска вы используете. Это определяет область стека и, возможно, также экспортирует глобальный символ с его адресом. – mfro

+0

Кажется, вы правы. Я нашел решение, ссылаясь на переменные сценария компоновщика. В ближайшее время опубликует мое решение. – KLing

ответ

1

Это зависит от того, как настроены различные разделы памяти (как правило, в сценарии компоновщика). Например, компоновщик скрипт для STM32F4 может определить стек базы как:

__stack = ORIGIN(RAM) + LENGTH(RAM); 

Затем переменные компоновщик сценария могут быть доступны в коде C с

extern uint32_t __stack; 

void foo() { 
    uint32_t stack_base = &__stack; 
} 
Смежные вопросы