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

Материал из MIK32 микроконтроллер
(исправлены синтаксические и орфографические ошибки)
 
Строка 15: Строка 15:
|-
|-
|0x0000_0000
|0x0000_0000
|Загрузчик (16 Кбайт)
|Загрузчик (16 Кбайт)
|-
|-
|0x0004_0000
|0x0004_0000
Строка 21: Строка 21:
|-
|-
|0x0005_0000
|0x0005_0000
|'''''Устройста на шине APB_M'''''
|'''''Устройста на шине APB_M'''''
|-
|-
|<nowiki>+0x0000</nowiki>
|<nowiki>+0x0000</nowiki>
|Блок управления питанием и тактированием
|Блок управления питанием и тактированием
|-
|-
|<nowiki>+0x0400</nowiki>
|<nowiki>+0x0400</nowiki>
|Контроллер прерываний
|Контроллер прерываний
|-
|-
|<nowiki>+0x0800</nowiki>
|<nowiki>+0x0800</nowiki>
Строка 33: Строка 33:
|-
|-
|<nowiki>+0x0C00</nowiki>
|<nowiki>+0x0C00</nowiki>
|Контроллер выводов
|Контроллер выводов
|-
|-
|<nowiki>+0x1000</nowiki>
|<nowiki>+0x1000</nowiki>
|Сторожевой таймер шины
|Сторожевой таймер шины
|-
|-
|<nowiki>+0x1400</nowiki>
|<nowiki>+0x1400</nowiki>
Строка 42: Строка 42:
|-
|-
|<nowiki>+0x1800</nowiki>
|<nowiki>+0x1800</nowiki>
|Монитор напряжения
|Монитор напряжения
|-
|-
|0x0006_0000
|0x0006_0000
|'''''Устройства батарейного домена'''''
|'''''Устройства батарейного домена'''''
|-
|-
| +0x0000
| +0x0000
Строка 54: Строка 54:
|-
|-
|0x0007_0000
|0x0007_0000
|'''''Устройства подсистемы памяти'''''
|'''''Устройства подсистемы памяти'''''
|-
|-
| +0x0000
| +0x0000
|Регистры контроллера SPIFI
|Регистры контроллера SPIFI
|-
|-
| +0x0400
| +0x0400
|Регистры контроллера EEPROM
|Регистры контроллера EEPROM
|-
|-
|0x0008_0000
|0x0008_0000
|'''''Устройста на шине AHB_P'''''
|'''''Устройста на шине AHB_P'''''
|-
|-
| +0x0000
| +0x0000
|Ускоритель симметричной криптографии
|Ускоритель симметричной криптографии
|-
|-
| +0x0400
| +0x0400
Строка 72: Строка 72:
|-
|-
|0x0008_1000
|0x0008_1000
|'''''Устройста на шине APB_P'''''
|'''''Устройста на шине APB_P'''''
|-
|-
|<nowiki>+0x0000</nowiki>
|<nowiki>+0x0000</nowiki>
|Сторожевой таймер
|Сторожевой таймер
|-
|-
|<nowiki>+0x0400</nowiki>
|<nowiki>+0x0400</nowiki>
Строка 120: Строка 120:
|-
|-
|<nowiki>+0x3С00</nowiki>
|<nowiki>+0x3С00</nowiki>
|EXTI Модуль формирования прерываний GPIO
|EXTI Модуль формирования прерываний GPIO
|-
|-
|<nowiki>+0x4000</nowiki>
|<nowiki>+0x4000</nowiki>
|Блок управления аналоговой подсистемой ЦАП/АЦП/Датчик температуры
|Блок управления аналоговой подсистемой ЦАП/АЦП/Датчик температуры
|-
|-
|0x0100_0000
|0x0100_0000
Строка 169: Строка 169:
В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера:
В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера:


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

Текущая версия от 14:57, 22 апреля 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)

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

Микросхема MIK32 имеет три различных варианта старта, определяемых состоянием выводов 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.