Полная версия этой страницы:
стек область памяти
Метценгерштейн
Apr 6 2015, 09:10
Вылавливаю непонятности в работе процессора, я правильно понимаю, что при таких настройках

места, отмеченные стрелочками, это начала памяти RAM, а размер- это надо прибавить к началу памяти RAM- получим конец памяти?
т.е. RAM задействована от 0x20002000 до 0x20004000 ?
вот карта памяти NORDIC
Цитата(Метценгерштейн @ Apr 6 2015, 12:10)

т.е. RAM задействована от 0x20002000 до 0x20004000 ?
Правильно.
Метценгерштейн
Apr 6 2015, 09:21
тогда еще вопрос- если размер стека 2048, то он с какого адреса начинает располагаться? И когда первое значение в него входит, на какой адрес? С какого адреса рост стека начинается (начало стека)?
Вообще, расположить можно с любого адреса. Обычно начинается на самом верху, т.е. 0x20004000 - 2048 = 0x20003800 в данном случае.
Метценгерштейн
Apr 6 2015, 09:33
т.е. скорее всего вершина стека 0x20003800. Правильно?
У ARM стек, вроде же, вниз растет? Начинается с самого старшего адреса.
Метценгерштейн
Apr 6 2015, 09:54
а как узнать, куда растет он?
Да, вниз, конечно. То есть от 0x20004000 до 0x20003800.
Цитата(Метценгерштейн @ Apr 6 2015, 12:54)

а как узнать, куда растет он?
Лучший способ приобщиться к ARM-Cortex - скачать из закромов книжки
J. Yiu, там их несколько.
Метценгерштейн
Apr 6 2015, 11:10

я правильно понимаю, что стек у меня в точке останова ушел на глубину
0x20004000 -
0x20003AA8
= 0x558
?
это не много?
А вот картинка сразу после ресета- программа еще не запущена- курсор стоит в начале main ();

?? Почему курсор не показывает сразу на начало стека?
Цитата(Метценгерштейн @ Apr 6 2015, 14:10)

Почему курсор не показывает сразу на начало стека?
Приложите map-файл, тогда можно будет что-то сказать.
RabidRabbit
Apr 7 2015, 05:31
Это же вроде Cortex-M0 - в Вашем бинарнике первые 4 байта - начальное содержимое SP после сброса.
Метценгерштейн
Apr 7 2015, 06:22
Да, это cortex -M0
SP- это не адрес, а содержимое?
Цитата(Метценгерштейн @ Apr 7 2015, 09:22)

SP- это не адрес, а содержимое?
SP содержит адрес вершины стека. Первое слово в бинарном образе - начальное значение SP.
Чтобы узнать, что там именно со стеком, нужно посмотреть содержимое .map и .scat
редактор
Apr 7 2015, 07:16
Keil по умолчанию размещает стек исходя из объема задействованого ОЗУ, размера выделеного на кучу и размера выделенного под стек.
Адрес стека примерно так вычисляется SP = RAM_START_ADR + RAM_SIZE [+HEAP_SIZE] + STACK_SIZE
Соответсвенно учитывается выравнивание.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.