Перейти к содержанию

Регистры SYSCFG RP2350

Регистры системных настроек RP2350: признаки остановки ядер отладчиком, обход синхронизаторов входов, управление отладочным портом SWD изнутри чипа, перевод блоков памяти в сон с сохранением данных и дополнительные настройки.

SYSCFG собирает настройки, не относящиеся к отдельной периферии. PROC_CONFIG показывает, остановлено ли каждое ядро отладчиком; PROC_IN_SYNC_BYPASS и PROC_IN_SYNC_BYPASS_HI позволяют обойти синхронизатор входа отдельного GPIO — на два такта меньше задержка, но возможна метастабильность (даташит RP2350, раздел 12.15.2).

DBGFORCE подключает отладочный порт к регистрам SYSCFG вместо внешних выводов SWD, так что одно ядро может отлаживать другое. MEMPOWERDOWN переводит банки SRAM0–9, ПЗУ, буфер USB и загрузочную память в режим с сохранением данных, но без доступа; полностью питание снимает POWMAN.

Отличия от RP2040: маски NMI переехали в регистры EPPB каждого ядра, у DBGFORCE остался один набор сигналов — в RP2350 один порт отладки, — а MEMPOWERDOWN охватывает новые банки памяти. AUXCTRL: бит 1 отключает примешивание LPOSC к источнику энтропии TRNG, бит 0 принудительно переводит тактирование POWMAN на LPOSC.

ЭкземплярБазовый адрес
SYSCFG0x4000 8000

В RP2040 блок SYSCFG устроен иначе — регистры и поля отличаются, они описаны на странице «Регистры SYSCFG RP2040».

Регистры блока

РегистрСмещениеНазначениеПосле сброса
SYSCFG_PROC_CONFIG0x00Состояние ядер0x0000 0000
SYSCFG_PROC_IN_SYNC_BYPASS0x04Обход синхронизаторов входов GPIO0–310x0000 0000
SYSCFG_PROC_IN_SYNC_BYPASS_HI0x08Обход синхронизаторов входов GPIO32–47, QSPI и USB0x0000 0000
SYSCFG_DBGFORCE0x0CПрямое управление отладочным портом SWD0x0000 0006
SYSCFG_MEMPOWERDOWN0x10Сон блоков памяти с сохранением данных0x0000 0000
SYSCFG_AUXCTRL0x14Дополнительные настройки: энтропия TRNG и тактирование POWMAN0x0000 0000

SYSCFG_PROC_CONFIG — состояние ядер

Смещение 0x00, адрес 0x4000 8000, после сброса 0x0000 0000. Макросы pico-sdk: SYSCFG_PROC_CONFIG_…

1514131211109876543210
—PROC1_HALTEDPROC0_HALTED
  • PROC1_HALTED (бит 1, только чтение, после сброса 0x0) — Ядро 1 остановлено.
  • PROC0_HALTED (бит 0, только чтение, после сброса 0x0) — Ядро 0 остановлено.

SYSCFG_PROC_IN_SYNC_BYPASS — обход синхронизаторов входов GPIO0–31

Смещение 0x04, адрес 0x4000 8004, после сброса 0x0000 0000. Макросы pico-sdk: SYSCFG_PROC_IN_SYNC_BYPASS_…

  • GPIO (биты 31:0, чтение и запись, после сброса 0x0000 0000) — GPIO0–31: бит на вывод, 1 — обойти синхронизатор.

SYSCFG_PROC_IN_SYNC_BYPASS_HI — обход синхронизаторов входов GPIO32–47, QSPI и USB

Смещение 0x08, адрес 0x4000 8008, после сброса 0x0000 0000. Макросы pico-sdk: SYSCFG_PROC_IN_SYNC_BYPASS_HI_…

31302928272625242322212019181716
QSPI_SDQSPI_CSNQSPI_SCKUSB_DMUSB_DP—
1514131211109876543210
GPIO
  • QSPI_SD (биты 31:28, чтение и запись, после сброса 0x0) — Выводы QSPI SD0–SD3: обойти синхронизатор.
  • QSPI_CSN (бит 27, чтение и запись, после сброса 0x0) — Вывод QSPI CSn: обойти синхронизатор.
  • QSPI_SCK (бит 26, чтение и запись, после сброса 0x0) — Вывод QSPI SCK: обойти синхронизатор.
  • USB_DM (бит 25, чтение и запись, после сброса 0x0) — Линия USB DM: обойти синхронизатор.
  • USB_DP (бит 24, чтение и запись, после сброса 0x0) — Линия USB DP: обойти синхронизатор.
  • GPIO (биты 15:0, чтение и запись, после сброса 0x0000) — GPIO32–47: бит на вывод, 1 — обойти синхронизатор.

SYSCFG_DBGFORCE — прямое управление отладочным портом SWD

Смещение 0x0C, адрес 0x4000 800C, после сброса 0x0000 0006. Макросы pico-sdk: SYSCFG_DBGFORCE_…

1514131211109876543210
—ATTACHSWCLKSWDISWDO
  • ATTACH (бит 3, чтение и запись, после сброса 0x0) — Подключить отладочный порт к регистрам SYSCFG и отключить от выводов SWD.
  • SWCLK (бит 2, чтение и запись, после сброса 0x1) — Сигнал SWCLK при ATTACH = 1.
  • SWDI (бит 1, чтение и запись, после сброса 0x1) — Вход SWDIO при ATTACH = 1.
  • SWDO (бит 0, только чтение, после сброса не определено) — Выход SWDIO.

SYSCFG_MEMPOWERDOWN — сон блоков памяти с сохранением данных

Смещение 0x10, адрес 0x4000 8010, после сброса 0x0000 0000. Макросы pico-sdk: SYSCFG_MEMPOWERDOWN_…

1514131211109876543210
—BOOTRAMROMUSBSRAM9SRAM8SRAM7SRAM6SRAM5SRAM4SRAM3SRAM2SRAM1SRAM0
  • BOOTRAM (бит 12, чтение и запись, после сброса 0x0) — Сон загрузочной памяти.
  • ROM (бит 11, чтение и запись, после сброса 0x0) — Сон ПЗУ.
  • USB (бит 10, чтение и запись, после сброса 0x0) — Сон буферной памяти USB.
  • SRAMn, n = 0…9 (биты 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; чтение и запись, после сброса 0x0) — Сон банка SRAMn.

SYSCFG_AUXCTRL — дополнительные настройки: энтропия TRNG и тактирование POWMAN

Смещение 0x14, адрес 0x4000 8014, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: SYSCFG_AUXCTRL_…

Отдельных полей нет: значение занимает биты 7:0, остальные биты не используются.

Частые вопросы

Где у RP2350 маски немаскируемых прерываний?

Не в SYSCFG, как у RP2040, а в регистрах NMI_MASK0 и NMI_MASK1 блока EPPB каждого ядра. Они сбрасываются при тёплом сбросе ядра, поэтому NMI не мешают ранним этапам загрузки.

Можно ли отключить неиспользуемую SRAM RP2350 через SYSCFG?

Можно перевести её в режим сна битами MEMPOWERDOWN: данные сохраняются, но банк недоступен — даташит советует делать это осторожно. Чтобы снять питание полностью, используют домены питания POWMAN.

Источники

  1. Raspberry Pi. RP2350 Datasheet (release 8, build 80d627281ed5) — раздел 12.15.2.3: список регистров, назначение полей, тип доступа и значения после сброса
  2. Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2350/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause

Нашли ошибку в регистрах?

Другие регистры RP2350

Статьи и термины