Карта памяти: различия между версиями
(Новая страница: «Карта памяти представлена на следующей диаграмме.») |
Cryptozoy (обсуждение | вклад) (исправлены синтаксические и орфографические ошибки) |
||
(не показано 15 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
Карта памяти представлена на следующей | === Общая информация === | ||
Адресное пространство RISC-V составляет 4 Гбайта. Все периферийные модули, блоки памяти и т. д. находятся в этом диапазоне и их содержимое можно получить чтением по адресу. | |||
=== Описание работы === | |||
==== Введение ==== | |||
Все области памяти имеют фиксированный адрес, за исключением области Загрузчика 0x0000_0000 - 0x0000_4000. Это память из которой запускается микроконтроллер. | |||
==== Карта памяти ==== | |||
Карта памяти представлена на следующей таблице. | |||
{| class="wikitable" | |||
|+Карта памяти | |||
!Адрес/смещение | |||
!Устройство | |||
|- | |||
|0x0000_0000 | |||
|Загрузчик (16 Кбайт) | |||
|- | |||
|0x0004_0000 | |||
|DMA_Config | |||
|- | |||
|0x0005_0000 | |||
|'''''Устройста на шине APB_M''''' | |||
|- | |||
|<nowiki>+0x0000</nowiki> | |||
|Блок управления питанием и тактированием | |||
|- | |||
|<nowiki>+0x0400</nowiki> | |||
|Контроллер прерываний | |||
|- | |||
|<nowiki>+0x0800</nowiki> | |||
|Таймер32_0 | |||
|- | |||
|<nowiki>+0x0C00</nowiki> | |||
|Контроллер выводов | |||
|- | |||
|<nowiki>+0x1000</nowiki> | |||
|Сторожевой таймер шины | |||
|- | |||
|<nowiki>+0x1400</nowiki> | |||
|OTP | |||
|- | |||
|<nowiki>+0x1800</nowiki> | |||
|Монитор напряжения | |||
|- | |||
|0x0006_0000 | |||
|'''''Устройства батарейного домена''''' | |||
|- | |||
| +0x0000 | |||
|WakeUp | |||
|- | |||
| +0x0400 | |||
|RTC | |||
|- | |||
|0x0007_0000 | |||
|'''''Устройства подсистемы памяти''''' | |||
|- | |||
| +0x0000 | |||
|Регистры контроллера SPIFI | |||
|- | |||
| +0x0400 | |||
|Регистры контроллера EEPROM | |||
|- | |||
|0x0008_0000 | |||
|'''''Устройста на шине AHB_P''''' | |||
|- | |||
| +0x0000 | |||
|Ускоритель симметричной криптографии | |||
|- | |||
| +0x0400 | |||
|CRC32 | |||
|- | |||
|0x0008_1000 | |||
|'''''Устройста на шине APB_P''''' | |||
|- | |||
|<nowiki>+0x0000</nowiki> | |||
|Сторожевой таймер | |||
|- | |||
|<nowiki>+0x0400</nowiki> | |||
|USART_0 | |||
|- | |||
|<nowiki>+0x0800</nowiki> | |||
|USART_1 | |||
|- | |||
|<nowiki>+0x0C00</nowiki> | |||
|TIMER16_0 | |||
|- | |||
|<nowiki>+0x1000</nowiki> | |||
|TIMER16_1 | |||
|- | |||
|<nowiki>+0x1400</nowiki> | |||
|TIMER16_2 | |||
|- | |||
|<nowiki>+0x1800</nowiki> | |||
|TIMER32_1 | |||
|- | |||
|<nowiki>+0x1С00</nowiki> | |||
|TIMER32_2 | |||
|- | |||
|<nowiki>+0x2000</nowiki> | |||
|SPI_0 | |||
|- | |||
|<nowiki>+0x2400</nowiki> | |||
|SPI_1 | |||
|- | |||
|<nowiki>+0x2800</nowiki> | |||
|I<sup>2</sup>C_0 | |||
|- | |||
|<nowiki>+0x2C00</nowiki> | |||
|I<sup>2</sup>C_1 | |||
|- | |||
|<nowiki>+0x3000</nowiki> | |||
|GPIO16_0 | |||
|- | |||
|<nowiki>+0x3400</nowiki> | |||
|GPIO16_1 | |||
|- | |||
|<nowiki>+0x3800</nowiki> | |||
|GPIO8_2 | |||
|- | |||
|<nowiki>+0x3С00</nowiki> | |||
|EXTI Модуль формирования прерываний GPIO | |||
|- | |||
|<nowiki>+0x4000</nowiki> | |||
|Блок управления аналоговой подсистемой ЦАП/АЦП/Датчик температуры | |||
|- | |||
|0x0100_0000 | |||
|EEPROM (8 Кбайт) | |||
|- | |||
|0x0200_0000 | |||
|SRAM (16 Кбайт) | |||
|- | |||
|0x8000_0000 | |||
|Внешняя память на QSPI интерфейсе, прямой доступ до 2 Гбайт | |||
(контроллер SPIFI) | |||
|} | |||
==== Менеджер загрузки ==== | |||
Микросхема MIK32 имеет три различных варианта старта, определяемых состоянием выводов Boot0 и Boot1 в соответствии с таблицей | |||
{| class="wikitable" | |||
|+ | |||
!№ режима | |||
|'''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. |
Текущая версия от 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.