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

 
 
> задание размера стеков, как узнать какой размер стэка нужно задавать
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
сообщение May 19 2010, 10:28
Сообщение #2


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

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



А на такой вопрос подскажите, в чем дело (может, и предыдущий разрешится):
Отмечаю v default регион start 0x6c000000 size 0x40000, имею в scatter файле:
RW_RAM3 0x6C000000 UNINIT 0x00040000 { ; RW data
.ANY (+RW +ZI)
Стек, как и раньше, закидывается в 0x6c000414.
Запускаю симулятор, останавливается с ошибкой
*** error 65: access violation at 0x6C020000 : no 'read' permission
Это как? Разрешена же область! Или со стеком связано? Ведь перед этим обращался к адресам 0x6c000000... без ошибок.
А еще есть эта... куча...!?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 19 2010, 11:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ May 19 2010, 14:28) *
Отмечаю v default регион start 0x6c000000 size 0x40000, имею в scatter файле:
...
Запускаю симулятор, останавливается с ошибкой
*** error 65: access violation at 0x6C020000 : no 'read' permission
Это как? Разрешена же область!

Scatter-файл относится к линкеру, а ошибка к симулятору. Если хотите, чтобы последний не ругался на записи по левым адресам, создайте ini-файл со строкой:
Код
map 0x6c000000, 0x6c0fffff READ WRITE

И подцепите его в качестве Initialization File для симулятора.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 19 2010, 11:21
Сообщение #4


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

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



Цитата(aaarrr @ May 19 2010, 14:09) *
Scatter-файл относится к линкеру, а ошибка к симулятору.

Я думаю, симулятор знает, что сделал линкер. Иначе он бы останавливался при первом же обращении в эту область, по адресу 0x6c000070.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 19 2010, 11:35
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ May 19 2010, 15:21) *
Я думаю, симулятор знает, что сделал линкер.

А вот линкеру как раз знать об этой области ничего не надо - вы же не хотите, чтобы по адресам регистров LCD он распихал данные программы.
Просто объясните симулятору, что такая область есть. Как это делается я написал выше, только диапазон адресов расширьте.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 19 2010, 11:49
Сообщение #6


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

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



Цитата(aaarrr @ May 19 2010, 14:35) *
А вот линкеру как раз знать об этой области ничего не надо - вы же не хотите, чтобы по адресам регистров LCD он распихал данные программы.
Просто объясните симулятору, что такая область есть. Как это делается я написал выше, только диапазон адресов расширьте.

Спасибо, получилось! А я еще недоумевал, почему в симуляторе останавливается, а в железе работает.
А внешние ОЗУ и ПЗУ мне линкеру указывать?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 19 2010, 11:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ May 19 2010, 15:49) *
А внешние ОЗУ и ПЗУ мне линкеру указывать?

Если в них надо разместить код/данные - то указывать. Если они просто существуют, но не используются, то и указывать не за чем.
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   В-общем, эта птичка 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   Добавляю в *.sct ARM_LIB_STACK 0x10002000 EMPTY ...   Apr 3 2014, 08:36
|- - -JonnS-   Цитата(ViKo @ Apr 3 2014, 10:36) как разм...   Apr 4 2014, 10:58
|- - 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 Текстовая версия Сейчас: 26th June 2025 - 18:13
Рейтинг@Mail.ru


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