Распределение оперативной памяти в STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

Поправить можно все что угодно. На вопрос Вы не ответили, хотя буквы написали.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Распределение оперативной памяти в STM32

Сообщение VladislavS »

Может вам абдуриной заняться? Я сам не пробовал, но говорят там думать вообще не надо.
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

То есть ответить Вы не можете.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Распределение оперативной памяти в STM32

Сообщение VladislavS »

Читайте с первого сообщения - там все ответы.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

Тема создана не мной, вопрос задан не лично Вам, никто не заставляет Вас на него отвечать, тем более отвечать, но не на него, а на что-то другое. Ответ на вопрос зачем дефолтное значение SP не конце памяти отсутствует. Вопрос четкий и однозначный, как и положено для точных технических предметов для обсуждения . Никто не спрашивал, а можно ли его по другому инициализировать, или как писать скрипт линкера или еще какой-то вопрос. Такой вопрос понятен даже "ардуинщуку" (никогда не пробовал это, но и не считаю чем-то плохим) и подразумевает четкий ответ, тут вроде не философский форум.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Распределение оперативной памяти в STM32

Сообщение VladislavS »

Я считаю, что если стек улетит ниже начала памяти, то программа сразу обрушится и вы это точно заметите. В отличии от случая когда он будет бить по своей памяти.
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

VladislavS писал(а): В отличии от случая когда он будет бить по своей памяти.
Я не понял этот тезис. Имеете ввиду что стек уйдет в никем не за декларированную память? Можно считать что у Вас просто стэк больше по факту, чем заявлен.
VladislavS писал(а):сразу обрушится и вы это точно заметите.
К сожалению это не факт и сбой этот может происходить один раз в году и это при наличии например 50% свободной памяти.
Конечно прогая на ассме легко посчитать нужный размер стэка, как это сделать на ЯВУ, кроме интуиции я не знаю. Можно попробовать конечно в каких-то глубоких подпрограммах считать SP, но и это ничего значить не будет. Неисповедимы пути компилятора.

Поэтому по-мне, самое разумное отдать по стек, всю оставшуюся память, так как только ее необходимые размеры трудно установить, в отличии от других однозначных секций памяти. Что и сделано, как оказалось по умолчанию в EmBitz.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Распределение оперативной памяти в STM32

Сообщение VladislavS »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3442961#p3442961"]Имеете ввиду что стек уйдет в никем не за декларированную память? Можно считать что у Вас просто стэк больше по факту, чем заявлен.[/uquote]Ниже чем ОЗУ. Там пусто. Программе не сможет не упасть, если стек туда выйдет.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Распределение оперативной памяти в STM32

Сообщение ARV »

[uquote="Мурик",url="/forum/viewtopic.php?p=3442883#p3442883"]
VladislavS писал(а):Вот, например, инициализация стеков ядра ARM926.
Думаю был бы более уместным пример с RTOS где свой стек на каждую задачу.[/uquote]для RTOS распределение "стеков" задач и распределение стека вообще - разные вещи. С точки зрения нужд самой ОС стек один, а отдельные стеки под задачи распределяет уже ОС - это вот никак не вопрос компилятора и/или линкера. Даже странно, что вы об этом упомянули, а большой дядя ничтоже сумняшеся согласился.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

VladislavS писал(а):Ниже чем ОЗУ
Надо поглядеть, если это вызовет исключение, то мысля здравая. Вот только по умолчанию стек не первый, а сразу после всех секций и потом пустое, заброшенное и никому не нужное целое поле оперативки :).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Распределение оперативной памяти в STM32

Сообщение ARV »

В STM33 есть исключения по выходу за области памяти?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

По стеку не знаю, надо поглядеть. А так я улетал из-за ошибок с указателями.

Добавлено after 5 minutes 15 seconds:
Может попробую сейчас что-нибудь. А может не сейчас :)

Добавлено after 10 minutes 57 seconds:
Есть такой вектор в 103тьем

Код: Выделить всё

0  MemManage Memory management
Щаз поковыряю программ мануал на ядро M3. Там должно про это быть расписюлено.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Распределение оперативной памяти в STM32

Сообщение ARV »

Наличие такого вектора может помочь в отладке сложных приложений. Но что-то мне подсказывает, что далеко не у всех МК это есть. По-моему, модуль аппаратного контроля областей памяти (не знаю, как оно правильно зовется) только в "старших" АРМах есть...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Распределение оперативной памяти в STM32

Сообщение VladislavS »

Исключение не обязательно. Достаточно возврата по 0xFFFFFFFF
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

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.
Надо покурить НТД и попробовать...
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Распределение оперативной памяти в STM32

Сообщение dosikus »

Сумневающиеся, о отладке в RAM не забыли?
В эмоблитсе это нонсенс...
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

Вот когда перестают люди меряться письками, то могут возникнуть интересные идеи от совместных мыслей.

Добавлено after 1 minute 3 seconds:
dosikus писал(а):о отладке в RAM не забыли?
Я так пробовал и делал ряд научных и ненаучных опытов по скорости выполнения кода.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Распределение оперативной памяти в STM32

Сообщение dosikus »

Z_h_e, меня особенно прикололо , что крайне неудачную поделку с устаревшим гнутым компилем здесь превозносят как постулат истины. Ну ладно Мурик уверовал, но остальные то- общий маразм?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Распределение оперативной памяти в STM32

Сообщение Мурик »

VladislavS писал(а):Я считаю, что если стек улетит ниже начала памяти, то программа сразу обрушится
Для этого нужно разместить стек в начале ОЗУ, а за ним все остальное. Тогда стек сможет не затирая остальных данных выйти за пределы ОЗУ. Что при этом произойдет не проверял, но вероятно HardFault.
ARV писал(а):для RTOS распределение "стеков" задач и распределение стека вообще - разные вещи. С точки зрения нужд самой ОС стек один, а отдельные стеки под задачи распределяет уже ОС - это вот никак не вопрос компилятора и/или линкера. Даже странно, что вы об этом упомянули, а большой дядя ничтоже сумняшеся согласился.
Упомянул как наиболее очевидный пример нескольких стеков. Вообще у каждой задачи свой стек и есть вероятность его переполнения с затиранием служебных данных задачи.
ARV писал(а):В STM33 есть исключения по выходу за области памяти?
В STM33 не знаю, а в STM32 есть. При обращении у несуществующей области адресного пространства производится переход в прерывание HardFault. В STM32 адресное пространство составляет 4 ГБ в котором располагаются флеш, ОЗУ, регистры периферии и ядра и т. д. и в нем много свободного (неиспользуемого) места.
ARV писал(а):Наличие такого вектора может помочь в отладке сложных приложений.
Наличие отладчика в этом помогает. Можете посмотреть если хотите. http://purebasic.mybb.ru/viewtopic.php?id=564#p7599
ARV писал(а):По-моему, модуль аппаратного контроля областей памяти (не знаю, как оно правильно зовется) только в "старших" АРМах есть...
В данном случае дело не в памяти, а в обращении к нереализованному адресу.
dosikus писал(а):Сумневающиеся, о отладке в RAM не забыли?
В эмоблитсе это нонсенс...
Есть такая галочка Execute from RAM в окне настроек отладчика.
СпойлерИзображение
Последний раз редактировалось Мурик Пт авг 24, 2018 19:52:00, всего редактировалось 2 раза.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Распределение оперативной памяти в STM32

Сообщение Z_h_e »

Z_h_e, меня особенно прикололо , что крайне неудачную поделку с устаревшим гнутым компилем здесь превозносят как постулат истины. Ну ладно Мурик уверовал, но остальные то- общий маразм?
Да я и не спорю что-то может быть и плохо. Только как-то никто не мотивирует почему. Какая-та фраза Портоса, плохо потому что плохо.
Во что я уверовал? Я объяснил свою позицию, по-моему она достаточно понятна почему.

Добавлено after 9 minutes 6 seconds:
Судя по RM и PM. В М0 уже нет таких исключений с памятью
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «ARM»