Карта памяти: различия между версиями
Cryptozoy (обсуждение | вклад) (исправлены синтаксические и орфографические ошибки) |
|||
(не показано 9 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
=== Общая информация === | === Общая информация === | ||
Адресное | Адресное пространство RISC-V составляет 4 Гбайта. Все периферийные модули, блоки памяти и т. д. находятся в этом диапазоне и их содержимое можно получить чтением по адресу. | ||
=== Описание работы === | === Описание работы === | ||
==== Введение ==== | ==== Введение ==== | ||
Все области памяти имеют фиксированный, за исключением области Загрузчика 0x0000_0000 - | Все области памяти имеют фиксированный адрес, за исключением области Загрузчика 0x0000_0000 - 0x0000_4000. Это память из которой запускается микроконтроллер. | ||
==== Карта памяти ==== | ==== Карта памяти ==== | ||
Строка 15: | Строка 15: | ||
|- | |- | ||
|0x0000_0000 | |0x0000_0000 | ||
|Загрузчик | |Загрузчик (16 Кбайт) | ||
|- | |- | ||
|0x0004_0000 | |0x0004_0000 | ||
Строка 21: | Строка 21: | ||
|- | |- | ||
|0x0005_0000 | |0x0005_0000 | ||
|'''''Устройста | |'''''Устройста на шине 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 | ||
|'''''Устройства | |'''''Устройства батарейного домена''''' | ||
|- | |- | ||
| | | +0x0000 | ||
|WakeUp | |WakeUp | ||
|- | |- | ||
| | | +0x0400 | ||
|RTC | |RTC | ||
|- | |- | ||
| | |0x0007_0000 | ||
|'''''Устройства | |'''''Устройства подсистемы памяти''''' | ||
|- | |- | ||
| | | +0x0000 | ||
|Регистры | |Регистры контроллера SPIFI | ||
|- | |- | ||
| | | +0x0400 | ||
|Регистры | |Регистры контроллера EEPROM | ||
|- | |- | ||
|0x0008_0000 | |0x0008_0000 | ||
|'''''Устройста | |'''''Устройста на шине AHB_P''''' | ||
|- | |- | ||
| | | +0x0000 | ||
|Ускоритель | |Ускоритель симметричной криптографии | ||
|- | |- | ||
| | | +0x0400 | ||
|CRC32 | |CRC32 | ||
|- | |- | ||
|0x0008_1000 | |0x0008_1000 | ||
|'''''Устройста | |'''''Устройста на шине 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 Модуль | |EXTI Модуль формирования прерываний GPIO | ||
|- | |- | ||
|<nowiki>+0x4000</nowiki> | |<nowiki>+0x4000</nowiki> | ||
|Блок | |Блок управления аналоговой подсистемой ЦАП/АЦП/Датчик температуры | ||
|- | |- | ||
| | |0x0100_0000 | ||
|EEPROM ( | |EEPROM (8 Кбайт) | ||
|- | |- | ||
| | |0x0200_0000 | ||
|SRAM ( | |SRAM (16 Кбайт) | ||
|- | |- | ||
| | |0x8000_0000 | ||
| | |Внешняя память на QSPI интерфейсе, прямой доступ до 2 Гбайт | ||
(контроллер SPIFI) | |||
|} | |} | ||
==== | ==== Менеджер загрузки ==== | ||
Микросхема MIK32 имеет три различных варианта старта, определяемых состоянием выводов Boot0 и Boot1 в соответствии с таблицей | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
Строка 163: | Строка 165: | ||
|Зарезервировано | |Зарезервировано | ||
|} | |} | ||
Значение выводов Boot0 и Boot1 фиксируются при включении питания. Программно возможно изменить способ загрузки | Значение выводов Boot0 и Boot1 фиксируются при включении питания. Программно возможно изменить способ загрузки путём записи необходимой конфигурации в регистр BOOT модуля Wakeup. | ||
В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера: | В зависимости от выбранного режима загрузки происходит следующее изменение в адресном пространстве контроллера: | ||
* загрузка из EEPROM: память EEPROM (8 | * загрузка из EEPROM: память EEPROM (8 Кбайт) отображается в загрузочную область (0x0000_0000), но по-прежнему остаётся доступной также по адресу 0x0100_0000; | ||
* загрузка из внешней памяти: контроллер SPIFI отображается в загрузочную область (0x0000_0000), но по прежнему | * загрузка из внешней памяти: контроллер SPIFI отображается в загрузочную область (0x0000_0000), но по-прежнему остаётся доступной также по адресу 0x8000_0000; | ||
* загрузка из системной ОЗУ: блок ОЗУ отображается в загрузочную область (0x0000_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.