Распределение оперативной памяти в STM32
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Поправить можно все что угодно. На вопрос Вы не ответили, хотя буквы написали.
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Распределение оперативной памяти в STM32
Может вам абдуриной заняться? Я сам не пробовал, но говорят там думать вообще не надо.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
То есть ответить Вы не можете.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Распределение оперативной памяти в STM32
Читайте с первого сообщения - там все ответы.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Тема создана не мной, вопрос задан не лично Вам, никто не заставляет Вас на него отвечать, тем более отвечать, но не на него, а на что-то другое. Ответ на вопрос зачем дефолтное значение SP не конце памяти отсутствует. Вопрос четкий и однозначный, как и положено для точных технических предметов для обсуждения . Никто не спрашивал, а можно ли его по другому инициализировать, или как писать скрипт линкера или еще какой-то вопрос. Такой вопрос понятен даже "ардуинщуку" (никогда не пробовал это, но и не считаю чем-то плохим) и подразумевает четкий ответ, тут вроде не философский форум.
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Распределение оперативной памяти в STM32
Я считаю, что если стек улетит ниже начала памяти, то программа сразу обрушится и вы это точно заметите. В отличии от случая когда он будет бить по своей памяти.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Я не понял этот тезис. Имеете ввиду что стек уйдет в никем не за декларированную память? Можно считать что у Вас просто стэк больше по факту, чем заявлен.VladislavS писал(а): В отличии от случая когда он будет бить по своей памяти.
К сожалению это не факт и сбой этот может происходить один раз в году и это при наличии например 50% свободной памяти.VladislavS писал(а):сразу обрушится и вы это точно заметите.
Конечно прогая на ассме легко посчитать нужный размер стэка, как это сделать на ЯВУ, кроме интуиции я не знаю. Можно попробовать конечно в каких-то глубоких подпрограммах считать SP, но и это ничего значить не будет. Неисповедимы пути компилятора.
Поэтому по-мне, самое разумное отдать по стек, всю оставшуюся память, так как только ее необходимые размеры трудно установить, в отличии от других однозначных секций памяти. Что и сделано, как оказалось по умолчанию в EmBitz.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Распределение оперативной памяти в STM32
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3442961#p3442961"]Имеете ввиду что стек уйдет в никем не за декларированную память? Можно считать что у Вас просто стэк больше по факту, чем заявлен.[/uquote]Ниже чем ОЗУ. Там пусто. Программе не сможет не упасть, если стек туда выйдет.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Распределение оперативной памяти в STM32
[uquote="Мурик",url="/forum/viewtopic.php?p=3442883#p3442883"]
Думаю был бы более уместным пример с RTOS где свой стек на каждую задачу.[/uquote]для RTOS распределение "стеков" задач и распределение стека вообще - разные вещи. С точки зрения нужд самой ОС стек один, а отдельные стеки под задачи распределяет уже ОС - это вот никак не вопрос компилятора и/или линкера. Даже странно, что вы об этом упомянули, а большой дядя ничтоже сумняшеся согласился.VladislavS писал(а):Вот, например, инициализация стеков ядра ARM926.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Надо поглядеть, если это вызовет исключение, то мысля здравая. Вот только по умолчанию стек не первый, а сразу после всех секций и потом пустое, заброшенное и никому не нужное целое поле оперативкиVladislavS писал(а):Ниже чем ОЗУ
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Распределение оперативной памяти в STM32
В STM33 есть исключения по выходу за области памяти?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
По стеку не знаю, надо поглядеть. А так я улетал из-за ошибок с указателями.
Добавлено after 5 minutes 15 seconds:
Может попробую сейчас что-нибудь. А может не сейчас
Добавлено after 10 minutes 57 seconds:
Есть такой вектор в 103тьем
Щаз поковыряю программ мануал на ядро M3. Там должно про это быть расписюлено.
Добавлено after 5 minutes 15 seconds:
Может попробую сейчас что-нибудь. А может не сейчас
Добавлено after 10 minutes 57 seconds:
Есть такой вектор в 103тьем
Код: Выделить всё
0 MemManage Memory management- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Распределение оперативной памяти в STM32
Наличие такого вектора может помочь в отладке сложных приложений. Но что-то мне подсказывает, что далеко не у всех МК это есть. По-моему, модуль аппаратного контроля областей памяти (не знаю, как оно правильно зовется) только в "старших" АРМах есть...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Распределение оперативной памяти в STM32
Исключение не обязательно. Достаточно возврата по 0xFFFFFFFF
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
И что это за хрень будет. А может будет не возврат, а порча каких-то данных?VladislavS писал(а):Исключение не обязательно. Достаточно возврата по 0xFFFFFFFF
Добавлено after 5 minutes 36 seconds:
Вот какой флаг есть в ядре M3. Помоему это то.
Код: Выделить всё
Bit 4MSTKERR: Memory manager fault on stacking for exception entry
When this bit is 1, the SP is still adjusted but the values in the context area on the stack might
be incorrect. The processor has not written a fault address to the MMAR.Re: Распределение оперативной памяти в STM32
Сумневающиеся, о отладке в RAM не забыли?
В эмоблитсе это нонсенс...
В эмоблитсе это нонсенс...
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Вот когда перестают люди меряться письками, то могут возникнуть интересные идеи от совместных мыслей.
Добавлено after 1 minute 3 seconds:
Добавлено after 1 minute 3 seconds:
Я так пробовал и делал ряд научных и ненаучных опытов по скорости выполнения кода.dosikus писал(а):о отладке в RAM не забыли?
Re: Распределение оперативной памяти в STM32
Z_h_e, меня особенно прикололо , что крайне неудачную поделку с устаревшим гнутым компилем здесь превозносят как постулат истины. Ну ладно Мурик уверовал, но остальные то- общий маразм?
Re: Распределение оперативной памяти в STM32
Для этого нужно разместить стек в начале ОЗУ, а за ним все остальное. Тогда стек сможет не затирая остальных данных выйти за пределы ОЗУ. Что при этом произойдет не проверял, но вероятно HardFault.VladislavS писал(а):Я считаю, что если стек улетит ниже начала памяти, то программа сразу обрушится
Упомянул как наиболее очевидный пример нескольких стеков. Вообще у каждой задачи свой стек и есть вероятность его переполнения с затиранием служебных данных задачи.ARV писал(а):для RTOS распределение "стеков" задач и распределение стека вообще - разные вещи. С точки зрения нужд самой ОС стек один, а отдельные стеки под задачи распределяет уже ОС - это вот никак не вопрос компилятора и/или линкера. Даже странно, что вы об этом упомянули, а большой дядя ничтоже сумняшеся согласился.
В STM33 не знаю, а в STM32 есть. При обращении у несуществующей области адресного пространства производится переход в прерывание HardFault. В STM32 адресное пространство составляет 4 ГБ в котором располагаются флеш, ОЗУ, регистры периферии и ядра и т. д. и в нем много свободного (неиспользуемого) места.ARV писал(а):В STM33 есть исключения по выходу за области памяти?
Наличие отладчика в этом помогает. Можете посмотреть если хотите. http://purebasic.mybb.ru/viewtopic.php?id=564#p7599ARV писал(а):Наличие такого вектора может помочь в отладке сложных приложений.
В данном случае дело не в памяти, а в обращении к нереализованному адресу.ARV писал(а):По-моему, модуль аппаратного контроля областей памяти (не знаю, как оно правильно зовется) только в "старших" АРМах есть...
Есть такая галочка Execute from RAM в окне настроек отладчика.dosikus писал(а):Сумневающиеся, о отладке в RAM не забыли?
В эмоблитсе это нонсенс...
Спойлер

Последний раз редактировалось Мурик Пт авг 24, 2018 19:52:00, всего редактировалось 2 раза.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Распределение оперативной памяти в STM32
Да я и не спорю что-то может быть и плохо. Только как-то никто не мотивирует почему. Какая-та фраза Портоса, плохо потому что плохо.Z_h_e, меня особенно прикололо , что крайне неудачную поделку с устаревшим гнутым компилем здесь превозносят как постулат истины. Ну ладно Мурик уверовал, но остальные то- общий маразм?
Во что я уверовал? Я объяснил свою позицию, по-моему она достаточно понятна почему.
Добавлено after 9 minutes 6 seconds:
Судя по RM и PM. В М0 уже нет таких исключений с памятью



