Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: стек область памяти
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Метценгерштейн
Вылавливаю непонятности в работе процессора, я правильно понимаю, что при таких настройках

места, отмеченные стрелочками, это начала памяти RAM, а размер- это надо прибавить к началу памяти RAM- получим конец памяти?
т.е. RAM задействована от 0x20002000 до 0x20004000 ?

вот карта памяти NORDIC
aaarrr
Цитата(Метценгерштейн @ Apr 6 2015, 12:10) *
т.е. RAM задействована от 0x20002000 до 0x20004000 ?

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

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

я правильно понимаю, что стек у меня в точке останова ушел на глубину
0x20004000 -
0x20003AA8

= 0x558
?
это не много?

А вот картинка сразу после ресета- программа еще не запущена- курсор стоит в начале main ();


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

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

SP содержит адрес вершины стека. Первое слово в бинарном образе - начальное значение SP.
Чтобы узнать, что там именно со стеком, нужно посмотреть содержимое .map и .scat
редактор
Keil по умолчанию размещает стек исходя из объема задействованого ОЗУ, размера выделеного на кучу и размера выделенного под стек.
Адрес стека примерно так вычисляется SP = RAM_START_ADR + RAM_SIZE [+HEAP_SIZE] + STACK_SIZE
Соответсвенно учитывается выравнивание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.