Карта памяти: различия между версиями

Материал из MIK32 микроконтроллер
Строка 5: Строка 5:


==== Введение ====
==== Введение ====
Все области памяти имеют фиксированный, за исключением области Загрузчика 0x0000_0000 - 0x0000-0x4000. Это память из которой запускается микроконтроллер.
Все области памяти имеют фиксированный, за исключением области Загрузчика 0x0000_0000 - 0x0000_4000. Это память из которой запускается микроконтроллер.


==== Карта памяти ====
==== Карта памяти ====
Строка 44: Строка 44:
|Монитор  напряжения
|Монитор  напряжения
|-
|-
|0x00006_0000
|0x0006_0000
|'''''Устройства  батарейного домена'''''
|'''''Устройства  батарейного домена'''''
|-
|-
|<nowiki>+0x000</nowiki>
| +0x0000
|WakeUp
|WakeUp
|-
|-
|<nowiki>+0x400</nowiki>
| +0x0400
|RTC
|RTC
|-
|-
|0x00007_0000
|0x0007_0000
|'''''Устройства  подсистемы памяти'''''
|'''''Устройства  подсистемы памяти'''''
|-
|-
|<nowiki>+0x000</nowiki>
| +0x0000
|Регистры  контроллера SPIFI
|Регистры  контроллера SPIFI
|-
|-
|<nowiki>+0x400</nowiki>
| +0x0400
|Регистры  контроллера EEPROM
|Регистры  контроллера EEPROM
|-
|-
Строка 65: Строка 65:
|'''''Устройста  на шине AHB_P'''''
|'''''Устройста  на шине AHB_P'''''
|-
|-
|<nowiki>+0x000</nowiki>
| +0x0000
|Ускоритель  симметричной криптографии
|Ускоритель  симметричной криптографии
|-
|-
|<nowiki>+0x400</nowiki>
| +0x0400
|CRC32
|CRC32
|-
|-

Версия от 23:55, 16 апреля 2024

Общая информация

Адресное пространство RISC-V составляет 4 Гбайт. Все периферийные модули, блоки памяти и т. д. находятся в этом диапазоне и их содержимое можно получить чтением по адресу.

Описание работы

Введение

Все области памяти имеют фиксированный, за исключением области Загрузчика 0x0000_0000 - 0x0000_4000. Это память из которой запускается микроконтроллер.

Карта памяти

Карта памяти представлена на следующей таблице.

Карта памяти
Адрес/смещение Устройство
0x0000_0000 Загрузчик (16 Кбайт)
0x0004_0000 DMA_Config
0x0005_0000 Устройста на шине APB_M
+0x0000 Блок управления питанием и тактированием
+0x0400 Контроллер прерываний
+0x0800 Таймер32_0
+0x0C00 Контроллер выводов
+0x1000 Сторожевой таймер шины
+0x1400 OTP
+0x1800 Монитор напряжения
0x0006_0000 Устройства батарейного домена
+0x0000 WakeUp
+0x0400 RTC
0x0007_0000 Устройства подсистемы памяти
+0x0000 Регистры контроллера SPIFI
+0x0400 Регистры контроллера EEPROM
0x0008_0000 Устройста на шине AHB_P
+0x0000 Ускоритель симметричной криптографии
+0x0400 CRC32
0x0008_1000 Устройста на шине APB_P
+0x0000 Сторожевой таймер
+0x0400 USART_0
+0x0800 USART_1
+0x0C00 TIMER16_0
+0x1000 TIMER16_1
+0x1400 TIMER16_2
+0x1800 TIMER32_1
+0x1С00 TIMER32_2
+0x2000 SPI_0
+0x2400 SPI_1
+0x2800 I2C_0
+0x2C00 I2C_1
+0x3000 GPIO16_0
+0x3400 GPIO16_1
+0x3800 GPIO8_2
+0x3С00 EXTI Модуль формирования прерываний GPIO
+0x4000 Блок управления аналоговой подсистемой ЦАП/АЦП/Датчик температуры
0x0100_0000 EEPROM (8 Кбайт)
0x0200_0000 SRAM (16 Кбайт)
0x8000_0000 Внешняя память на QSPI интерфейсе, прямой доступ до 2 Гбайт

(контроллер SPIFI)

Менеджер загрузки

Микросхема MCU32 имеет три различных варианта старта, определяемых состоянием выводов Boot0 и Boot1 в соответствии с таблицей

№ режима BOOT0 BOOT1 Режим
1 0 0 Старт из встроенной памяти EEPROM
2 0 1 Старт из внешней памяти с использованием контроллера SPIFI
3 1 0 Старт из системного ОЗУ
4 1 1 Зарезервировано

Значение выводов Boot0 и Boot1 фиксируются при включении питания. Программно возможно изменить способ загрузки путём записи необходимой конфигурации в регистр BOOT модуля Wakeup.

В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера:

  • загрузка из EEPROM: память EEPROM (8 Кбайт) отображается в загрузочную область (0x0000_0000), но по прежнему остается доступной также по адресу 0x0100_0000;
  • загрузка из внешней памяти: контроллер SPIFI отображается в загрузочную область (0x0000_0000), но по прежнему остается доступной также по адресу 0x8000_0000;
  • загрузка из системной ОЗУ: блок ОЗУ отображается в загрузочную область (0x0000_0000), но по прежнему остается доступной также по адресу 0x0200_0000.