реклама на сайте
подробности

 
 
> задание размера стеков, как узнать какой размер стэка нужно задавать
poq12
сообщение Sep 2 2009, 20:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 20-05-08
Из: Санкт-Петербург
Пользователь №: 37 681



Четкого ответа на данный вопрос я для себя найти не смог, поэтому решил задать его здесь. Собственно вопрос:
(использую LPC2148, среда Uvision3, компилятор RealView)
Я продумал алгоритм как должна работать программа, чтобы железо выполняло желаемые действия, написал её, скомпилировал, зашил в процессор - все работет, претензий нет. Впроцессе написания нужно задать размер стэков для разных режимов работы процессора в файле "startup.s", в частности например, режимов "supervisor mode" - 8bytes, "interrupt mode"- 80 bytes, "user/system mode" - 400bytes. Количество отводимых байт я брал "от балды" исходя из того сколько указано в идущих примерах.
Теперь сам вопрос - как узнать сколько байт для стэка нужно выделять данным режимам, с чего например брать 400, а не 300 ... и так и так будет работать ... Как узнать сколько байт под стэк нужно выделить, чтобы и мало не было и слишком много не дать ... smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Apr 3 2014, 08:36
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Добавляю в *.sct
ARM_LIB_STACK 0x10002000 EMPTY -0x0400 { }
не помогает.
Вау - работает, вижу в отладчике SP = 0x10002000
Но когда всю обычную RAM (не CCMRAM) пытаюсь забрать под массив, не складывается.
Т.е. теперь вопрос - как разместить остальные переменные в CCMRAM.
В неё же у меня и код перегружается, и из нее выполняется.
В-общем, что-то со стеком, сначала в основной памяти размещается, а потом в CCM. Приступаю штудировать доку по линкеру.

Кстати, в Keil для IRAM1 указан неправильный размер, надо A000 (40k) вместо C000 (48k).
Из-за этого компилируется без ошибок, а после запуска вываливается в HardFault.
А все потому, что стек размещается сразу после всех переменных (+ куча, если есть), а не в конце RAM. И когда память не была забита, хватало места и для стека.
Go to the top of the page
 
+Quote Post
-JonnS-
сообщение Apr 4 2014, 10:58
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-05-07
Из: Болгария
Пользователь №: 27 577



Цитата(ViKo @ Apr 3 2014, 10:36) *
как разместить остальные переменные в CCMRAM.

Я делал так:
в Scatter-файл обявляю:
Код
LR_IRAM2 0x10000000 0x00010000  {
  RW_IRAM2 0x10000000 0x00010000  {
    *(CCM_RW)
   .ANY (+RW)
  }
}

в "main.c"
Код
#pragma arm section rwdata = "CCM_RW"
uint8_t h[] = {1, 2, 3};
#pragma arm section rwdata

#pragma arm section zidata = "CCM_RW"
SAMPLE M_Buf[COUNT];
#pragma arm section zidata

Надеюсь поможет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- poq12   задание размера стеков   Sep 2 2009, 20:10
- - zltigo   Цитата(poq12 @ Sep 2 2009, 23:10) Четкого...   Sep 2 2009, 20:41
- - @Ark   Можно попытаться найти "наихудший случай...   Sep 2 2009, 21:09
- - poq12   Спасибо за ответы   Sep 4 2009, 19:28
- - ViKo   Как расположить стек по заданному адресу? Когда я ...   May 13 2010, 14:08
|- - zltigo   Цитата(ViKo @ May 13 2010, 17:08) Когда я...   May 13 2010, 14:15
|- - ViKo   Цитата(zltigo @ May 13 2010, 17:15) Болва...   May 13 2010, 14:43
|- - zltigo   Цитата(ViKo @ May 13 2010, 17:43) Так дай...   May 13 2010, 15:26
- - ViKo   Я конкретно не указывал стек, иначе зачем бы я воп...   May 13 2010, 17:30
|- - zltigo   Цитата(ViKo @ May 13 2010, 20:30) А что ж...   May 13 2010, 17:43
|- - ViKo   Цитата(zltigo @ May 13 2010, 20:43) Верит...   May 13 2010, 18:11
|- - zltigo   Цитата(ViKo @ May 13 2010, 21:11) В други...   May 13 2010, 18:20
|- - ViKo   Цитата(zltigo @ May 13 2010, 21:20) Зачем...   May 13 2010, 18:29
- - ViKo   По поводу размера стека поделюсь информацией. Был ...   May 15 2010, 20:10
|- - aaarrr   Цитата(ViKo @ May 16 2010, 00:10) Кто бы ...   May 15 2010, 20:14
- - Genadi Zawidowski   Цитатапроцессор перенес массив констант для инициа...   May 15 2010, 20:21
- - ViKo   Неправильно сказал - не через стек переписывает, ...   May 15 2010, 21:46
- - ViKo   Можно вопрос, не по теме, но непосредственно вытек...   May 18 2010, 07:55
- - aaarrr   А Вы окошечки сообщений посмотрите: он, наверное, ...   May 18 2010, 15:31
|- - ViKo   Цитата(aaarrr @ May 18 2010, 18:31) А Вы ...   May 18 2010, 19:42
- - ViKo   А на такой вопрос подскажите, в чем дело (может, и...   May 19 2010, 10:28
|- - aaarrr   Цитата(ViKo @ May 19 2010, 14:28) Отмечаю...   May 19 2010, 11:09
|- - ViKo   Цитата(aaarrr @ May 19 2010, 14:09) Scatt...   May 19 2010, 11:21
|- - aaarrr   Цитата(ViKo @ May 19 2010, 15:21) Я думаю...   May 19 2010, 11:35
|- - ViKo   Цитата(aaarrr @ May 19 2010, 14:35) А вот...   May 19 2010, 11:49
|- - aaarrr   Цитата(ViKo @ May 19 2010, 15:49) А внешн...   May 19 2010, 11:54
- - ViKo   В-общем, эта птичка default именно для этого и соз...   May 19 2010, 12:07
- - ViKo   Возвращаюсь к теме. Хочу для STM32F303 в Keil зада...   Apr 3 2014, 03:56
- - ViKo   Ого, блин! В AN4296 "Overview and tips fo...   Apr 3 2014, 07:32
|- - ViKo   Цитата(-JonnS- @ Apr 4 2014, 13...   Apr 6 2014, 12:41
- - -JonnS-   CCM-Ram у F4xx вроди как 64k. Пример под F4 discov...   Apr 6 2014, 14:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 13:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016