В IAR MSP можно как-то узнать до какого адреса доползает стек?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
-=Shura=-
12 февраля 2004 г. 11:32
Составить ответ
|||
Конференция
|||
Архив
Ответы
можно только методом научного тыка прописать память где находится стек константой - потом когда все функции ситемы во всех возможный вариантах будет запущена то вы по памяти узнаешь где бывал стек
—
net_net
(12.02.2004 14:25,
пустое
)
и это при том если стек только один ;-)
—
net_net
(12.02.2004 14:35,
пустое
)
1-й метод - это обычный поиск экстремума (min или max - зависит от типа процессора)
—
-Tумблер-
(12.02.2004 13:06, 376 байт)
2-й метод - перед стартом проги :
—
-Tумблер-
(12.02.2004 13:10, 263 байт)
Для этого программа как минимум должна работать ... А если нет?
—
Vladimir Ljaschko
(12.02.2004 13:52,
пустое
)
Ответ:
—
-Tумблер-
(12.02.2004 14:21, 603 байт)
А если нет, то точно никогда не узнаешь
—
-=Shura=-
(12.02.2004 13:57,
пустое
)
Ответ: Вот и я об этом...
—
Vladimir Ljaschko
(12.02.2004 14:15,
пустое
)
Так и делаю, но кто мешает дебаггеру автоматом отслеживать макс. глубину использования стека?
—
-=Shura=-
(12.02.2004 13:12,
пустое
)
если есть вложенные прерывания, то их мах вложенность вестчшщь вероятностная - когда они там совпадут...
—
=mse=
(12.02.2004 13:21, 250 байт)
Й-о ! ;)
—
-Tумблер-
(12.02.2004 13:16, 137 байт)
Вопчем, ясно, всем спасибо за обсуждение.
—
-=Shura=-
(12.02.2004 13:17,
пустое
)
Директива линкера -xmos не поможет? (+)
—
cout
(12.02.2004 13:02, 1718 байт)
Ответ: Да, вот что нужно! Прерывания самому добавить. Пробую для MSP.
—
Vladimir Ljaschko
(12.02.2004 13:56,
пустое
)
Так тут опять же "approximately". А ведь это можно и абсолютно точно узнать
—
-=Shura=-
(12.02.2004 13:04,
пустое
)
Перефразируя шулеров, можно сказать: Знал бы размер стека - жил бы в Сочи. :)
—
cout
(12.02.2004 13:09, 60 байт)
О, это не MSP, сорри :)))
—
cout
(12.02.2004 13:04,
пустое
)
Ответ: М-да (давно хотелось бы увидеть)! Тоже озадачиваетесь нехваткой памяти раб. регистров? ;) (+)
—
SergAnt
(12.02.2004 12:18, 56 байт)
Да как бы ресурсы есть пока, но хотелось бы точно знать, когда они закончатся. Причём тут только xcl я не понял?
—
-=Shura=-
(12.02.2004 12:19,
пустое
)
Ответ: Дык, вот этим двигаю!
—
SergAnt
(12.02.2004 12:42, 217 байт)
Так а смысл двигать, если не знаешь сколько его нужно
—
-=Shura=-
(12.02.2004 12:51,
пустое
)
Ответ: Согласен! "грязный" способ. Но IAR IDE особо ничего не предлагает :(
—
SergAnt
(12.02.2004 13:13,
пустое
)
Сам вот думаю...В листинге есть вложенность функций. Взять максимум и вручную добавить вложенность прерываний.
—
Vladimir Ljaschko
(12.02.2004 12:29,
пустое
)
и это единственный способ...просчитать вручную
—
Кирк
(12.02.2004 12:32,
пустое
)
Не по русски сказал, но понятно? :-)
—
Vladimir Ljaschko
(12.02.2004 12:30,
пустое
)
Мне - нет. Если можно, поясните
—
-=Shura=-
(12.02.2004 12:34,
пустое
)
(+) = Max Stack usage(function)+ sum (interrupts stack usage) ?
—
Vladimir Ljaschko
(12.02.2004 12:49, 1008 байт)
ну, типа закат Солнца вручную... карандашиком посчитать ;О)...
—
=mse=
(12.02.2004 12:48, 172 байт)
Только сам не пойму - IAR ведь не учитывает вызовы функций из другого модуля. И это с карандашиком?
—
Vladimir Ljaschko
(12.02.2004 12:58,
пустое
)
Вот и я о том же.
—
-=Shura=-
(12.02.2004 13:00,
пустое
)
Да, проникся я этой дилеммой - размеры стека/ ОЗУ/программной памяти... ну и ясность... То одно, то другое увязнет...То ли дело х86...
—
Vladimir Ljaschko
(12.02.2004 13:13,
пустое
)
а Вы можете сами представить как это можно вычислить?
—
Кирк
(12.02.2004 11:59,
пустое
)
Я - могу. Я могу и системный макрос написать, чтоб он этим занимался. Меня интересует - не реализовано ли это уже штатными средствами.
—
-=Shura=-
(12.02.2004 12:02,
пустое
)
макрос? интересно как это...
—
Кирк
(12.02.2004 12:05,
пустое
)
Читайте в хелпе раздел Using System Macros
—
-=Shura=-
(12.02.2004 12:21,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru