Карта памяти
Общая информация
Адресное пространство 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 | RAM (16 Кбайт) |
0x8000_0000 | Внешняя память на QSPI интерфейсе, прямой доступ до 2 Гбайт
(контроллер SPIFI) |
Менеджер загрузки
Микросхема MIK32 имеет три различных варианта старта, определяемых состоянием выводов Boot0 и Boot1 в соответствии с таблицей
№ режима | BOOT0 | BOOT1 | Режим |
---|---|---|---|
1 | 0 | 0 | Старт из встроенной памяти EEPROM |
2 | 0 | 1 | Старт из внешней памяти с использованием контроллера SPIFI |
3 | 1 | 0 | Старт из системного ОЗУ (RAM) |
4 | 1 | 1 | Зарезервировано |
Значение выводов Boot0 и Boot1 фиксируются при включении питания. Программно возможно изменить способ загрузки путём записи необходимой конфигурации в регистр BOOT модуля WakeUp.
В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера:
- загрузка из EEPROM: 8 Кбайт памяти EEPROM отображаются в загрузочную область (0x0000_0000), но по-прежнему остаются доступными также по адресу 0x0100_0000;
- загрузка из внешней памяти: первые 16 Кбайт внешней памяти SPIFI отображаются в загрузочную область (0x0000_0000), но до 16 Мбайт адресного пространства внешней памяти по-прежнему остаются доступными также по адресу 0x8000_0000;
- загрузка из системного ОЗУ (RAM): 16 Кбайт ОЗУ отображаются в загрузочную область (0x0000_0000), но по-прежнему остаются доступными также по адресу 0x0200_0000.