|
задание размера стеков, как узнать какой размер стэка нужно задавать |
|
|
|
Sep 2 2009, 20:10
|
Участник

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

|
Четкого ответа на данный вопрос я для себя найти не смог, поэтому решил задать его здесь. Собственно вопрос: (использую LPC2148, среда Uvision3, компилятор RealView) Я продумал алгоритм как должна работать программа, чтобы железо выполняло желаемые действия, написал её, скомпилировал, зашил в процессор - все работет, претензий нет. Впроцессе написания нужно задать размер стэков для разных режимов работы процессора в файле "startup.s", в частности например, режимов "supervisor mode" - 8bytes, "interrupt mode"- 80 bytes, "user/system mode" - 400bytes. Количество отводимых байт я брал "от балды" исходя из того сколько указано в идущих примерах. Теперь сам вопрос - как узнать сколько байт для стэка нужно выделять данным режимам, с чего например брать 400, а не 300 ... и так и так будет работать ... Как узнать сколько байт под стэк нужно выделить, чтобы и мало не было и слишком много не дать ...
|
|
|
|
Guest_@Ark_*
|
Sep 2 2009, 21:09
|
Guests

|
Можно попытаться найти "наихудший случай" (для стека) - то есть такое сочетание вызовов и возможных прерываний, при котором стек будет использован максимально. Иногда это получается. Есть еще "экспериментальный" способ. Задаете стек с большим запасом. В начале работы программы заполняете всю область стека известными значениями (нулями, например). Даете поработать программе какое-то время на различных режимах, и затем смотрите - какая часть стека оказалась "затертой" (была использована).
|
|
|
|
|
May 13 2010, 14:43
|

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

|
Цитата(zltigo @ May 13 2010, 17:15)  Болванки образчики тоже есть. Так дайте мне какую-нибудь болванку  Если не трудно. upd. В тех scatter-файлах, что я вижу в хэлпе, не нахожу упоминания стека. Что непонятно - в файле startup_stm32f10x_hd.s вижу стек по адресу 0x20000400. Как запускаю симулятор - загружается 0x64000400.
|
|
|
|
|
May 13 2010, 15:26
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ViKo @ May 13 2010, 17:43)  Так дайте мне какую-нибудь болванку  Легко. У меня сейчас пока такая болванка IAR V5 для Сortex-M3, но Luminary, что совершенно не принципиально - только старшую часть таблицы векторов в соответствие с таблицей другого производителя подправить и все. Стек просто размещается в noinit секции, но естествено можно создать линкером и свою в желаемом месте. Цитата Что непонятно - в файле startup_stm32f10x_hd.s вижу стек по адресу 0x20000400. Как запускаю симулятор - загружается 0x64000400. А с чего Вы решили, что у Вас именно он используется? Его конкретно в проект запихнули? В том, что у Вас явно он уже в библиотеке скомпилированная и указатель на стек линкером из *.icf берется. Вообще, если в каком-то startup есть явное указателя на стек, то это явный дибилизм - ликер об этом не знает и спокойно когда-нибудь туда память распределит  . Конечно,можно какую-то область памяти у линкера забрать, но тогда придется согласовывать числа в startup и линкере. Зачем?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 13 2010, 18:11
|

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

|
Цитата(zltigo @ May 13 2010, 20:43)  Верите, но отродясь во всякие визардики с галочками не заходил, посему не знаю и знать не хочу. То - не визард, а опции для проекта, закладка Target. В другие закладки Вы же заходили, процессор выбирали, отладчик выбирали, оптимизацию...? А, Вы же в IAR работаете...
|
|
|
|
|
May 13 2010, 18:20
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ViKo @ May 13 2010, 21:11)  В другие закладки Вы же заходили Зачем. если есть отработанный и отполированный и, что самое главное ДОКУМЕНТИРОВАННЫЙ интерфейс командной строки? В IDE захожу дабы собрать покрутить какие-либо образчики чужих проектов. И все. Но даже в IDE есть возможность подсовывать вой скрипт и работать не с мутными галочками а с параметрами командной строки. Цитата(ViKo @ May 13 2010, 21:11)  То - не визард Визард и есть - вместо нормального управления несколько готовых рецептов - пипл хавает
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|