|
задание размера стеков, как узнать какой размер стэка нужно задавать |
|
|
|
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 ... и так и так будет работать ... Как узнать сколько байт под стэк нужно выделить, чтобы и мало не было и слишком много не дать ...
|
|
|
|
|
 |
Ответов
|
Apr 3 2014, 08:36
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 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. И когда память не была забита, хватало места и для стека.
|
|
|
|
|
Apr 4 2014, 10:58
|
Участник

Группа: Участник
Сообщений: 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 Надеюсь поможет.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|