Где в STM32 прописывается периферия? они в ядре cortex-m или в самом периферийном устройстве? - PullRequest
1 голос
/ 31 марта 2020

У меня два вопроса. область памяти процессора cortex-m 1- это память микроконтроллеров stm32 внутри ядра cortex-m или вне его? и если он находится внутри ядра cortex-core, почему он не показан на блок-схеме ядра cortex-m generi c руководство пользователя? блок-схема ядра cortex-m

2 - я пытаюсь понять архитектуру stm32, но сталкиваюсь с неоднозначностью. блок-схема usart

. Как видно из рисунка, в справочном руководстве говорится, что блок USART имеет несколько регистров (т. Е. Регистр данных). но эти регистры также существуют в области памяти ядра cortex-m (если ответ на первый вопрос «внутри»). Где они на самом деле? есть два регистра для каждого регистра? или они находятся в ядре cortex-m или в самом периферийном устройстве? связано ли это с отображением в память определения ввода / вывода?

Ответы [ 3 ]

1 голос
/ 31 марта 2020

Периферийные устройства подключены к сердечнику через шины. Декодер адресов знает, какой адрес обрабатывается конкретной шиной.

Не только периферийные устройства подключаются через шины. Воспоминания связаны одинаково. Автобусы соединены между собой мостами. Эти мосты знают, как управлять трафиком c.

С базовой точки зрения периферийный регистр работает так же, как и ячейка памяти.

Как насчет пробелов. Обычно, если адресный декодер не понимает адрес, он генерирует исключение - аппаратная ошибка (в терминологии ARM под названием HardFault)

Детали очень сложны, и если вы не собираетесь создавать свой собственный чип, не необходимый для программист уровня регистра.

1 голос
/ 31 марта 2020

Единственное хранилище, которое находится внутри ядра ЦП, - это регистры (включая регистры общего и специального назначения). Все остальное является внешним, включая ОЗУ и ПЗУ.

Регистры управления периферийными устройствами существуют, по существу, внутри периферийных устройств. Однако они доступны центральному процессору так же, как он обращается к ОЗУ или ПЗУ; в этом смысл карты памяти, она показывает, какие адреса относятся к ОЗУ, ПЗУ, периферийным регистрам и другим вещам. (Обратите внимание, что большая часть карты памяти не используется - 32-разрядное адресное пространство способно адресовать 4 ГБ памяти, и ни один из известных мне микроконтроллеров не имеет такого большого объема памяти.) Соответствующий компонент «отвечает» на чтение и запись запросы на шину памяти в зависимости от адреса.

Для базового обзора c страница Википедии относительно ввода-вывода с отображением в памяти достаточно хорошая.

Обратите внимание, что нет это определено c для Cortex-M. Почти все современные микропроцессорные конструкции используют отображение памяти. Также обратите внимание, что фактическая архитектура шины Cortex-M достаточно сложна, поэтому любое понимание, которое вы получите из статьи в Википедии, будет абстракцией истинной реализации.

0 голосов
/ 01 апреля 2020

Посмотрите на изображение ниже, показывающее блок-схему процессора STM32 Cortex-M4. Я выделил ядро ​​процессора (вверху слева); и другие компоненты, которые вы можете найти внутри микроконтроллера.

block diagram (partial)

«Ядро» CPU, как следует из его названия, является просто «ядром»; но микроконтроллер также включает в себя память Fla sh, ОЗУ и ряд периферийных устройств; доступ ко всему внешнему ядру (кроме линий отладки) осуществляется через матрицу шин, это в равной степени относится к ПЗУ, ОЗУ и встроенным периферийным устройствам.

Обратите внимание, что основное различие между «микропроцессором» и «Микроконтроллер» - это то, что последний имеет выделенные периферийные устройства на плате.

Периферийные устройства на устройствах STM32 доступны ЦПУ через отображаемые в памяти входы / выходы, посмотрите на рисунок ниже:

Memory mapped I/O

Как видите, несмотря на линейное адресное пространство от 0x00000000 до 0xFFFFFFFF, адресное пространство разделено на «сегменты», например, память программы начинается с 0x00000000, SRAM - 0x20000000 периферийные устройства на 0x40000000. Специфические c периферийные регистры могут считываться / записываться указателями с указанными c смещениями от базового адреса.

Для этого устройства USARTS отображаются в область APB1, то есть в диапазон адресов 0x40000000-0x4000A000. Обратите внимание, что фактические периферийные адреса могут отличаться для разных устройств.

...