Например TDA7294

Форум РадиоКот • Просмотр темы - Организация памяти STM
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 19, 2025 15:27:17

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 14:52:45 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Всем привет! Сейчас изучаю организацию памяти микроконтроллеров (на примере STM32F401ccu6). Не совсем могу понять, почему в даташите начальный и конечный адрес памяти является: 0x00000000 - 0xFFFFFFFF. Почему такое представление указано в даташит, ведь память МК 256 Kbytes?
В интернете сказано, что размер памяти определяется шиной, здесь она 32 битная, и логично предположить, что именно поэтому такая адресация в даташите указана (0x00000000 - 0xFFFFFFFF), но все же остаются вопросы, неиспользуемые блоки, они фзически существуют, если нет, зачем их указывают в даташит?
Что значит зарезервированная память, она есть, но ее не используют? Или физически памяти нет, но есть место для нее?
Вложение:
image_2022_11_16T11_45_14_555Z-1.png [72.5 KiB]
Скачиваний: 99


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:06:24 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 300
Рейтинг сообщения: 0
потому-что в документации указана вся память в принципе, а вы имеете в виду флеш-память.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:08:47 
Друг Кота
Аватар пользователя

Карма: 17
Рейтинг сообщений: 467
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 5562
Откуда: Воронеж
Рейтинг сообщения: 3
Не надо путать саму память и адресное пространство. Вот так вот, например, распределено пространство в 334 контроллере.
Изображение

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:17:22 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 300
Рейтинг сообщения: 0
если попробуете обратиться к адресам, которых физически нет в микроконтроллере, то получите что-то вроде bus error, у меня так было, когда я размер стека неправильно указал.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:19:34 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Не надо путать саму память и адресное пространство. Вот так вот, например, распределено пространство в 334 контроллере.
Изображение

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:23:06 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 300
Рейтинг сообщения: 0
есть такая штука, как адресная шина. в ARM она 32-битная, т.е. может адресовать 4 ГБ памяти. это и есть адресное пространство.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:35:55 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
А почему тогда здесь пустота? (см. фото, указал стрелочками). Почему существующие блоки организованы не попорядка, например с адреса 0x00000000 и до 0x60000000, например?
Ведь память, она, по факту, одна, цельная, верно же?


Вложения:
image_2022_11_16T12_30_02_803Z-1.png [104.47 KiB]
Скачиваний: 67
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:44:11 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 300
Рейтинг сообщения: 0
Ведь память, она, по факту, одна, цельная, верно же?

нет. очень часто она разбита на регионы. память это периферия. к каким адресам производиель прибьет эту периферию, там и будет висеть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 15:44:30 
Друг Кота
Аватар пользователя

Карма: 17
Рейтинг сообщений: 467
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 5562
Откуда: Воронеж
Рейтинг сообщения: 0
Ну типа дорога есть, адрес есть, а самого дома нет. Вот в городе и оставляют дырки чтобы если нужен квартал побольше, то не приходилось бы двигать все остальные дома.
Для совместимости внутри одного семейства это делается. Оператива, например, начинается в адреса 0х2000 0000 и её не волнует что там до неё, занято место или нет. Физически там что-то расположено или нет. Потому что удобно обращаться к оперативной памяти по этому адресу в любой модели STM32, а не выискивать адреса расположения каждый раз на каждую отдельную модель. Да и производить, подозреваю, так тоже проще.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 16:28:01 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24612
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Ну и стоит напомнить автору, что адресное пространство таки байтное, а не 32-разрядное. То есть шаг адреса 32-разрядных слов равен 4.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 18:19:27 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
А знаете, что произойдет при обращении по адресу нереализованного физически блока? Правильно, исключение Hard Fault.
Ну а память - она тоже не цельная. В общем адресном пространстве размером в 4 гига размещаются и флеш, и несколько блоков ОЗУ, и все адреса регистров периферии типа GPIO, SPI, и даже внешняя память SDRAM, NAND Flash...
Адреса SRAM находятся в диапазоне 0x2000'0000 - 0x2001'0000, адреса флеш-памяти в диапазоне 0x0800'0000 - 0x08004'0000, адрес GPIOA - 0x4002'0000. В референс-мануале есть еще одна табличка, STM32F401xB/C and STM32F401xD/E register boundary addresses зовется.

Адресное пространство микроконтроллера следует понимать как почтовый адрес вашего дома, в котором живете, адрес вашей работы, адрес магазина. Что произойдет, если вы отправите посылку по адресу, которого нет физически в адресном пространстве города? Вот именно, почта скажет: "нет такого адреса, доставить невозможно".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 19:54:03 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
и это хорошо, что будет исключение. А ведь что-то мне попадалось, где такого исключения не было... адресация отрабатывала просто тихо, без результата.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 22:03:17 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Довльно доступно обьяснили. Спасибо большое!

Добавлено after 3 minutes 56 seconds:
Ведь память, она, по факту, одна, цельная, верно же?

нет. очень часто она разбита на регионы. память это периферия. к каким адресам производиель прибьет эту периферию, там и будет висеть.

Есть еще парочку вопросов. Что подразумевается под регионами? Регионы - это блоки в адресном пространстве? (см. фото
Вложение:
Screenshot_1.png [71.23 KiB]
Скачиваний: 69
)

Добавлено after 1 minute 39 seconds:
А знаете, что произойдет при обращении по адресу нереализованного физически блока? Правильно, исключение Hard Fault.
.

Что значит исключение?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Ср ноя 16, 2022 22:11:10 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
исключение - исключительная ситуация, ну то есть "катастрофа, всё пропало!". Дальнейшая работа микроконтроллера будет невозможна, он переходит в специальный режим и остается в нем до сброса. Физически - это прерывание, вызов обработчика прерывания HardFault_Handler(), который представляет собой бесконечный цикл.
И если Hard Fault вызван не явной ошибкой программиста, то в этом прерывании можно сгенерировать программный сброс и перезапуск микроконтроллера. Разумеется, если программист накосячил при написании кода, микроконтроллер снова войдет в эту ошибку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Чт ноя 17, 2022 08:47:12 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
понял. спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Чт ноя 17, 2022 10:12:35 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
А знаете, что произойдет при обращении по адресу нереализованного физически блока? Правильно, исключение Hard Fault.

Ой, все, что угодно произойти может.Я тут на GD32VF103 пытался поймать исключение доступа к памяти, так тот вообще подобного не умеет.Хочешь прочитать 32-битное слово с адреса 3? Пожалуйста. Хочешь с адреса 0xFFFFFFFF? На здоровье!
Правда он не ARM, а RISC-V (но в целом, чуть ли не 1 в 1 с STM32F103 скопирован), но все же иллюстрирует, что не всегда контроллеры падают в ошибку, иногда просто выполняют подобный код, как будто так и надо.
MLX90640 писал(а):
Что произойдет, если вы отправите посылку по адресу, которого нет физически в адресном пространстве города?

Честно отнесет в указанное место, положит на землю и пойдет отчитываться о проделанной работе. Ну вы же хотели положить туда посылку? С чего бы почтальону задумываться о ваших мотивах.
maksimdag0 писал(а):
Что значит исключение?

По сути - прерывание, только вызванное не периферией, а самим ядром. Деление на ноль, попытка выполнить несуществующую инструкцию (например, 0xFFFFFFFF), доступ по невыровненному адресу (для 32-битных чисел адрес должен быть кратен 4, для 16-битных - 2, для 8-битных без разницы), выполнение специальных инструкций (может, помните из MS-DOS'а int 10h, int 33h - вот это примерно оно).
MLX90640 писал(а):
исключение - исключительная ситуация, ну то есть "катастрофа, всё пропало!". Дальнейшая работа микроконтроллера будет невозможна

Ничего подобного. То же чтение по невыровненному адресу может просто тихо обрабатываться ядром - оно читает адрес, откуда пытались прочитать, само читает два соседних слова, склеивает их в одно, и возвращает в юзерский код, как будто так и надо. Я слышал, так некоторые линуксы делают.
Те же операции вызова ядерного кода (в RISC-V это ecall, в ARM не знаю) используются ровно для того, чтобы сообщить ядру, что юзерский код хочет что-то выполнить с повышенными привилегиями. Не то чтобы в контроллерах это часто использовалось...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Чт ноя 17, 2022 23:18:19 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1655
Рейтинг сообщения: -2
если попробуете обратиться к адресам, которых физически нет в микроконтроллере, то получите что-то вроде bus error
Не факт.

Добавлено after 6 minutes 58 seconds:
А знаете, что произойдет при обращении по адресу нереализованного физически блока? Правильно, исключение Hard Fault.
Опять не факт.

Добавлено after 13 minutes 38 seconds:
И если Hard Fault вызван не явной ошибкой программиста, то в этом прерывании можно сгенерировать программный сброс и перезапуск микроконтроллера.
Можно делать что угодно. Не обязательно сброс. Как в любом другом обработчике. Т.е. - выполнить некую работу и вернуться чуть дальше места fault-а.
Например: на BusFault или MpuFault можно сделать эмуляцию виртуальной памяти.
Также на MpuFault можно организовать защиту отдельных областей программной памяти. Или отлавливать ошибки разрушения памяти (вызванные багами).
А на UsageFault - так и вообще раздолье:
UsageFault деления 0 - эмулировать спец.поведение при делении на 0;
UsageFault несуществующей или запрещённой команды - сделать программную её эмуляцию;
UsageFault невыровненного доступа (там где ядро его не умеет) - опять же программно эмулировать невыровненный доступ.

Добавлено after 9 minutes 9 seconds:
исключение - исключительная ситуация, ну то есть "катастрофа, всё пропало!".
Ничего подобного! Видимо вы никогда не слышали о SysTick-таймере или PendSV (для вызова context switch в OS) или об SVC (предназначенном для реализации системных вызовов и переключения из непривилегированного кода в привилегированный).
Стоит почитать мануал на Cortex-M-ядра. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Пт ноя 18, 2022 06:56:33 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Может, стоит вначале почитать контекст предыдущего поста, прежде чем писать столь длинный мессаг?
Цитата:
и вернуться чуть дальше места fault-а

А "чуть дальше" - это куда? Точный адрес не подскажете? А то в точке "чуть дальше" уже может лежать вообще другая функция или вообще байты констант.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Пт ноя 18, 2022 07:36:53 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24612
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Чуть дальше, это следующая за вызвавшей исключение инструкция. Стандартный отладочный способ обнаружить причину исключения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Организация памяти STM
СообщениеДобавлено: Пт ноя 18, 2022 07:55:21 
Друг Кота
Аватар пользователя

Карма: 17
Рейтинг сообщений: 467
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 5562
Откуда: Воронеж
Рейтинг сообщения: 0
MLX90640 писал(а):
Точный адрес не подскажете?

Вроде этот адрес в стек кладётся при переходе в прерывание.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: AlexandrRa и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y