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

Регистры M33 RP2350

Системные регистры ядра Arm Cortex-M33 в RP2350 на частной шине PPB: контроллер прерываний NVIC, таймер SysTick, блок управления системой SCB с регистрами отказов, защита памяти MPU и атрибуция SAU, доступ к FPU и сопроцессорам, а также блоки отладки и трассировки DWT, ITM, FPB, ETM и CTI.

Содержание

Регистры M33 лежат на частной шине PPB ядра с адреса 0xE000 0000, и у каждого из двух ядер RP2350 своя копия. Ядра Cortex-M33 собраны с FPU одинарной точности, расширениями DSP и безопасности TrustZone, 52 внешними прерываниями и 4 битами приоритета — 16 уровней, — MPU на 8 защищённых и 8 незащищённых областей, SAU на 8 областей, 4 компараторами точек наблюдения и 8 компараторами точек останова (даташит RP2350, раздел 3.7.2).

По адресам блок делится на компоненты: ITM — с 0xE000 0000, DWT — с 0xE000 1000, FPB — с 0xE000 2000, системное пространство SCS с SysTick, NVIC, SCB, MPU, SAU, регистрами отладки и FPU — с 0xE000 E000, ETM — с 0xE004 1000, CTI — с 0xE004 2000; каждый компонент отладки заканчивается регистрами-идентификаторами CoreSight DEVARCH, DEVTYPE, PIDR и CIDR. Регистры SCS разделены между защищённым и незащищённым состоянием: код видит копию своего состояния, а защищённый может обратиться к незащищённой через зеркало PPB_NONSEC с адреса 0xE002 0000 (разделы 3.7.4.1.1 и 3.1.1).

Описания полей в заголовке pico-sdk и в таблице 127 даташита взяты из документации Arm, и в них есть огрехи: у всех полей SHPR1–SHPR3 написано «SecureFault», поля приоритета там трёхбитные (биты 7:5 байта) при четырёхбитных в NVIC_IPRn, а значения после сброса DWT_CTRL (NUMCOMP = 7, NOCYCCNT = 1) и FP_CTRL не сходятся с четырьмя компараторами DWT и восемью FPB. Здесь обработчики названы по номерам исключений Armv8-M, а значения регистров-идентификаторов надёжнее прочитать на чипе. По архитектуре флаги CFSR, HFSR, DFSR и SFSR сбрасываются записью 1, а запись в DHCSR действует только с ключом 0xA05F в битах 31:16 (Armv8-M Architecture Reference Manual, Arm DDI 0553).

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

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

РегистрСмещениеНазначениеПосле сброса
M33_ITM_STIMn0x00 + n · 0x04ITM: порт стимулов n — запись отправляет пакет инструментальной трассировки0x0000 0000
M33_ITM_TER00x0E00ITM: разрешение портов стимулов 0–310x0000 0000
M33_ITM_TPR0x0E40ITM: доступ непривилегированного кода к портам стимулов0x0000 0000
M33_ITM_TCR0x0E80ITM: управление и метки времени0x0000 0000
M33_INT_ATREADY0x0EF0ITM, режим интеграции: чтение сигналов шины ATB0x0000 0000
M33_INT_ATVALID0x0EF8ITM, режим интеграции: запись сигналов шины ATB0x0000 0000
M33_ITM_ITCTRL0x0F00ITM: включение режима интеграции0x0000 0000
M33_ITM_DEVARCH0x0FBCITM: архитектура компонента CoreSight0x4770 1A01
M33_ITM_DEVTYPE0x0FCCITM: тип компонента CoreSight0x0000 0043
M33_ITM_PIDR40x0FD0ITM: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_ITM_PIDR50x0FD4ITM: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_ITM_PIDR60x0FD8ITM: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_ITM_PIDR70x0FDCITM: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_ITM_PIDR00x0FE0ITM: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_ITM_PIDR10x0FE4ITM: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_ITM_PIDR20x0FE8ITM: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 000B
M33_ITM_PIDR30x0FECITM: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_ITM_CIDR00x0FF0ITM: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_ITM_CIDR10x0FF4ITM: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_ITM_CIDR20x0FF8ITM: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_ITM_CIDR30x0FFCITM: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1
M33_DWT_CTRL0x1000DWT: конфигурация, счётчики и пакеты трассировки0x7374 1824
M33_DWT_CYCCNT0x1004DWT: счётчик тактов ядра CYCCNT0x0000 0000
M33_DWT_EXCCNT0x100CDWT: счётчик тактов обработки исключений0x0000 0000
M33_DWT_LSUCNT0x1014DWT: счётчик дополнительных тактов загрузок и сохранений0x0000 0000
M33_DWT_FOLDCNT0x1018DWT: счётчик сдвоенных команд0x0000 0000
M33_DWT_COMPn0x1020 + n · 0x10DWT: компаратор n — адрес или значение данных для сравнения0x0000 0000
M33_DWT_FUNCTION00x1028DWT: компаратор 0 — тип совпадения и действие0x5800 0000
M33_DWT_FUNCTION10x1038DWT: компаратор 1 — тип совпадения и действие0x8900 0828
M33_DWT_FUNCTION20x1048DWT: компаратор 2 — тип совпадения и действие0x5000 0000
M33_DWT_FUNCTION30x1058DWT: компаратор 3 — тип совпадения и действие0x2000 0800
M33_DWT_DEVARCH0x1FBCDWT: архитектура компонента CoreSight0x4770 1A02
M33_DWT_DEVTYPE0x1FCCDWT: тип компонента CoreSight0x0000 0000
M33_DWT_PIDR40x1FD0DWT: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_DWT_PIDR50x1FD4DWT: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_DWT_PIDR60x1FD8DWT: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_DWT_PIDR70x1FDCDWT: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_DWT_PIDR00x1FE0DWT: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_DWT_PIDR10x1FE4DWT: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_DWT_PIDR20x1FE8DWT: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 000B
M33_DWT_PIDR30x1FECDWT: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_DWT_CIDR00x1FF0DWT: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_DWT_CIDR10x1FF4DWT: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_DWT_CIDR20x1FF8DWT: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_DWT_CIDR30x1FFCDWT: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1
M33_FP_CTRL0x2000FPB: число компараторов и включение точек останова0x6000 5580
M33_FP_REMAP0x2004FPB: подмена кода во флеш-памяти0x0000 0000
M33_FP_COMPn0x2008 + n · 0x04FPB: компаратор n — адрес точки останова0x0000 0000
M33_FP_DEVARCH0x2FBCFPB: архитектура компонента CoreSight0x4770 1A03
M33_FP_DEVTYPE0x2FCCFPB: тип компонента CoreSight0x0000 0000
M33_FP_PIDR40x2FD0FPB: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_FP_PIDR50x2FD4FPB: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_FP_PIDR60x2FD8FPB: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_FP_PIDR70x2FDCFPB: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_FP_PIDR00x2FE0FPB: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_FP_PIDR10x2FE4FPB: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_FP_PIDR20x2FE8FPB: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 000B
M33_FP_PIDR30x2FECFPB: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_FP_CIDR00x2FF0FPB: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_FP_CIDR10x2FF4FPB: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_FP_CIDR20x2FF8FPB: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_FP_CIDR30x2FFCFPB: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1
M33_ICTR0xE004Число групп регистров NVIC0x0000 0001
M33_ACTLR0xE008Дополнительное управление ядром Cortex-M330x0000 0000
M33_SYST_CSR0xE010SysTick: управление и состояние0x0000 0000
M33_SYST_RVR0xE014SysTick: значение перезагрузки0x0000 0000
M33_SYST_CVR0xE018SysTick: текущее значение0x0000 0000
M33_SYST_CALIB0xE01CSysTick: калибровка0x0000 0000
M33_NVIC_ISER00xE100NVIC: разрешение прерываний 0–310x0000 0000
M33_NVIC_ISER10xE104NVIC: разрешение прерываний 32–510x0000 0000
M33_NVIC_ICER00xE180NVIC: запрет прерываний 0–310x0000 0000
M33_NVIC_ICER10xE184NVIC: запрет прерываний 32–510x0000 0000
M33_NVIC_ISPR00xE200NVIC: установка ожидания прерываний 0–310x0000 0000
M33_NVIC_ISPR10xE204NVIC: установка ожидания прерываний 32–510x0000 0000
M33_NVIC_ICPR00xE280NVIC: снятие ожидания прерываний 0–310x0000 0000
M33_NVIC_ICPR10xE284NVIC: снятие ожидания прерываний 32–510x0000 0000
M33_NVIC_IABR00xE300NVIC: активность прерываний 0–310x0000 0000
M33_NVIC_IABR10xE304NVIC: активность прерываний 32–510x0000 0000
M33_NVIC_ITNS00xE380NVIC: состояние защиты прерываний 0–310x0000 0000
M33_NVIC_ITNS10xE384NVIC: состояние защиты прерываний 32–510x0000 0000
M33_NVIC_IPRn0xE400 + n · 0x04NVIC: приоритеты прерываний 4n…4n + 3; у номеров выше 51 поля читаются как 00x0000 0000
M33_CPUID0xED00Идентификатор ядра: Arm Cortex-M33, ревизия r1p00x411F D210
M33_ICSR0xED04Состояние исключений и ожидание NMI, PendSV и SysTick0x0000 0000
M33_VTOR0xED08Адрес таблицы векторов прерываний0x0000 0000
M33_AIRCR0xED0CСброс ядра, группы приоритетов и приоритет защищённых исключений0x0000 0000
M33_SCR0xED10Режимы сна0x0000 0000
M33_CCR0xED14Конфигурация ядра: ловушки отказов и кеши0x0000 0201
M33_SHPR10xED18Приоритеты обработчиков MemManage, BusFault, UsageFault и SecureFault0x0000 0000
M33_SHPR20xED1CПриоритет обработчика SVCall0x0000 0000
M33_SHPR30xED20Приоритеты обработчиков DebugMonitor, PendSV и SysTick0x0000 0000
M33_SHCSR0xED24Системные исключения: включение, ожидание и активность0x0000 0000
M33_CFSR0xED28Причины отказов UsageFault, BusFault и MemManage0x0000 0000
M33_HFSR0xED2CПричины отказа HardFault0x0000 0000
M33_DFSR0xED30Причина события отладки0x0000 0000
M33_MMFAR0xED34Адрес, вызвавший отказ MemManage0x0000 0000
M33_BFAR0xED38Адрес, вызвавший отказ BusFault0x0000 0000
M33_ID_PFR00xED40Поддерживаемые наборы команд0x0000 0030
M33_ID_PFR10xED44Модель программиста и расширение безопасности0x0000 0520
M33_ID_DFR00xED48Архитектура отладки0x0020 0000
M33_ID_AFR00xED4CПризнаки, определяемые реализацией0x0000 0000
M33_ID_MMFR00xED50Модель памяти: защита памяти, совместный доступ, TCM0x0010 1F40
M33_ID_MMFR10xED54Модель памяти: зарезервирован, 00x0000 0000
M33_ID_MMFR20xED58Модель памяти: остановка по WFI0x0100 0000
M33_ID_MMFR30xED5CМодель памяти: обслуживание кешей и предсказателя переходов0x0000 0000
M33_ID_ISAR00xED60Команды: деление, сопроцессор, сравнение с переходом, битовые поля0x0809 2300
M33_ID_ISAR10xED64Команды: переключение наборов, непосредственные значения, IT, расширение0x0572 5000
M33_ID_ISAR20xED68Команды: перестановка байтов, умножение, подсказки памяти0x3017 3426
M33_ID_ISAR30xED6CКоманды: NOP, табличные переходы, синхронизация, SVC, SIMD, насыщение0x0789 5729
M33_ID_ISAR40xED70Команды: регистры PSR, барьеры, режимы адресации0x0131 0132
M33_ID_ISAR50xED74Команды: зарезервирован, 00x0000 0000
M33_CTR0xED7CСведения о кешах ядра0x8000 C000
M33_CPACR0xED88Доступ к FPU и сопроцессорам0x0000 0000
M33_NSACR0xED8CДоступ незащищённого кода к FPU и сопроцессорам0x0000 0000
M33_MPU_TYPE0xED90MPU: число областей0x0000 0800
M33_MPU_CTRL0xED94MPU: включение и карта памяти по умолчанию0x0000 0000
M33_MPU_RNR0xED98MPU: номер выбранной области0x0000 0000
M33_MPU_RBAR0xED9CMPU: начальный адрес и права выбранной области0x0000 0000
M33_MPU_RLAR0xEDA0MPU: конечный адрес и атрибуты выбранной области0x0000 0000
M33_MPU_RBAR_A10xEDA4MPU, псевдоним 1: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 10x0000 0000
M33_MPU_RLAR_A10xEDA8MPU, псевдоним 1: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 10x0000 0000
M33_MPU_RBAR_A20xEDACMPU, псевдоним 2: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 20x0000 0000
M33_MPU_RLAR_A20xEDB0MPU, псевдоним 2: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 20x0000 0000
M33_MPU_RBAR_A30xEDB4MPU, псевдоним 3: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 30x0000 0000
M33_MPU_RLAR_A30xEDB8MPU, псевдоним 3: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 30x0000 0000
M33_MPU_MAIR00xEDC0MPU: наборы атрибутов памяти 0–30x0000 0000
M33_MPU_MAIR10xEDC4MPU: наборы атрибутов памяти 4–70x0000 0000
M33_SAU_CTRL0xEDD0SAU: включение и атрибут памяти по умолчанию0x0000 0000
M33_SAU_TYPE0xEDD4SAU: число областей0x0000 0008
M33_SAU_RNR0xEDD8SAU: номер выбранной области0x0000 0000
M33_SAU_RBAR0xEDDCSAU: начальный адрес выбранной области0x0000 0000
M33_SAU_RLAR0xEDE0SAU: конечный адрес и тип выбранной области0x0000 0000
M33_SFSR0xEDE4Причины отказа SecureFault0x0000 0000
M33_SFAR0xEDE8Адрес, вызвавший отказ SecureFault0x0000 0000
M33_DHCSR0xEDF0Отладка с остановкой ядра: управление и состояние0x0000 0000
M33_DCRSR0xEDF4Отладка: выбор регистра ядра для чтения или записи0x0000 0000
M33_DCRDR0xEDF8Отладка: данные регистра ядра0x0000 0000
M33_DEMCR0xEDFCОтладка: перехват векторов, монитор отладки и включение DWT и ITM0x0000 0000
M33_DSCSR0xEE08Отладка: состояние защиты и выбор банковых регистров0x0000 0000
M33_STIR0xEF00Программный вызов прерывания0x0000 0000
M33_FPCCR0xEF34FPU: сохранение контекста0x2000 0472
M33_FPCAR0xEF38FPU: адрес места под регистры FPU в стеке0x0000 0000
M33_FPDSCR0xEF3CFPU: значения FPSCR по умолчанию0x0000 0000
M33_MVFR00xEF40FPU: поддерживаемые операции0x6054 0601
M33_MVFR10xEF44FPU: поддерживаемые операции и режимы0x8500 0089
M33_MVFR20xEF48FPU: прочие возможности0x0000 0060
M33_DDEVARCH0xEFBCSCS: архитектура компонента CoreSight0x4770 2A04
M33_DDEVTYPE0xEFCCSCS: тип компонента CoreSight0x0000 0000
M33_DPIDR40xEFD0SCS: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_DPIDR50xEFD4SCS: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_DPIDR60xEFD8SCS: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_DPIDR70xEFDCSCS: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_DPIDR00xEFE0SCS: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_DPIDR10xEFE4SCS: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_DPIDR20xEFE8SCS: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 000B
M33_DPIDR30xEFECSCS: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_DCIDR00xEFF0SCS: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_DCIDR10xEFF4SCS: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_DCIDR20xEFF8SCS: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_DCIDR30xEFFCSCS: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1
M33_TRCPRGCTLR0x41004ETM: включение0x0000 0000
M33_TRCSTATR0x4100CETM: состояние0x0000 0000
M33_TRCCONFIGR0x41010ETM: основные параметры трассировки0x0000 0000
M33_TRCEVENTCTL0R0x41020ETM: выбор событий0x0000 0000
M33_TRCEVENTCTL1R0x41024ETM: поведение событий0x0000 0000
M33_TRCSTALLCTLR0x4102CETM: остановка ядра при заполнении FIFO0x0000 0000
M33_TRCTSCTLR0x41030ETM: вставка глобальных меток времени0x0000 0000
M33_TRCSYNCPR0x41034ETM: период синхронизации потока0x0000 000A
M33_TRCCCCTLR0x41038ETM: порог счёта тактов0x0000 0000
M33_TRCVICTLR0x41080ETM: фильтрация трассировки команд0x0000 0000
M33_TRCCNTRLDVR00x41140ETM: значение перезагрузки счётчика 00x0000 0000
M33_TRCIDR80x41180ETM: идентификатор TRCIDR8 — глубина спекуляции0x0000 0000
M33_TRCIDR90x41184ETM: идентификатор TRCIDR9 — число ключей P00x0000 0000
M33_TRCIDR100x41188ETM: идентификатор TRCIDR10 — число ключей P10x0000 0000
M33_TRCIDR110x4118CETM: идентификатор TRCIDR11 — число особых ключей P10x0000 0000
M33_TRCIDR120x41190ETM: идентификатор TRCIDR12 — число ключей условных команд0x0000 0001
M33_TRCIDR130x41194ETM: идентификатор TRCIDR13 — число особых ключей условных команд0x0000 0000
M33_TRCIMSPEC0x411C0ETM: особые функции реализации0x0000 0000
M33_TRCIDR00x411E0ETM: идентификатор TRCIDR0 — возможности трассировки0x2800 06E1
M33_TRCIDR10x411E4ETM: идентификатор TRCIDR1 — разработчик и версия архитектуры0x4100 F421
M33_TRCIDR20x411E8ETM: идентификатор TRCIDR2 — размеры адресов, данных и счётчика тактов0x0000 0004
M33_TRCIDR30x411ECETM: идентификатор TRCIDR3 — остановка, синхронизация, уровни исключений0x0F09 0004
M33_TRCIDR40x411F0ETM: идентификатор TRCIDR4 — число компараторов и селекторов ресурсов0x0011 4000
M33_TRCIDR50x411F4ETM: идентификатор TRCIDR5 — счётчики, секвенсор, внешние входы0x90C7 0004
M33_TRCIDR60x411F8ETM: идентификатор TRCIDR6 — зарезервирован, 00x0000 0000
M33_TRCIDR70x411FCETM: идентификатор TRCIDR7 — зарезервирован, 00x0000 0000
M33_TRCRSCTLR20x41208ETM: селектор ресурсов 20x0000 0000
M33_TRCRSCTLR30x4120CETM: селектор ресурсов 30x0000 0000
M33_TRCSSCSR0x412A0ETM: состояние компаратора однократного срабатывания0x0000 0000
M33_TRCSSPCICR0x412C0ETM: входы компараторов ядра для однократного срабатывания0x0000 0000
M33_TRCPDCR0x41310ETM: запрос питания0x0000 0000
M33_TRCPDSR0x41314ETM: состояние питания0x0000 0003
M33_TRCITATBIDR0x41EE4ETM, режим интеграции: идентификатор на шине ATB0x0000 0000
M33_TRCITIATBINR0x41EF4ETM, режим интеграции: входы шины ATB0x0000 0000
M33_TRCITIATBOUTR0x41EFCETM, режим интеграции: выходы шины ATB0x0000 0000
M33_TRCCLAIMSET0x41FA0ETM: установка меток захвата0x0000 000F
M33_TRCCLAIMCLR0x41FA4ETM: сброс меток захвата0x0000 0000
M33_TRCAUTHSTATUS0x41FB8ETM: разрешённые виды отладки0x0000 0000
M33_TRCDEVARCH0x41FBCETM: архитектура компонента CoreSight0x4772 4A13
M33_TRCDEVID0x41FC8ETM: конфигурация компонента — 00x0000 0000
M33_TRCDEVTYPE0x41FCCETM: тип компонента CoreSight0x0000 0013
M33_TRCPIDR40x41FD0ETM: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_TRCPIDR50x41FD4ETM: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_TRCPIDR60x41FD8ETM: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_TRCPIDR70x41FDCETM: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_TRCPIDR00x41FE0ETM: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_TRCPIDR10x41FE4ETM: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_TRCPIDR20x41FE8ETM: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 002B
M33_TRCPIDR30x41FECETM: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_TRCCIDR00x41FF0ETM: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_TRCCIDR10x41FF4ETM: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_TRCCIDR20x41FF8ETM: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_TRCCIDR30x41FFCETM: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1
M33_CTICONTROL0x42000CTI: включение0x0000 0000
M33_CTIINTACK0x42010CTI: подтверждение выходов триггеров0x0000 0000
M33_CTIAPPSET0x42014CTI: программное событие в каналах0x0000 0000
M33_CTIAPPCLEAR0x42018CTI: сброс программных событий0x0000 0000
M33_CTIAPPPULSE0x4201CCTI: программный импульс в каналах0x0000 0000
M33_CTIINENn0x42020 + n · 0x04CTI: каналы, в которые передаётся вход триггера n0x0000 0000
M33_CTIOUTENn0x420A0 + n · 0x04CTI: каналы, которые включают выход триггера n0x0000 0000
M33_CTITRIGINSTATUS0x42130CTI: состояние входов триггеров0x0000 0000
M33_CTITRIGOUTSTATUS0x42134CTI: состояние выходов триггеров0x0000 0000
M33_CTICHINSTATUS0x42138CTI: состояние каналов0x0000 0000
M33_CTIGATE0x42140CTI: пропуск каналов на выходы0x0000 000F
M33_ASICCTL0x42144CTI: управление внешними мультиплексорами — их нет, DEVID.EXTMUXNUM = 00x0000 0000
M33_ITCHOUT0x42EE4CTI, режим интеграции: выходы каналов0x0000 0000
M33_ITTRIGOUT0x42EE8CTI, режим интеграции: выходы триггеров0x0000 0000
M33_ITCHIN0x42EF4CTI, режим интеграции: входы каналов0x0000 0000
M33_ITCTRL0x42F00CTI: включение режима интеграции0x0000 0000
M33_DEVARCH0x42FBCCTI: архитектура компонента CoreSight0x4770 1A14
M33_DEVID0x42FC8CTI: число каналов, триггеров и мультиплексоров0x0004 0800
M33_DEVTYPE0x42FCCCTI: тип компонента CoreSight0x0000 0014
M33_PIDR40x42FD0CTI: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика0x0000 0004
M33_PIDR50x42FD4CTI: идентификатор PIDR5 — зарезервирован, читается как 00x0000 0000
M33_PIDR60x42FD8CTI: идентификатор PIDR6 — зарезервирован, читается как 00x0000 0000
M33_PIDR70x42FDCCTI: идентификатор PIDR7 — зарезервирован, читается как 00x0000 0000
M33_PIDR00x42FE0CTI: идентификатор PIDR0 — номер компонента, биты 7:00x0000 0021
M33_PIDR10x42FE4CTI: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика0x0000 00BD
M33_PIDR20x42FE8CTI: идентификатор PIDR2 — ревизия и часть кода разработчика0x0000 000B
M33_PIDR30x42FECCTI: идентификатор PIDR3 — исправления ревизии и изменения заказчика0x0000 0000
M33_CIDR00x42FF0CTI: идентификатор CIDR0 — преамбула, биты 7:00x0000 000D
M33_CIDR10x42FF4CTI: идентификатор CIDR1 — класс компонента и преамбула, биты 11:80x0000 0090
M33_CIDR20x42FF8CTI: идентификатор CIDR2 — преамбула, биты 23:160x0000 0005
M33_CIDR30x42FFCCTI: идентификатор CIDR3 — преамбула, биты 31:240x0000 00B1

M33_ITM_STIMn — iTM: порт стимулов n — запись отправляет пакет инструментальной трассировки

32 регистра, n = 0…31: смещение 0x00 + n · 0x04, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_STIMn_…

  • STIMULUS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Данные для FIFO порта; размер записи — байт, полуслово или слово — задаёт тип пакета.

M33_ITM_TER0 — iTM: разрешение портов стимулов 0–31

Смещение 0x0E00, адрес 0xE000 0E00, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_TER0_…

  • STIMENA (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Бит m разрешает порт стимулов ITM_STIMm.

M33_ITM_TPR — iTM: доступ непривилегированного кода к портам стимулов

Смещение 0x0E40, адрес 0xE000 0E40, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_TPR_…

  • PRIVMASK (биты 3:0, чтение и запись, после сброса 0x0) — По биту на восемь портов стимулов: 1 — порты доступны только привилегированному коду.

M33_ITM_TCR — iTM: управление и метки времени

Смещение 0x0E80, адрес 0xE000 0E80, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_TCR_…

31302928272625242322212019181716
—BUSYTRACEBUSID
1514131211109876543210
—GTSFREQTSPRESCALE—STALLENASWOENATXENASYNCENATSENAITMENA
  • BUSY (бит 23, только чтение, после сброса 0x0) — ITM обрабатывает события.
  • TRACEBUSID (биты 22:16, чтение и запись, после сброса 0x00) — Идентификатор источника в общем потоке трассировки; при нескольких источниках отладчик пишет уникальное ненулевое значение.
  • GTSFREQ (биты 11:10, чтение и запись, после сброса 0x0) — Как часто выдавать глобальную метку времени, 0 — не выдавать.
  • TSPRESCALE (биты 9:8, чтение и запись, после сброса 0x0) — Предделитель локальной метки времени.
  • STALLENA (бит 5, чтение и запись, после сброса 0x0) — Останавливать ядро, чтобы пакеты трассировки данных не терялись.
  • SWOENA (бит 4, чтение и запись, после сброса 0x0) — Асинхронное тактирование счётчика меток времени.
  • TXENA (бит 3, чтение и запись, после сброса 0x0) — Передавать пакеты аппаратных событий DWT через ITM в TPIU.
  • SYNCENA (бит 2, чтение и запись, после сброса 0x0) — Пакеты синхронизации для синхронного TPIU.
  • TSENA (бит 1, чтение и запись, после сброса 0x0) — Локальные метки времени.
  • ITMENA (бит 0, чтение и запись, после сброса 0x0) — Включение ITM.

M33_INT_ATREADY — iTM, режим интеграции: чтение сигналов шины ATB

Смещение 0x0EF0, адрес 0xE000 0EF0, после сброса 0x0000 0000. Макросы pico-sdk: M33_INT_ATREADY_…

1514131211109876543210
—AFVALIDATREADY
  • AFVALID (бит 1, только чтение, после сброса 0x0) — Чтение сигнала AFVALID.
  • ATREADY (бит 0, только чтение, после сброса 0x0) — Чтение сигнала ATREADY.

M33_INT_ATVALID — iTM, режим интеграции: запись сигналов шины ATB

Смещение 0x0EF8, адрес 0xE000 0EF8, после сброса 0x0000 0000. Макросы pico-sdk: M33_INT_ATVALID_…

1514131211109876543210
—AFREADYATREADY
  • AFREADY (бит 1, чтение и запись, после сброса 0x0) — Запись задаёт сигнал AFREADY.
  • ATREADY (бит 0, чтение и запись, после сброса 0x0) — Запись задаёт сигнал ATVALID; в заголовке поле названо ATREADY.

M33_ITM_ITCTRL — iTM: включение режима интеграции

Смещение 0x0F00, адрес 0xE000 0F00, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_ITCTRL_…

  • IME (бит 0, чтение и запись, после сброса 0x0) — 1 — режим интеграции: для поиска компонентов отладчиком и проверки соединений.

M33_ITM_DEVARCH — iTM: архитектура компонента CoreSight

Смещение 0x0FBC, адрес 0xE000 0FBC, после сброса 0x4770 1A01. Макросы pico-sdk: M33_ITM_DEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHVERARCHPART
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x0) — Ревизия архитектуры компонента.
  • ARCHVER (биты 15:12, только чтение, после сброса 0x1) — Версия архитектуры компонента.
  • ARCHPART (биты 11:0, только чтение, после сброса 0xA01) — Номер архитектуры компонента.

M33_ITM_DEVTYPE — iTM: тип компонента CoreSight

Смещение 0x0FCC, адрес 0xE000 0FCC, после сброса 0x0000 0043. Макросы pico-sdk: M33_ITM_DEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x4) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x3) — Основной тип компонента.

M33_ITM_PIDR4 — iTM: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0x0FD0, адрес 0xE000 0FD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_ITM_PIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_ITM_PIDR5 — iTM: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0x0FD4, адрес 0xE000 0FD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ITM_PIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_ITM_PIDR6 — iTM: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0x0FD8, адрес 0xE000 0FD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ITM_PIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_ITM_PIDR7 — iTM: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0x0FDC, адрес 0xE000 0FDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ITM_PIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_ITM_PIDR0 — iTM: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0x0FE0, адрес 0xE000 0FE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_ITM_PIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_ITM_PIDR1 — iTM: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0x0FE4, адрес 0xE000 0FE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_ITM_PIDR1_…

1514131211109876543210
—DES_0PART_1
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_1 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента.

M33_ITM_PIDR2 — iTM: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0x0FE8, адрес 0xE000 0FE8, после сброса 0x0000 000B. Макросы pico-sdk: M33_ITM_PIDR2_…

1514131211109876543210
—REVISIONJEDECDES_1
  • REVISION (биты 7:4, только чтение, после сброса 0x0) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_1 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm.

M33_ITM_PIDR3 — iTM: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0x0FEC, адрес 0xE000 0FEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITM_PIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_ITM_CIDR0 — iTM: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0x0FF0, адрес 0xE000 0FF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_ITM_CIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_ITM_CIDR1 — iTM: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0x0FF4, адрес 0xE000 0FF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_ITM_CIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_ITM_CIDR2 — iTM: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0x0FF8, адрес 0xE000 0FF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_ITM_CIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_ITM_CIDR3 — iTM: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0x0FFC, адрес 0xE000 0FFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_ITM_CIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

M33_DWT_CTRL — dWT: конфигурация, счётчики и пакеты трассировки

Смещение 0x1000, адрес 0xE000 1000, после сброса 0x7374 1824. Макросы pico-sdk: M33_DWT_CTRL_…

  • NUMCOMP (биты 31:28, только чтение, после сброса 0x7) — Число компараторов DWT.
  • NOTRCPKT (бит 27, только чтение, после сброса 0x0) — 1 — пакеты трассировки не поддерживаются.
  • NOEXTTRIG (бит 26, только чтение, после сброса 0x0) — Зарезервирован, читается как 0.
  • NOCYCCNT (бит 25, только чтение, после сброса 0x1) — 1 — счётчика тактов CYCCNT нет.
  • NOPRFCNT (бит 24, только чтение, после сброса 0x1) — 1 — счётчиков профилирования нет.
  • CYCDISS (бит 23, чтение и запись, после сброса 0x0) — Останавливать счётчик тактов в защищённом состоянии.
  • CYCEVTENA (бит 22, чтение и запись, после сброса 0x1) — Пакеты счётчика событий при опустошении POSTCNT.
  • FOLDEVTENA (бит 21, чтение и запись, после сброса 0x1) — Включение счётчика DWT_FOLDCNT.
  • LSUEVTENA (бит 20, чтение и запись, после сброса 0x1) — Включение счётчика DWT_LSUCNT.
  • SLEEPEVTENA (бит 19, чтение и запись, после сброса 0x0) — Включение счётчика тактов сна DWT_SLEEPCNT.
  • EXCEVTENA (бит 18, чтение и запись, после сброса 0x1) — Включение счётчика DWT_EXCCNT.
  • CPIEVTENA (бит 17, чтение и запись, после сброса 0x0) — Включение счётчика DWT_CPICNT.
  • EXTTRCENA (бит 16, чтение и запись, после сброса 0x0) — Пакеты трассировки исключений.
  • PCSAMPLENA (бит 12, чтение и запись, после сброса 0x1) — Периодическая выборка счётчика команд по таймеру POSTCNT.
  • SYNCTAP (биты 11:10, чтение и запись, после сброса 0x2) — Отвод счётчика CYCCNT для пакетов синхронизации — задаёт их частоту.
  • CYCTAP (бит 9, чтение и запись, после сброса 0x0) — Отвод счётчика CYCCNT для таймера POSTCNT.
  • POSTINIT (биты 8:5, чтение и запись, после сброса 0x1) — Начальное значение таймера POSTCNT.
  • POSTPRESET (биты 4:1, чтение и запись, после сброса 0x2) — Значение перезагрузки таймера POSTCNT.
  • CYCCNTENA (бит 0, чтение и запись, после сброса 0x0) — Включение счётчика тактов CYCCNT; нужен и бит DEMCR.TRCENA.

M33_DWT_CYCCNT — dWT: счётчик тактов ядра CYCCNT

Смещение 0x1004, адрес 0xE000 1004, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_CYCCNT_…

  • CYCCNT (биты 31:0, чтение и запись, после сброса 0x0000 0000) — +1 за каждый такт ядра при CYCCNTENA = 1 и DEMCR.TRCENA = 1; при переполнении переходит через 0.

M33_DWT_EXCCNT — dWT: счётчик тактов обработки исключений

Смещение 0x100C, адрес 0xE000 100C, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_EXCCNT_…

  • EXCCNT (биты 7:0, чтение и запись, после сброса 0x00) — 8-битный счётчик тактов, когда ядро не выполняет команд, а входит в исключение или выходит из него.

M33_DWT_LSUCNT — dWT: счётчик дополнительных тактов загрузок и сохранений

Смещение 0x1014, адрес 0xE000 1014, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_LSUCNT_…

  • LSUCNT (биты 7:0, чтение и запись, после сброса 0x00) — 8-битный счётчик дополнительных тактов команд загрузки и сохранения.

M33_DWT_FOLDCNT — dWT: счётчик сдвоенных команд

Смещение 0x1018, адрес 0xE000 1018, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_FOLDCNT_…

  • FOLDCNT (биты 7:0, чтение и запись, после сброса 0x00) — 8-битный счётчик: за такт, в котором выполнено несколько команд, прибавляется их число минус одна.

M33_DWT_COMPn — dWT: компаратор n — адрес или значение данных для сравнения

4 регистра, n = 0…3: смещение 0x1020 + n · 0x10, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DWT_COMPn_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DWT_FUNCTION0 — dWT: компаратор 0 — тип совпадения и действие

Смещение 0x1028, адрес 0xE000 1028, после сброса 0x5800 0000. Макросы pico-sdk: M33_DWT_FUNCTION0_…

31302928272625242322212019181716
ID—MATCHED—
1514131211109876543210
—DATAVSIZE—ACTIONMATCH
  • ID (биты 31:27, только чтение, после сброса 0x0B) — Какие типы совпадения MATCH поддерживает компаратор.
  • MATCHED (бит 24, только чтение, после сброса 0x0) — Устанавливается в 1, когда компаратор срабатывает.
  • DATAVSIZE (биты 11:10, чтение и запись, после сброса 0x0) — Размер наблюдаемого объекта при сравнении данных и адресов данных.
  • ACTION (биты 5:4, чтение и запись, после сброса 0x0) — Действие при совпадении — событие отладки или пакет трассировки; не действует, если MATCH выключает компаратор.
  • MATCH (биты 3:0, чтение и запись, после сброса 0x0) — Тип сравнения: адрес команды, адрес данных, значение данных; 0 — компаратор выключен.

M33_DWT_FUNCTION1 — dWT: компаратор 1 — тип совпадения и действие

Смещение 0x1038, адрес 0xE000 1038, после сброса 0x8900 0828. Макросы pico-sdk: M33_DWT_FUNCTION1_…

31302928272625242322212019181716
ID—MATCHED—
1514131211109876543210
—DATAVSIZE—ACTIONMATCH
  • ID (биты 31:27, только чтение, после сброса 0x11) — Какие типы совпадения MATCH поддерживает компаратор.
  • MATCHED (бит 24, только чтение, после сброса 0x1) — Устанавливается в 1, когда компаратор срабатывает.
  • DATAVSIZE (биты 11:10, чтение и запись, после сброса 0x2) — Размер наблюдаемого объекта при сравнении данных и адресов данных.
  • ACTION (биты 5:4, чтение и запись, после сброса 0x2) — Действие при совпадении — событие отладки или пакет трассировки; не действует, если MATCH выключает компаратор.
  • MATCH (биты 3:0, чтение и запись, после сброса 0x8) — Тип сравнения: адрес команды, адрес данных, значение данных; 0 — компаратор выключен.

M33_DWT_FUNCTION2 — dWT: компаратор 2 — тип совпадения и действие

Смещение 0x1048, адрес 0xE000 1048, после сброса 0x5000 0000. Макросы pico-sdk: M33_DWT_FUNCTION2_…

31302928272625242322212019181716
ID—MATCHED—
1514131211109876543210
—DATAVSIZE—ACTIONMATCH
  • ID (биты 31:27, только чтение, после сброса 0x0A) — Какие типы совпадения MATCH поддерживает компаратор.
  • MATCHED (бит 24, только чтение, после сброса 0x0) — Устанавливается в 1, когда компаратор срабатывает.
  • DATAVSIZE (биты 11:10, чтение и запись, после сброса 0x0) — Размер наблюдаемого объекта при сравнении данных и адресов данных.
  • ACTION (биты 5:4, чтение и запись, после сброса 0x0) — Действие при совпадении — событие отладки или пакет трассировки; не действует, если MATCH выключает компаратор.
  • MATCH (биты 3:0, чтение и запись, после сброса 0x0) — Тип сравнения: адрес команды, адрес данных, значение данных; 0 — компаратор выключен.

M33_DWT_FUNCTION3 — dWT: компаратор 3 — тип совпадения и действие

Смещение 0x1058, адрес 0xE000 1058, после сброса 0x2000 0800. Макросы pico-sdk: M33_DWT_FUNCTION3_…

31302928272625242322212019181716
ID—MATCHED—
1514131211109876543210
—DATAVSIZE—ACTIONMATCH
  • ID (биты 31:27, только чтение, после сброса 0x04) — Какие типы совпадения MATCH поддерживает компаратор.
  • MATCHED (бит 24, только чтение, после сброса 0x0) — Устанавливается в 1, когда компаратор срабатывает.
  • DATAVSIZE (биты 11:10, чтение и запись, после сброса 0x2) — Размер наблюдаемого объекта при сравнении данных и адресов данных.
  • ACTION (биты 5:4, чтение и запись, после сброса 0x0) — Действие при совпадении — событие отладки или пакет трассировки; не действует, если MATCH выключает компаратор.
  • MATCH (биты 3:0, чтение и запись, после сброса 0x0) — Тип сравнения: адрес команды, адрес данных, значение данных; 0 — компаратор выключен.

M33_DWT_DEVARCH — dWT: архитектура компонента CoreSight

Смещение 0x1FBC, адрес 0xE000 1FBC, после сброса 0x4770 1A02. Макросы pico-sdk: M33_DWT_DEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHVERARCHPART
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x0) — Ревизия архитектуры компонента.
  • ARCHVER (биты 15:12, только чтение, после сброса 0x1) — Версия архитектуры компонента.
  • ARCHPART (биты 11:0, только чтение, после сброса 0xA02) — Номер архитектуры компонента.

M33_DWT_DEVTYPE — dWT: тип компонента CoreSight

Смещение 0x1FCC, адрес 0xE000 1FCC, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_DEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x0) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x0) — Основной тип компонента.

M33_DWT_PIDR4 — dWT: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0x1FD0, адрес 0xE000 1FD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_DWT_PIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_DWT_PIDR5 — dWT: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0x1FD4, адрес 0xE000 1FD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DWT_PIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DWT_PIDR6 — dWT: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0x1FD8, адрес 0xE000 1FD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DWT_PIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DWT_PIDR7 — dWT: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0x1FDC, адрес 0xE000 1FDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DWT_PIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DWT_PIDR0 — dWT: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0x1FE0, адрес 0xE000 1FE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_DWT_PIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_DWT_PIDR1 — dWT: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0x1FE4, адрес 0xE000 1FE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_DWT_PIDR1_…

1514131211109876543210
—DES_0PART_1
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_1 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента.

M33_DWT_PIDR2 — dWT: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0x1FE8, адрес 0xE000 1FE8, после сброса 0x0000 000B. Макросы pico-sdk: M33_DWT_PIDR2_…

1514131211109876543210
—REVISIONJEDECDES_1
  • REVISION (биты 7:4, только чтение, после сброса 0x0) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_1 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm.

M33_DWT_PIDR3 — dWT: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0x1FEC, адрес 0xE000 1FEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_DWT_PIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_DWT_CIDR0 — dWT: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0x1FF0, адрес 0xE000 1FF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_DWT_CIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_DWT_CIDR1 — dWT: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0x1FF4, адрес 0xE000 1FF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_DWT_CIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_DWT_CIDR2 — dWT: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0x1FF8, адрес 0xE000 1FF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_DWT_CIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_DWT_CIDR3 — dWT: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0x1FFC, адрес 0xE000 1FFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_DWT_CIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

M33_FP_CTRL — fPB: число компараторов и включение точек останова

Смещение 0x2000, адрес 0xE000 2000, после сброса 0x6000 5580. Макросы pico-sdk: M33_FP_CTRL_…

31302928272625242322212019181716
REV—
1514131211109876543210
—NUM_CODE_14_12_NUM_LITNUM_CODE_7_4_—KEYENABLE
  • REV (биты 31:28, только чтение, после сброса 0x6) — Ревизия архитектуры блока FPB.
  • NUM_CODE_14_12_ (биты 14:12, только чтение, после сброса 0x5) — Биты 6:4 числа компараторов адресов команд NUM_CODE.
  • NUM_LIT (биты 11:8, только чтение, после сброса 0x5) — Число компараторов адресов литералов; их номера идут после NUM_CODE.
  • NUM_CODE_7_4_ (биты 7:4, только чтение, после сброса 0x8) — Биты 3:0 числа компараторов адресов команд NUM_CODE.
  • KEY (бит 1, чтение и запись, после сброса 0x0) — Запись в FP_CTRL действует, только если одновременно пишется KEY = 1.
  • ENABLE (бит 0, чтение и запись, после сброса 0x0) — Включение блока точек останова FPB.

M33_FP_REMAP — fPB: подмена кода во флеш-памяти

Смещение 0x2004, адрес 0xE000 2004, после сброса 0x0000 0000. Макросы pico-sdk: M33_FP_REMAP_…

31302928272625242322212019181716
—RMPSPTREMAP
1514131211109876543210
REMAP—
  • RMPSPT (бит 29, только чтение, после сброса 0x0) — 1 — подмена кода во флеш-памяти поддерживается.
  • REMAP (биты 28:5, только чтение, после сброса 0x000000) — Биты 28:5 адреса таблицы подмены кода.

M33_FP_COMPn — fPB: компаратор n — адрес точки останова

8 регистров, n = 0…7: смещение 0x2008 + n · 0x04, после сброса 0x0000 0000. Макросы pico-sdk: M33_FP_COMPn_…

  • BE (бит 0, чтение и запись, после сброса 0x0) — Выбор между подменой кода и точкой останова: 1 — точка останова.

M33_FP_DEVARCH — fPB: архитектура компонента CoreSight

Смещение 0x2FBC, адрес 0xE000 2FBC, после сброса 0x4770 1A03. Макросы pico-sdk: M33_FP_DEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHVERARCHPART
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x0) — Ревизия архитектуры компонента.
  • ARCHVER (биты 15:12, только чтение, после сброса 0x1) — Версия архитектуры компонента.
  • ARCHPART (биты 11:0, только чтение, после сброса 0xA03) — Номер архитектуры компонента.

M33_FP_DEVTYPE — fPB: тип компонента CoreSight

Смещение 0x2FCC, адрес 0xE000 2FCC, после сброса 0x0000 0000. Макросы pico-sdk: M33_FP_DEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x0) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x0) — Основной тип компонента.

M33_FP_PIDR4 — fPB: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0x2FD0, адрес 0xE000 2FD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_FP_PIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_FP_PIDR5 — fPB: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0x2FD4, адрес 0xE000 2FD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_FP_PIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_FP_PIDR6 — fPB: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0x2FD8, адрес 0xE000 2FD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_FP_PIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_FP_PIDR7 — fPB: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0x2FDC, адрес 0xE000 2FDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_FP_PIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_FP_PIDR0 — fPB: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0x2FE0, адрес 0xE000 2FE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_FP_PIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_FP_PIDR1 — fPB: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0x2FE4, адрес 0xE000 2FE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_FP_PIDR1_…

1514131211109876543210
—DES_0PART_1
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_1 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента.

M33_FP_PIDR2 — fPB: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0x2FE8, адрес 0xE000 2FE8, после сброса 0x0000 000B. Макросы pico-sdk: M33_FP_PIDR2_…

1514131211109876543210
—REVISIONJEDECDES_1
  • REVISION (биты 7:4, только чтение, после сброса 0x0) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_1 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm.

M33_FP_PIDR3 — fPB: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0x2FEC, адрес 0xE000 2FEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_FP_PIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_FP_CIDR0 — fPB: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0x2FF0, адрес 0xE000 2FF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_FP_CIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_FP_CIDR1 — fPB: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0x2FF4, адрес 0xE000 2FF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_FP_CIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_FP_CIDR2 — fPB: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0x2FF8, адрес 0xE000 2FF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_FP_CIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_FP_CIDR3 — fPB: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0x2FFC, адрес 0xE000 2FFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_FP_CIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

M33_ICTR — число групп регистров NVIC

Смещение 0xE004, адрес 0xE000 E004, после сброса 0x0000 0001. Макросы pico-sdk: M33_ICTR_…

  • INTLINESNUM (биты 3:0, только чтение, после сброса 0x1) — Номер старшего регистра в каждой группе NVIC: 1 — по два регистра ISER, ICER и других, до 64 прерываний.

M33_ACTLR — дополнительное управление ядром Cortex-M33

Смещение 0xE008, адрес 0xE000 E008, после сброса 0x0000 0000. Макросы pico-sdk: M33_ACTLR_…

31302928272625242322212019181716
—EXTEXCLALL—
1514131211109876543210
—DISITMATBFLUSH—FPEXCODISDISOOFP—DISFOLD—DISMCYCINT
  • EXTEXCLALL (бит 29, чтение и запись, после сброса 0x0) — Внешние монопольные обращения разрешены и без MPU.
  • DISITMATBFLUSH (бит 12, чтение и запись, после сброса 0x0) — Отключить сброс шины ATB у ITM.
  • FPEXCODIS (бит 10, чтение и запись, после сброса 0x0) — Отключить выходы исключений FPU.
  • DISOOFP (бит 9, чтение и запись, после сброса 0x0) — Отключить завершение команд FPU не по порядку.
  • DISFOLD (бит 2, чтение и запись, после сброса 0x0) — Отключить сдвоенную выдачу команд (dual issue).
  • DISMCYCINT (бит 0, чтение и запись, после сброса 0x0) — Запретить прерывание многотактных команд; в таблице даташита у поля описание от DISFOLD.

M33_SYST_CSR — sysTick: управление и состояние

Смещение 0xE010, адрес 0xE000 E010, после сброса 0x0000 0000. Макросы pico-sdk: M33_SYST_CSR_…

31302928272625242322212019181716
—COUNTFLAG
1514131211109876543210
—CLKSOURCETICKINTENABLE
  • COUNTFLAG (бит 16, только чтение, после сброса 0x0) — 1, если счётчик дошёл до 0 после прошлого чтения; чтение сбрасывает.
  • CLKSOURCE (бит 2, чтение и запись, после сброса 0x0) — Источник счёта: 0 — опорные тики из блока TICKS, 1 — такты ядра; при NOREF = 1 всегда 1.
  • TICKINT (бит 1, чтение и запись, после сброса 0x0) — Исключение SysTick при достижении 0.
  • ENABLE (бит 0, чтение и запись, после сброса 0x0) — Включение счётчика.

M33_SYST_RVR — sysTick: значение перезагрузки

Смещение 0xE014, адрес 0xE000 E014, после сброса 0x0000 0000. Макросы pico-sdk: M33_SYST_RVR_…

  • RELOAD (биты 23:0, чтение и запись, после сброса 0x000000) — Значение, загружаемое при достижении 0, до 0xFFFFFF: для периода N импульсов — N − 1; после сброса не определено.

M33_SYST_CVR — sysTick: текущее значение

Смещение 0xE018, адрес 0xE000 E018, после сброса 0x0000 0000. Макросы pico-sdk: M33_SYST_CVR_…

  • CURRENT (биты 23:0, чтение и запись, после сброса 0x000000) — Текущее значение счётчика; любая запись обнуляет его и сбрасывает COUNTFLAG; после сброса не определено.

M33_SYST_CALIB — sysTick: калибровка

Смещение 0xE01C, адрес 0xE000 E01C, после сброса 0x0000 0000. Макросы pico-sdk: M33_SYST_CALIB_…

31302928272625242322212019181716
NOREFSKEW—TENMS
1514131211109876543210
TENMS
  • NOREF (бит 31, только чтение, после сброса 0x0) — 1 — опорного сигнала нет и CLKSOURCE всегда 1.
  • SKEW (бит 30, только чтение, после сброса 0x0) — 1 — значение для 10 мс неточное.
  • TENMS (биты 23:0, только чтение, после сброса 0x000000) — Значение перезагрузки для 10 мс; 0 — неизвестно.

M33_NVIC_ISER0 — nVIC: разрешение прерываний 0–31

Смещение 0xE100, адрес 0xE000 E100, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ISER0_…

  • SETENA (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 разрешает прерывание, чтение показывает разрешённые; бит m — прерывание m.

M33_NVIC_ISER1 — nVIC: разрешение прерываний 32–51

Смещение 0xE104, адрес 0xE000 E104, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ISER1_…

  • SETENA (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 разрешает прерывание, чтение показывает разрешённые; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_ICER0 — nVIC: запрет прерываний 0–31

Смещение 0xE180, адрес 0xE000 E180, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ICER0_…

  • CLRENA (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 запрещает прерывание, чтение показывает разрешённые; бит m — прерывание m.

M33_NVIC_ICER1 — nVIC: запрет прерываний 32–51

Смещение 0xE184, адрес 0xE000 E184, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ICER1_…

  • CLRENA (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 запрещает прерывание, чтение показывает разрешённые; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_ISPR0 — nVIC: установка ожидания прерываний 0–31

Смещение 0xE200, адрес 0xE000 E200, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ISPR0_…

  • SETPEND (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 ставит прерывание в ожидание, чтение показывает ожидающие; бит m — прерывание m.

M33_NVIC_ISPR1 — nVIC: установка ожидания прерываний 32–51

Смещение 0xE204, адрес 0xE000 E204, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ISPR1_…

  • SETPEND (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 ставит прерывание в ожидание, чтение показывает ожидающие; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_ICPR0 — nVIC: снятие ожидания прерываний 0–31

Смещение 0xE280, адрес 0xE000 E280, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ICPR0_…

  • CLRPEND (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 снимает ожидание, чтение показывает ожидающие; бит m — прерывание m.

M33_NVIC_ICPR1 — nVIC: снятие ожидания прерываний 32–51

Смещение 0xE284, адрес 0xE000 E284, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ICPR1_…

  • CLRPEND (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Запись 1 снимает ожидание, чтение показывает ожидающие; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_IABR0 — nVIC: активность прерываний 0–31

Смещение 0xE300, адрес 0xE000 E300, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_IABR0_…

  • ACTIVE (биты 31:0, чтение и запись, после сброса 0x0000 0000) — 1 — прерывание активно: обработчик выполняется или вытеснен; бит m — прерывание m.

M33_NVIC_IABR1 — nVIC: активность прерываний 32–51

Смещение 0xE304, адрес 0xE000 E304, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_IABR1_…

  • ACTIVE (биты 31:0, чтение и запись, после сброса 0x0000 0000) — 1 — прерывание активно: обработчик выполняется или вытеснен; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_ITNS0 — nVIC: состояние защиты прерываний 0–31

Смещение 0xE380, адрес 0xE000 E380, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ITNS0_…

  • ITNS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Куда направляется прерывание: 0 — в защищённое состояние, 1 — в незащищённое; бит m — прерывание m.

M33_NVIC_ITNS1 — nVIC: состояние защиты прерываний 32–51

Смещение 0xE384, адрес 0xE000 E384, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_ITNS1_…

  • ITNS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Куда направляется прерывание: 0 — в защищённое состояние, 1 — в незащищённое; бит m — прерывание 32 + m, реализованы биты 0–19.

M33_NVIC_IPRn — nVIC: приоритеты прерываний 4n…4n + 3; у номеров выше 51 поля читаются как 0

16 регистров, n = 0…15: смещение 0xE400 + n · 0x04, после сброса 0x0000 0000. Макросы pico-sdk: M33_NVIC_IPRn_…

31302928272625242322212019181716
PRI_N3—PRI_N2—
1514131211109876543210
PRI_N1—PRI_N0—
  • PRI_N3 (биты 31:28, чтение и запись, после сброса 0x0) — Приоритет прерывания 4n + 3: 0 — наивысший, 15 — низший.
  • PRI_N2 (биты 23:20, чтение и запись, после сброса 0x0) — Приоритет прерывания 4n + 2.
  • PRI_N1 (биты 15:12, чтение и запись, после сброса 0x0) — Приоритет прерывания 4n + 1.
  • PRI_N0 (биты 7:4, чтение и запись, после сброса 0x0) — Приоритет прерывания 4n.

M33_CPUID — идентификатор ядра: Arm Cortex-M33, ревизия r1p0

Смещение 0xED00, адрес 0xE000 ED00, после сброса 0x411F D210. Макросы pico-sdk: M33_CPUID_…

31302928272625242322212019181716
IMPLEMENTERVARIANTARCHITECTURE
1514131211109876543210
PARTNOREVISION
  • IMPLEMENTER (биты 31:24, только чтение, после сброса 0x41) — Код разработчика ядра: 0x41 — Arm.
  • VARIANT (биты 23:20, только чтение, после сброса 0x1) — Старший номер ревизии r: 1.
  • ARCHITECTURE (биты 19:16, только чтение, после сброса 0xF) — Архитектура: 0xF — описана регистрами ID_….
  • PARTNO (биты 15:4, только чтение, после сброса 0xD21) — Номер ядра: 0xD21 — Cortex-M33.
  • REVISION (биты 3:0, только чтение, после сброса 0x0) — Младший номер ревизии p: 0.

M33_ICSR — состояние исключений и ожидание NMI, PendSV и SysTick

Смещение 0xED04, адрес 0xE000 ED04, после сброса 0x0000 0000. Макросы pico-sdk: M33_ICSR_…

31302928272625242322212019181716
PENDNMISETPENDNMICLR—PENDSVSETPENDSVCLRPENDSTSETPENDSTCLRSTTNSISRPREEMPTISRPENDING—VECTPENDING
1514131211109876543210
VECTPENDINGRETTOBASE—VECTACTIVE
  • PENDNMISET (бит 31, только чтение, после сброса 0x0) — NMI ожидает обработки; по архитектуре запись 1 вызывает NMI, хотя в таблице поле помечено RO.
  • PENDNMICLR (бит 30, чтение и запись, после сброса 0x0) — Запись 1 снимает ожидание NMI.
  • PENDSVSET (бит 28, только чтение, после сброса 0x0) — PendSV ожидает обработки; по архитектуре запись 1 ставит его в ожидание, хотя поле помечено RO.
  • PENDSVCLR (бит 27, чтение и запись, после сброса 0x0) — Запись 1 снимает ожидание PendSV.
  • PENDSTSET (бит 26, только чтение, после сброса 0x0) — SysTick ожидает обработки; по архитектуре запись 1 ставит его в ожидание, хотя поле помечено RO.
  • PENDSTCLR (бит 25, чтение и запись, после сброса 0x0) — Запись 1 снимает ожидание SysTick.
  • STTNS (бит 24, чтение и запись, после сброса 0x0) — Если SysTick в ядре один — чей он: 0 — защищённого состояния, 1 — незащищённого.
  • ISRPREEMPT (бит 23, только чтение, после сброса 0x0) — Ожидающее исключение будет принято при выходе из остановки отладчиком.
  • ISRPENDING (бит 22, только чтение, после сброса 0x0) — Есть ожидающее внешнее прерывание.
  • VECTPENDING (биты 20:12, только чтение, после сброса 0x000) — Номер ожидающего разрешённого исключения с наивысшим приоритетом; 0 — нет.
  • RETTOBASE (бит 11, только чтение, после сброса 0x0) — В режиме обработчика: 1 — других активных исключений нет.
  • VECTACTIVE (биты 8:0, только чтение, после сброса 0x000) — Номер выполняемого исключения; 0 — режим потока.

M33_VTOR — адрес таблицы векторов прерываний

Смещение 0xED08, адрес 0xE000 ED08, после сброса 0x0000 0000. Макросы pico-sdk: M33_VTOR_…

  • TBLOFF (биты 31:7, чтение и запись, после сброса 0x0000000) — Биты 31:7 адреса таблицы векторов; у защищённого и незащищённого состояния свои VTOR.

M33_AIRCR — сброс ядра, группы приоритетов и приоритет защищённых исключений

Смещение 0xED0C, адрес 0xE000 ED0C, после сброса 0x0000 0000. Макросы pico-sdk: M33_AIRCR_…

31302928272625242322212019181716
VECTKEY
1514131211109876543210
ENDIANESSPRISBFHFNMINS—PRIGROUP—SYSRESETREQSSYSRESETREQVECTCLRACTIVE—
  • VECTKEY (биты 31:16, чтение и запись, после сброса 0x0000) — Ключ: запись в AIRCR действует, только если здесь 0x05FA.
  • ENDIANESS (бит 15, только чтение, после сброса 0x0) — Порядок байтов: 0 — от младшего к старшему (little-endian).
  • PRIS (бит 14, чтение и запись, после сброса 0x0) — 1 — понизить приоритет незащищённых исключений, чтобы защищённые шли первыми.
  • BFHFNMINS (бит 13, чтение и запись, после сброса 0x0) — 0 — BusFault, HardFault и NMI защищённые; 1 — BusFault и NMI незащищённые, а исключения могут попадать в незащищённый HardFault.
  • PRIGROUP (биты 10:8, чтение и запись, после сброса 0x0) — Деление приоритета на группу, которая вытесняет, и подгруппу.
  • SYSRESETREQS (бит 3, чтение и запись, после сброса 0x0) — 1 — запрос сброса SYSRESETREQ доступен только защищённому коду.
  • SYSRESETREQ (бит 2, чтение и запись, после сброса 0x0) — Сброс ядра: по таблице даташита RP2350 — только того, на котором бит установлен; в заголовке pico-sdk 2.1.1 осталось описание Arm о сбросе всех блоков, кроме отладки.
  • VECTCLRACTIVE (бит 1, чтение и запись, после сброса 0x0) — Сброс активных исключений и возврат в режим потока; устанавливает только отладчик при остановленном ядре, после этого стек настраивают заново.

M33_SCR — режимы сна

Смещение 0xED10, адрес 0xE000 ED10, после сброса 0x0000 0000. Макросы pico-sdk: M33_SCR_…

1514131211109876543210
—SEVONPENDSLEEPDEEPSSLEEPDEEPSLEEPONEXIT—
  • SEVONPEND (бит 4, чтение и запись, после сброса 0x0) — 1 — пробуждать из WFE любым прерыванием, включая запрещённые; 0 — только разрешёнными.
  • SLEEPDEEPS (бит 3, чтение и запись, после сброса 0x0) — 1 — бит SLEEPDEEP доступен только защищённому коду.
  • SLEEPDEEP (бит 2, чтение и запись, после сброса 0x0) — Режим сна: 0 — обычный сон, 1 — глубокий.
  • SLEEPONEXIT (бит 1, чтение и запись, после сброса 0x0) — Засыпать после выхода из обработчика прерывания в режим потока.

M33_CCR — конфигурация ядра: ловушки отказов и кеши

Смещение 0xED14, адрес 0xE000 ED14, после сброса 0x0000 0201. Макросы pico-sdk: M33_CCR_…

31302928272625242322212019181716
—BPICDC
1514131211109876543210
—STKOFHFNMIGNRES1BFHFNMIGN—DIV_0_TRPUNALIGN_TRP—USERSETMPENDRES1_1
  • BP (бит 18, только чтение, после сброса 0x0) — Предсказание переходов; только чтение, 0.
  • IC (бит 17, только чтение, после сброса 0x0) — Кеш команд; только чтение, 0.
  • DC (бит 16, только чтение, после сброса 0x0) — Кеш данных; только чтение, 0.
  • STKOFHFNMIGN (бит 10, чтение и запись, после сброса 0x0) — 1 — игнорировать нарушение предела стека в обработчиках с приоритетом ниже 0: HardFault, NMI и при FAULTMASK.
  • RES1 (бит 9, только чтение, после сброса 0x1) — Зарезервирован, 1.
  • BFHFNMIGN (бит 8, чтение и запись, после сброса 0x0) — 1 — игнорировать точные BusFault в обработчиках с приоритетом ниже 0.
  • DIV_0_TRP (бит 4, чтение и запись, после сброса 0x0) — UsageFault при целочисленном делении на ноль.
  • UNALIGN_TRP (бит 3, чтение и запись, после сброса 0x0) — UsageFault при любом невыровненном обращении к слову или полуслову.
  • USERSETMPEND (бит 1, чтение и запись, после сброса 0x0) — Разрешить непривилегированному коду вызывать прерывания через STIR.
  • RES1_1 (бит 0, только чтение, после сброса 0x1) — Зарезервирован, 1.

M33_SHPR1 — приоритеты обработчиков MemManage, BusFault, UsageFault и SecureFault

Смещение 0xED18, адрес 0xE000 ED18, после сброса 0x0000 0000. Макросы pico-sdk: M33_SHPR1_…

31302928272625242322212019181716
PRI_7_3—PRI_6_3—
1514131211109876543210
PRI_5_3—PRI_4_3—
  • PRI_7_3 (биты 31:29, чтение и запись, после сброса 0x0) — Приоритет SecureFault (исключение 7).
  • PRI_6_3 (биты 23:21, чтение и запись, после сброса 0x0) — Приоритет UsageFault (исключение 6).
  • PRI_5_3 (биты 15:13, чтение и запись, после сброса 0x0) — Приоритет BusFault (исключение 5).
  • PRI_4_3 (биты 7:5, чтение и запись, после сброса 0x0) — Приоритет MemManage (исключение 4).

M33_SHPR2 — приоритет обработчика SVCall

Смещение 0xED1C, адрес 0xE000 ED1C, после сброса 0x0000 0000. Макросы pico-sdk: M33_SHPR2_…

31302928272625242322212019181716
PRI_11_3—PRI_10
1514131211109876543210
PRI_9PRI_8
  • PRI_11_3 (биты 31:29, чтение и запись, после сброса 0x0) — Приоритет SVCall (исключение 11).
  • PRI_n, n = 8…10 (биты 7:0, 15:8, 23:16; только чтение, после сброса 0x00) — Зарезервировано, 0.

M33_SHPR3 — приоритеты обработчиков DebugMonitor, PendSV и SysTick

Смещение 0xED20, адрес 0xE000 ED20, после сброса 0x0000 0000. Макросы pico-sdk: M33_SHPR3_…

31302928272625242322212019181716
PRI_15_3—PRI_14_3—
1514131211109876543210
PRI_13PRI_12_3—
  • PRI_15_3 (биты 31:29, чтение и запись, после сброса 0x0) — Приоритет SysTick (исключение 15).
  • PRI_14_3 (биты 23:21, чтение и запись, после сброса 0x0) — Приоритет PendSV (исключение 14).
  • PRI_13 (биты 15:8, только чтение, после сброса 0x00) — Зарезервировано, 0.
  • PRI_12_3 (биты 7:5, чтение и запись, после сброса 0x0) — Приоритет DebugMonitor (исключение 12).

M33_SHCSR — системные исключения: включение, ожидание и активность

Смещение 0xED24, адрес 0xE000 ED24, после сброса 0x0000 0000. Макросы pico-sdk: M33_SHCSR_…

  • HARDFAULTPENDED (бит 21, чтение и запись, после сброса 0x0) — HardFault ожидает обработки.
  • SECUREFAULTPENDED (бит 20, чтение и запись, после сброса 0x0) — SecureFault ожидает обработки.
  • SECUREFAULTENA (бит 19, чтение и запись, после сброса 0x0) — Включение исключения SecureFault.
  • USGFAULTENA (бит 18, чтение и запись, после сброса 0x0) — Включение UsageFault; выключенный отказ переходит в HardFault.
  • BUSFAULTENA (бит 17, чтение и запись, после сброса 0x0) — Включение BusFault; выключенный отказ переходит в HardFault.
  • MEMFAULTENA (бит 16, чтение и запись, после сброса 0x0) — Включение MemManage; выключенный отказ переходит в HardFault.
  • SVCALLPENDED (бит 15, чтение и запись, после сброса 0x0) — SVCall ожидает обработки.
  • BUSFAULTPENDED (бит 14, чтение и запись, после сброса 0x0) — BusFault ожидает обработки.
  • MEMFAULTPENDED (бит 13, чтение и запись, после сброса 0x0) — MemManage ожидает обработки.
  • USGFAULTPENDED (бит 12, чтение и запись, после сброса 0x0) — UsageFault ожидает обработки; у каждого состояния защиты свой.
  • SYSTICKACT (бит 11, чтение и запись, после сброса 0x0) — Обработчик SysTick активен.
  • PENDSVACT (бит 10, чтение и запись, после сброса 0x0) — Обработчик PendSV активен.
  • MONITORACT (бит 8, чтение и запись, после сброса 0x0) — Обработчик DebugMonitor активен.
  • SVCALLACT (бит 7, чтение и запись, после сброса 0x0) — Обработчик SVCall активен.
  • NMIACT (бит 5, чтение и запись, после сброса 0x0) — Обработчик NMI активен.
  • SECUREFAULTACT (бит 4, чтение и запись, после сброса 0x0) — Обработчик SecureFault активен.
  • USGFAULTACT (бит 3, чтение и запись, после сброса 0x0) — Обработчик UsageFault активен.
  • HARDFAULTACT (бит 2, чтение и запись, после сброса 0x0) — Обработчик HardFault активен.
  • BUSFAULTACT (бит 1, чтение и запись, после сброса 0x0) — Обработчик BusFault активен.
  • MEMFAULTACT (бит 0, чтение и запись, после сброса 0x0) — Обработчик MemManage активен.

M33_CFSR — причины отказов UsageFault, BusFault и MemManage

Смещение 0xED28, адрес 0xE000 ED28, после сброса 0x0000 0000. Макросы pico-sdk: M33_CFSR_…

31302928272625242322212019181716
—UFSR_DIVBYZEROUFSR_UNALIGNED—UFSR_STKOFUFSR_NOCPUFSR_INVPCUFSR_INVSTATEUFSR_UNDEFINSTR
1514131211109876543210
BFSR_BFARVALID—BFSR_LSPERRBFSR_STKERRBFSR_UNSTKERRBFSR_IMPRECISERRBFSR_PRECISERRBFSR_IBUSERRMMFSR
  • UFSR_DIVBYZERO (бит 25, чтение и запись, после сброса 0x0) — UsageFault: деление на ноль при CCR.DIV_0_TRP = 1.
  • UFSR_UNALIGNED (бит 24, чтение и запись, после сброса 0x0) — UsageFault: недопустимое невыровненное обращение.
  • UFSR_STKOF (бит 20, чтение и запись, после сброса 0x0) — UsageFault: переполнение стека — выход за предел MSPLIM или PSPLIM.
  • UFSR_NOCP (бит 19, чтение и запись, после сброса 0x0) — UsageFault: обращение к выключенному или отсутствующему сопроцессору.
  • UFSR_INVPC (бит 18, чтение и запись, после сброса 0x0) — UsageFault: ошибка проверки целостности при возврате из исключения.
  • UFSR_INVSTATE (бит 17, чтение и запись, после сброса 0x0) — UsageFault: недопустимое состояние EPSR.T или EPSR.IT — например, вектор с нулевым битом 0.
  • UFSR_UNDEFINSTR (бит 16, чтение и запись, после сброса 0x0) — UsageFault: неопределённая команда.
  • BFSR_BFARVALID (бит 15, чтение и запись, после сброса 0x0) — В BFAR — адрес, вызвавший BusFault.
  • BFSR_LSPERR (бит 13, чтение и запись, после сброса 0x0) — BusFault при ленивом сохранении состояния FPU.
  • BFSR_STKERR (бит 12, чтение и запись, после сброса 0x0) — BusFault при сохранении контекста в стек на входе в исключение.
  • BFSR_UNSTKERR (бит 11, чтение и запись, после сброса 0x0) — BusFault при восстановлении контекста из стека на выходе из исключения.
  • BFSR_IMPRECISERR (бит 10, чтение и запись, после сброса 0x0) — Неточная ошибка доступа к данным: адрес неизвестен.
  • BFSR_PRECISERR (бит 9, чтение и запись, после сброса 0x0) — Точная ошибка доступа к данным: адрес — в BFAR.
  • BFSR_IBUSERR (бит 8, чтение и запись, после сброса 0x0) — BusFault при выборке команды.
  • MMFSR (биты 7:0, чтение и запись, после сброса 0x00) — Причины отказа MemManage: бит 0 — выборка команды, 1 — доступ к данным, 3 и 4 — работа со стеком, 5 — ленивое сохранение FPU, 7 — адрес в MMFAR действителен.

M33_HFSR — причины отказа HardFault

Смещение 0xED2C, адрес 0xE000 ED2C, после сброса 0x0000 0000. Макросы pico-sdk: M33_HFSR_…

31302928272625242322212019181716
DEBUGEVTFORCED—
1514131211109876543210
—VECTTBL—
  • DEBUGEVT (бит 31, чтение и запись, после сброса 0x0) — HardFault вызван событием отладки.
  • FORCED (бит 30, чтение и запись, после сброса 0x0) — Отказ с настраиваемым приоритетом перешёл в HardFault: его нельзя было активировать из-за приоритета или он выключен.
  • VECTTBL (бит 1, чтение и запись, после сброса 0x0) — HardFault из-за ошибки чтения таблицы векторов.

M33_DFSR — причина события отладки

Смещение 0xED30, адрес 0xE000 ED30, после сброса 0x0000 0000. Макросы pico-sdk: M33_DFSR_…

1514131211109876543210
—EXTERNALVCATCHDWTTRAPBKPTHALTED
  • EXTERNAL (бит 4, чтение и запись, после сброса 0x0) — Внешний запрос отладки.
  • VCATCH (бит 3, чтение и запись, после сброса 0x0) — Перехват вектора (vector catch).
  • DWTTRAP (бит 2, чтение и запись, после сброса 0x0) — Сработала точка наблюдения DWT.
  • BKPT (бит 1, чтение и запись, после сброса 0x0) — Точка останова.
  • HALTED (бит 0, чтение и запись, после сброса 0x0) — Запрос остановки или шаг отладки.

M33_MMFAR — адрес, вызвавший отказ MemManage

Смещение 0xED34, адрес 0xE000 ED34, после сброса 0x0000 0000. Макросы pico-sdk: M33_MMFAR_…

  • ADDRESS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Адрес, вызвавший отказ MemManage; действителен при бите 7 MMFSR (MMARVALID).

M33_BFAR — адрес, вызвавший отказ BusFault

Смещение 0xED38, адрес 0xE000 ED38, после сброса 0x0000 0000. Макросы pico-sdk: M33_BFAR_…

  • ADDRESS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Адрес, вызвавший точный BusFault; действителен при BFSR_BFARVALID = 1.

M33_ID_PFR0 — поддерживаемые наборы команд

Смещение 0xED40, адрес 0xE000 ED40, после сброса 0x0000 0030. Макросы pico-sdk: M33_ID_PFR0_…

1514131211109876543210
—STATE1STATE0
  • STATE1 (биты 7:4, только чтение, после сброса 0x3) — Набор команд T32 (Thumb).
  • STATE0 (биты 3:0, только чтение, после сброса 0x0) — Набор команд A32: 0 — не поддерживается.

M33_ID_PFR1 — модель программиста и расширение безопасности

Смещение 0xED44, адрес 0xE000 ED44, после сброса 0x0000 0520. Макросы pico-sdk: M33_ID_PFR1_…

1514131211109876543210
—MPROGMODSECURITY—
  • MPROGMOD (биты 11:8, только чтение, после сброса 0x5) — Модель программиста M-профиля.
  • SECURITY (биты 7:4, только чтение, после сброса 0x2) — Расширение безопасности TrustZone.

M33_ID_DFR0 — архитектура отладки

Смещение 0xED48, адрес 0xE000 ED48, после сброса 0x0020 0000. Макросы pico-sdk: M33_ID_DFR0_…

  • MPROFDBG (биты 23:20, только чтение, после сброса 0x2) — Архитектура отладки M-профиля.

M33_ID_AFR0 — признаки, определяемые реализацией

Смещение 0xED4C, адрес 0xE000 ED4C, после сброса 0x0000 0000. Макросы pico-sdk: M33_ID_AFR0_…

1514131211109876543210
IMPDEF3IMPDEF2IMPDEF1IMPDEF0
  • IMPDEFn, n = 0…3 (биты 3:0, 7:4, 11:8, 15:12; только чтение, после сброса 0x0) — Признак n, определяемый реализацией.

M33_ID_MMFR0 — модель памяти: защита памяти, совместный доступ, TCM

Смещение 0xED50, адрес 0xE000 ED50, после сброса 0x0010 1F40. Макросы pico-sdk: M33_ID_MMFR0_…

31302928272625242322212019181716
—AUXREGTCM
1514131211109876543210
SHARELVLOUTERSHRPMSA—
  • AUXREG (биты 23:20, только чтение, после сброса 0x1) — Вспомогательный регистр управления ACTLR.
  • TCM (биты 19:16, только чтение, после сброса 0x0) — Тесно связанная память (TCM).
  • SHARELVL (биты 15:12, только чтение, после сброса 0x1) — Число уровней совместного доступа.
  • OUTERSHR (биты 11:8, только чтение, после сброса 0xF) — Внешний домен совместного доступа.
  • PMSA (биты 7:4, только чтение, после сброса 0x4) — Архитектура защиты памяти PMSA.

M33_ID_MMFR1 — модель памяти: зарезервирован, 0

Смещение 0xED54, адрес 0xE000 ED54, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ID_MMFR1_…

Значение занимает регистр целиком, отдельных полей нет.

M33_ID_MMFR2 — модель памяти: остановка по WFI

Смещение 0xED58, адрес 0xE000 ED58, после сброса 0x0100 0000. Макросы pico-sdk: M33_ID_MMFR2_…

  • WFISTALL (биты 27:24, только чтение, после сброса 0x1) — Остановка ядра командой WFI.

M33_ID_MMFR3 — модель памяти: обслуживание кешей и предсказателя переходов

Смещение 0xED5C, адрес 0xE000 ED5C, после сброса 0x0000 0000. Макросы pico-sdk: M33_ID_MMFR3_…

1514131211109876543210
—BPMAINTCMAINTSWCMAINTVA
  • BPMAINT (биты 11:8, только чтение, после сброса 0x0) — Обслуживание предсказателя переходов.
  • CMAINTSW (биты 7:4, только чтение, после сброса 0x0) — Обслуживание кеша по набору и пути.
  • CMAINTVA (биты 3:0, только чтение, после сброса 0x0) — Обслуживание кеша по адресу.

M33_ID_ISAR0 — команды: деление, сопроцессор, сравнение с переходом, битовые поля

Смещение 0xED60, адрес 0xE000 ED60, после сброса 0x0809 2300. Макросы pico-sdk: M33_ID_ISAR0_…

31302928272625242322212019181716
—DIVIDEDEBUGCOPROC
1514131211109876543210
CMPBRANCHBITFIELDBITCOUNT—
  • DIVIDE (биты 27:24, только чтение, после сброса 0x8) — Команды деления SDIV и UDIV.
  • DEBUG (биты 23:20, только чтение, после сброса 0x0) — Команды отладки.
  • COPROC (биты 19:16, только чтение, после сброса 0x9) — Команды сопроцессора.
  • CMPBRANCH (биты 15:12, только чтение, после сброса 0x2) — Сравнение с переходом CBZ и CBNZ.
  • BITFIELD (биты 11:8, только чтение, после сброса 0x3) — Команды битовых полей BFC, BFI, SBFX, UBFX.
  • BITCOUNT (биты 7:4, только чтение, после сброса 0x0) — Подсчёт бит CLZ.

M33_ID_ISAR1 — команды: переключение наборов, непосредственные значения, IT, расширение

Смещение 0xED64, адрес 0xE000 ED64, после сброса 0x0572 5000. Макросы pico-sdk: M33_ID_ISAR1_…

31302928272625242322212019181716
—INTERWORKIMMEDIATEIFTHEN
1514131211109876543210
EXTEND—
  • INTERWORK (биты 27:24, только чтение, после сброса 0x5) — Команды переключения наборов команд.
  • IMMEDIATE (биты 23:20, только чтение, после сброса 0x7) — Команды обработки данных с длинными непосредственными значениями.
  • IFTHEN (биты 19:16, только чтение, после сброса 0x2) — Команда IT.
  • EXTEND (биты 15:12, только чтение, после сброса 0x5) — Команды расширения SXTB, UXTH и подобные.

M33_ID_ISAR2 — команды: перестановка байтов, умножение, подсказки памяти

Смещение 0xED68, адрес 0xE000 ED68, после сброса 0x3017 3426. Макросы pico-sdk: M33_ID_ISAR2_…

31302928272625242322212019181716
REVERSAL—MULTUMULTS
1514131211109876543210
MULTMULTIACCESSINTMEMHINTLOADSTORE
  • REVERSAL (биты 31:28, только чтение, после сброса 0x3) — Перестановка байтов и бит REV, RBIT.
  • MULTU (биты 23:20, только чтение, после сброса 0x1) — Расширенное беззнаковое умножение UMULL, UMLAL.
  • MULTS (биты 19:16, только чтение, после сброса 0x7) — Расширенное знаковое умножение.
  • MULT (биты 15:12, только чтение, после сброса 0x3) — Дополнительные команды умножения MLA, MLS.
  • MULTIACCESSINT (биты 11:8, только чтение, после сброса 0x4) — Прерываемые команды множественного доступа.
  • MEMHINT (биты 7:4, только чтение, после сброса 0x2) — Подсказки памяти PLD, PLI.
  • LOADSTORE (биты 3:0, только чтение, после сброса 0x6) — Дополнительные команды загрузки и сохранения LDRD, STRD.

M33_ID_ISAR3 — команды: NOP, табличные переходы, синхронизация, SVC, SIMD, насыщение

Смещение 0xED6C, адрес 0xE000 ED6C, после сброса 0x0789 5729. Макросы pico-sdk: M33_ID_ISAR3_…

31302928272625242322212019181716
—TRUENOPT32COPYTABBRANCH
1514131211109876543210
SYNCHPRIMSVCSIMDSATURATE
  • TRUENOP (биты 27:24, только чтение, после сброса 0x7) — Настоящая команда NOP.
  • T32COPY (биты 23:20, только чтение, после сброса 0x8) — Команда MOV между младшими регистрами без изменения флагов.
  • TABBRANCH (биты 19:16, только чтение, после сброса 0x9) — Табличные переходы TBB и TBH.
  • SYNCHPRIM (биты 15:12, только чтение, после сброса 0x5) — Примитивы синхронизации; вместе с ID_ISAR4.SYNCPRIM_FRAC.
  • SVC (биты 11:8, только чтение, после сброса 0x7) — Команда SVC.
  • SIMD (биты 7:4, только чтение, после сброса 0x2) — Команды SIMD.
  • SATURATE (биты 3:0, только чтение, после сброса 0x9) — Команды с насыщением.

M33_ID_ISAR4 — команды: регистры PSR, барьеры, режимы адресации

Смещение 0xED70, адрес 0xE000 ED70, после сброса 0x0131 0132. Макросы pico-sdk: M33_ID_ISAR4_…

31302928272625242322212019181716
—PSR_MSYNCPRIM_FRACBARRIER
1514131211109876543210
—WRITEBACKWITHSHIFTSUNPRIV
  • PSR_M (биты 27:24, только чтение, после сброса 0x1) — Команды для регистров PSR: CPS, MRS, MSR.
  • SYNCPRIM_FRAC (биты 23:20, только чтение, после сброса 0x3) — Примитивы синхронизации; вместе с ID_ISAR3.SYNCHPRIM.
  • BARRIER (биты 19:16, только чтение, после сброса 0x1) — Барьеры DMB, DSB, ISB.
  • WRITEBACK (биты 11:8, только чтение, после сброса 0x1) — Режимы адресации с обратной записью.
  • WITHSHIFTS (биты 7:4, только чтение, после сброса 0x3) — Сдвиги в командах загрузки и сохранения; в таблице у поля описание от WRITEBACK.
  • UNPRIV (биты 3:0, только чтение, после сброса 0x2) — Непривилегированные команды LDRT, STRT.

M33_ID_ISAR5 — команды: зарезервирован, 0

Смещение 0xED74, адрес 0xE000 ED74, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ID_ISAR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_CTR — сведения о кешах ядра

Смещение 0xED7C, адрес 0xE000 ED7C, после сброса 0x8000 C000. Макросы pico-sdk: M33_CTR_…

31302928272625242322212019181716
RES1—CWGERGDMINLINE
1514131211109876543210
RES1_1—IMINLINE
  • RES1 (бит 31, только чтение, после сброса 0x1) — Зарезервирован, 1.
  • CWG (биты 27:24, только чтение, после сброса 0x0) — log₂ наибольшего числа слов, перезаписываемых при вытеснении изменённой строки кеша.
  • ERG (биты 23:20, только чтение, после сброса 0x0) — log₂ размера гранулы монопольного доступа в словах.
  • DMINLINE (биты 19:16, только чтение, после сброса 0x0) — log₂ числа слов в самой короткой строке кешей данных.
  • RES1_1 (биты 15:14, только чтение, после сброса 0x3) — Зарезервирован, 1.
  • IMINLINE (биты 3:0, только чтение, после сброса 0x0) — log₂ числа слов в самой короткой строке кешей команд.

M33_CPACR — доступ к FPU и сопроцессорам

Смещение 0xED88, адрес 0xE000 ED88, после сброса 0x0000 0000. Макросы pico-sdk: M33_CPACR_…

31302928272625242322212019181716
—CP11CP10—
1514131211109876543210
CP7CP6CP5CP4CP3CP2CP1CP0
  • CP11 (биты 23:22, чтение и запись, после сброса 0x0) — Значение игнорируется; записывают то же, что в CP10, иначе значение не определено.
  • CP10 (биты 21:20, чтение и запись, после сброса 0x0) — Доступ к FPU: 0 — нет, 1 — только привилегированный код, 3 — полный.
  • CP7 (биты 15:14, чтение и запись, после сброса 0x0) — Доступ к сопроцессору контроля избыточности RCP (раздел 3.6.3).
  • CPn, n = 1, 2, 3, 6 (биты 3:2, 5:4, 7:6, 13:12; чтение и запись, после сброса 0x0) — Доступ к сопроцессору n — свободный номер.
  • CP5 (биты 11:10, чтение и запись, после сброса 0x0) — Доступ к сопроцессору 5 — незащищённой копии DCP, которой пользуется только защищённый код.
  • CP4 (биты 9:8, чтение и запись, после сброса 0x0) — Доступ к сопроцессору двойной точности DCP своего состояния (раздел 3.6.2).
  • CP0 (биты 1:0, чтение и запись, после сброса 0x0) — Доступ к сопроцессору GPIOC — порту GPIO: 0 — нет, 1 — только привилегированный код, 3 — полный.

M33_NSACR — доступ незащищённого кода к FPU и сопроцессорам

Смещение 0xED8C, адрес 0xE000 ED8C, после сброса 0x0000 0000. Макросы pico-sdk: M33_NSACR_…

1514131211109876543210
—CP11CP10—CP7CP6CP5CP4CP3CP2CP1CP0
  • CP11 (бит 11, чтение и запись, после сброса 0x0) — Незащищённый доступ к FPU; записывают так же, как CP10.
  • CP10 (бит 10, чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к FPU.
  • CP7 (бит 7, чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к сопроцессору RCP.
  • CPn, n = 1, 2, 3, 6 (биты 1, 2, 3, 6; чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к сопроцессору n — свободный номер.
  • CP5 (бит 5, чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к сопроцессору 5 — незащищённой копии DCP.
  • CP4 (бит 4, чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к сопроцессору DCP.
  • CP0 (бит 0, чтение и запись, после сброса 0x0) — Разрешить незащищённый доступ к сопроцессору GPIOC.

M33_MPU_TYPE — mPU: число областей

Смещение 0xED90, адрес 0xE000 ED90, после сброса 0x0000 0800. Макросы pico-sdk: M33_MPU_TYPE_…

1514131211109876543210
DREGION—SEPARATE
  • DREGION (биты 15:8, только чтение, после сброса 0x08) — Число областей MPU: 8.
  • SEPARATE (бит 0, только чтение, после сброса 0x0) — 0 — области общие для команд и данных.

M33_MPU_CTRL — mPU: включение и карта памяти по умолчанию

Смещение 0xED94, адрес 0xE000 ED94, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_CTRL_…

1514131211109876543210
—PRIVDEFENAHFNMIENAENABLE
  • PRIVDEFENA (бит 2, чтение и запись, после сброса 0x0) — Привилегированный код вне областей пользуется картой памяти по умолчанию.
  • HFNMIENA (бит 1, чтение и запись, после сброса 0x0) — MPU действует и в обработчиках с приоритетом ниже 0 — HardFault, NMI и при FAULTMASK = 1.
  • ENABLE (бит 0, чтение и запись, после сброса 0x0) — Включение MPU.

M33_MPU_RNR — mPU: номер выбранной области

Смещение 0xED98, адрес 0xE000 ED98, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RNR_…

  • REGION (биты 2:0, чтение и запись, после сброса 0x0) — Номер области для MPU_RBAR и MPU_RLAR, 0–7.

M33_MPU_RBAR — mPU: начальный адрес и права выбранной области

Смещение 0xED9C, адрес 0xE000 ED9C, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RBAR_…

31302928272625242322212019181716
BASE
1514131211109876543210
BASESHAPXN
  • BASE (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 начального адреса области — шаг 32 байта.
  • SH (биты 4:3, чтение и запись, после сброса 0x0) — Совместный доступ для памяти Normal: 0 — нет, 2 — внешний домен, 3 — внутренний.
  • AP (биты 2:1, чтение и запись, после сброса 0x0) — Права: 0 — чтение и запись только привилегированному коду, 1 — любому, 2 — только чтение привилегированному, 3 — только чтение любому.
  • XN (бит 0, чтение и запись, после сброса 0x0) — 1 — выполнять код из области нельзя.

M33_MPU_RLAR — mPU: конечный адрес и атрибуты выбранной области

Смещение 0xEDA0, адрес 0xE000 EDA0, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RLAR_…

31302928272625242322212019181716
LIMIT
1514131211109876543210
LIMIT—ATTRINDXEN
  • LIMIT (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 конечного адреса области, включительно: младшие биты дополняются до 0x1F.
  • ATTRINDX (биты 3:1, чтение и запись, после сброса 0x0) — Номер набора атрибутов ATTRn в MPU_MAIR0 и MPU_MAIR1.
  • EN (бит 0, чтение и запись, после сброса 0x0) — Включение области.

M33_MPU_RBAR_A1 — mPU, псевдоним 1: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 1

Смещение 0xEDA4, адрес 0xE000 EDA4, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RBAR_A1_…

31302928272625242322212019181716
BASE
1514131211109876543210
BASESHAPXN
  • BASE (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 начального адреса области — шаг 32 байта.
  • SH (биты 4:3, чтение и запись, после сброса 0x0) — Совместный доступ для памяти Normal: 0 — нет, 2 — внешний домен, 3 — внутренний.
  • AP (биты 2:1, чтение и запись, после сброса 0x0) — Права: 0 — чтение и запись только привилегированному коду, 1 — любому, 2 — только чтение привилегированному, 3 — только чтение любому.
  • XN (бит 0, чтение и запись, после сброса 0x0) — 1 — выполнять код из области нельзя.

M33_MPU_RLAR_A1 — mPU, псевдоним 1: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 1

Смещение 0xEDA8, адрес 0xE000 EDA8, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RLAR_A1_…

31302928272625242322212019181716
LIMIT
1514131211109876543210
LIMIT—ATTRINDXEN
  • LIMIT (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 конечного адреса области, включительно: младшие биты дополняются до 0x1F.
  • ATTRINDX (биты 3:1, чтение и запись, после сброса 0x0) — Номер набора атрибутов ATTRn в MPU_MAIR0 и MPU_MAIR1.
  • EN (бит 0, чтение и запись, после сброса 0x0) — Включение области.

M33_MPU_RBAR_A2 — mPU, псевдоним 2: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 2

Смещение 0xEDAC, адрес 0xE000 EDAC, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RBAR_A2_…

31302928272625242322212019181716
BASE
1514131211109876543210
BASESHAPXN
  • BASE (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 начального адреса области — шаг 32 байта.
  • SH (биты 4:3, чтение и запись, после сброса 0x0) — Совместный доступ для памяти Normal: 0 — нет, 2 — внешний домен, 3 — внутренний.
  • AP (биты 2:1, чтение и запись, после сброса 0x0) — Права: 0 — чтение и запись только привилегированному коду, 1 — любому, 2 — только чтение привилегированному, 3 — только чтение любому.
  • XN (бит 0, чтение и запись, после сброса 0x0) — 1 — выполнять код из области нельзя.

M33_MPU_RLAR_A2 — mPU, псевдоним 2: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 2

Смещение 0xEDB0, адрес 0xE000 EDB0, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RLAR_A2_…

31302928272625242322212019181716
LIMIT
1514131211109876543210
LIMIT—ATTRINDXEN
  • LIMIT (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 конечного адреса области, включительно: младшие биты дополняются до 0x1F.
  • ATTRINDX (биты 3:1, чтение и запись, после сброса 0x0) — Номер набора атрибутов ATTRn в MPU_MAIR0 и MPU_MAIR1.
  • EN (бит 0, чтение и запись, после сброса 0x0) — Включение области.

M33_MPU_RBAR_A3 — mPU, псевдоним 3: начальный адрес области с номером из MPU_RNR, у которого биты 1:0 равны 3

Смещение 0xEDB4, адрес 0xE000 EDB4, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RBAR_A3_…

31302928272625242322212019181716
BASE
1514131211109876543210
BASESHAPXN
  • BASE (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 начального адреса области — шаг 32 байта.
  • SH (биты 4:3, чтение и запись, после сброса 0x0) — Совместный доступ для памяти Normal: 0 — нет, 2 — внешний домен, 3 — внутренний.
  • AP (биты 2:1, чтение и запись, после сброса 0x0) — Права: 0 — чтение и запись только привилегированному коду, 1 — любому, 2 — только чтение привилегированному, 3 — только чтение любому.
  • XN (бит 0, чтение и запись, после сброса 0x0) — 1 — выполнять код из области нельзя.

M33_MPU_RLAR_A3 — mPU, псевдоним 3: конечный адрес и атрибуты области с номером из MPU_RNR, у которого биты 1:0 равны 3

Смещение 0xEDB8, адрес 0xE000 EDB8, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_RLAR_A3_…

31302928272625242322212019181716
LIMIT
1514131211109876543210
LIMIT—ATTRINDXEN
  • LIMIT (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 конечного адреса области, включительно: младшие биты дополняются до 0x1F.
  • ATTRINDX (биты 3:1, чтение и запись, после сброса 0x0) — Номер набора атрибутов ATTRn в MPU_MAIR0 и MPU_MAIR1.
  • EN (бит 0, чтение и запись, после сброса 0x0) — Включение области.

M33_MPU_MAIR0 — mPU: наборы атрибутов памяти 0–3

Смещение 0xEDC0, адрес 0xE000 EDC0, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_MAIR0_…

31302928272625242322212019181716
ATTR3ATTR2
1514131211109876543210
ATTR1ATTR0
  • ATTRn, n = 0…3 (биты 7:0, 15:8, 23:16, 31:24; чтение и запись, после сброса 0x00) — Атрибуты памяти для областей с ATTRINDX = n: тип и политика кеширования.

M33_MPU_MAIR1 — mPU: наборы атрибутов памяти 4–7

Смещение 0xEDC4, адрес 0xE000 EDC4, после сброса 0x0000 0000. Макросы pico-sdk: M33_MPU_MAIR1_…

31302928272625242322212019181716
ATTR7ATTR6
1514131211109876543210
ATTR5ATTR4
  • ATTRn, n = 4…7 (биты 7:0, 15:8, 23:16, 31:24; чтение и запись, после сброса 0x00) — Атрибуты памяти для областей с ATTRINDX = n: тип и политика кеширования.

M33_SAU_CTRL — sAU: включение и атрибут памяти по умолчанию

Смещение 0xEDD0, адрес 0xE000 EDD0, после сброса 0x0000 0000. Макросы pico-sdk: M33_SAU_CTRL_…

1514131211109876543210
—ALLNSENABLE
  • ALLNS (бит 1, чтение и запись, после сброса 0x0) — При выключенном SAU: 1 — вся память незащищённая, 0 — защищённая.
  • ENABLE (бит 0, чтение и запись, после сброса 0x0) — Включение SAU.

M33_SAU_TYPE — sAU: число областей

Смещение 0xEDD4, адрес 0xE000 EDD4, после сброса 0x0000 0008. Макросы pico-sdk: M33_SAU_TYPE_…

  • SREGION (биты 7:0, только чтение, после сброса 0x08) — Число областей SAU: 8.

M33_SAU_RNR — sAU: номер выбранной области

Смещение 0xEDD8, адрес 0xE000 EDD8, после сброса 0x0000 0000. Макросы pico-sdk: M33_SAU_RNR_…

  • REGION (биты 7:0, чтение и запись, после сброса 0x00) — Номер области для SAU_RBAR и SAU_RLAR.

M33_SAU_RBAR — sAU: начальный адрес выбранной области

Смещение 0xEDDC, адрес 0xE000 EDDC, после сброса 0x0000 0000. Макросы pico-sdk: M33_SAU_RBAR_…

  • BADDR (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 начального адреса области.

M33_SAU_RLAR — sAU: конечный адрес и тип выбранной области

Смещение 0xEDE0, адрес 0xE000 EDE0, после сброса 0x0000 0000. Макросы pico-sdk: M33_SAU_RLAR_…

31302928272625242322212019181716
LADDR
1514131211109876543210
LADDR—NSCENABLE
  • LADDR (биты 31:5, чтение и запись, после сброса 0x0000000) — Биты 31:5 конечного адреса области.
  • NSC (бит 1, чтение и запись, после сброса 0x0) — Область вызываемая из незащищённого кода (NSC): в ней можно выполнить команду SG.
  • ENABLE (бит 0, чтение и запись, после сброса 0x0) — Включение области.

M33_SFSR — причины отказа SecureFault

Смещение 0xEDE4, адрес 0xE000 EDE4, после сброса 0x0000 0000. Макросы pico-sdk: M33_SFSR_…

1514131211109876543210
—LSERRSFARVALIDLSPERRINVTRANAUVIOLINVERINVISINVEP
  • LSERR (бит 7, чтение и запись, после сброса 0x0) — Ошибка при включении или выключении ленивого сохранения состояния.
  • SFARVALID (бит 6, чтение и запись, после сброса 0x0) — В SFAR — действительный адрес; бит могут сбросить другие исключения, например BusFault.
  • LSPERR (бит 5, чтение и запись, после сброса 0x0) — Нарушение SAU или IDAU при ленивом сохранении состояния FPU.
  • INVTRAN (бит 4, чтение и запись, после сброса 0x0) — Переход из защищённой памяти в незащищённую ветвлением без пометки о смене домена.
  • AUVIOL (бит 3, чтение и запись, после сброса 0x0) — Незащищённое обращение к защищённой области адресов.
  • INVER (бит 2, чтение и запись, после сброса 0x0) — Недопустимый возврат из исключения в незащищённом состоянии: неверные биты EXC_RETURN.DCRS или ES.
  • INVIS (бит 1, чтение и запись, после сброса 0x0) — Неверная подпись целостности в кадре стека исключения.
  • INVEP (бит 0, чтение и запись, после сброса 0x0) — Вход в защищённый код не через команду SG или вне области NSC.

M33_SFAR — адрес, вызвавший отказ SecureFault

Смещение 0xEDE8, адрес 0xE000 EDE8, после сброса 0x0000 0000. Макросы pico-sdk: M33_SFAR_…

  • ADDRESS (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Адрес, вызвавший нарушение атрибуции; действителен при SFSR.SFARVALID = 1.

M33_DHCSR — отладка с остановкой ядра: управление и состояние

Смещение 0xEDF0, адрес 0xE000 EDF0, после сброса 0x0000 0000. Макросы pico-sdk: M33_DHCSR_…

31302928272625242322212019181716
—S_RESTART_STS_RESET_STS_RETIRE_ST—S_SDES_LOCKUPS_SLEEPS_HALTS_REGRDY
1514131211109876543210
—C_SNAPSTALL—C_MASKINTSC_STEPC_HALTC_DEBUGEN
  • S_RESTART_ST (бит 26, только чтение, после сброса 0x0) — Ядро обработало запрос снять C_HALT.
  • S_RESET_ST (бит 25, только чтение, после сброса 0x0) — Ядро сбрасывалось после прошлого чтения DHCSR.
  • S_RETIRE_ST (бит 24, только чтение, после сброса 0x0) — Ядро выполнило одну или несколько команд.
  • S_SDE (бит 20, только чтение, после сброса 0x0) — Инвазивная отладка защищённого кода разрешена.
  • S_LOCKUP (бит 19, только чтение, после сброса 0x0) — Ядро в состоянии блокировки (lockup).
  • S_SLEEP (бит 18, только чтение, после сброса 0x0) — Ядро спит.
  • S_HALT (бит 17, только чтение, после сброса 0x0) — Ядро остановлено в режиме отладки.
  • S_REGRDY (бит 16, только чтение, после сброса 0x0) — Квитирование обмена через DCRDR: передача завершена.
  • C_SNAPSTALL (бит 5, чтение и запись, после сброса 0x0) — Разрешить неточный вход в режим отладки.
  • C_MASKINTS (бит 3, чтение и запись, после сброса 0x0) — Маскировать PendSV, SysTick и внешние прерывания при отладке.
  • C_STEP (бит 2, чтение и запись, после сброса 0x0) — Пошаговое выполнение.
  • C_HALT (бит 1, чтение и запись, после сброса 0x0) — Запрос остановки ядра.
  • C_DEBUGEN (бит 0, чтение и запись, после сброса 0x0) — Включение отладки с остановкой ядра.

M33_DCRSR — отладка: выбор регистра ядра для чтения или записи

Смещение 0xEDF4, адрес 0xE000 EDF4, после сброса 0x0000 0000. Макросы pico-sdk: M33_DCRSR_…

31302928272625242322212019181716
—REGWNR
1514131211109876543210
—REGSEL
  • REGWNR (бит 16, чтение и запись, после сброса 0x0) — Направление обмена: 0 — чтение регистра, 1 — запись.
  • REGSEL (биты 6:0, чтение и запись, после сброса 0x00) — Номер регистра ядра, специального регистра или регистра FPU.

M33_DCRDR — отладка: данные регистра ядра

Смещение 0xEDF8, адрес 0xE000 EDF8, после сброса 0x0000 0000. Макросы pico-sdk: M33_DCRDR_…

  • DBGTMP (биты 31:0, чтение и запись, после сброса 0x0000 0000) — Данные обмена с регистром ядра; ещё и канал сообщений между отладчиком и программой.

M33_DEMCR — отладка: перехват векторов, монитор отладки и включение DWT и ITM

Смещение 0xEDFC, адрес 0xE000 EDFC, после сброса 0x0000 0000. Макросы pico-sdk: M33_DEMCR_…

31302928272625242322212019181716
—TRCENA—SDMEMON_REQMON_STEPMON_PENDMON_EN
1514131211109876543210
—VC_SFERRVC_HARDERRVC_INTERRVC_BUSERRVC_STATERRVC_CHKERRVC_NOCPERRVC_MMERR—VC_CORERESET
  • TRCENA (бит 24, чтение и запись, после сброса 0x0) — Общее включение DWT и ITM.
  • SDME (бит 20, только чтение, после сброса 0x0) — Монитор отладки работает в защищённом состоянии, и события отладки в нём разрешены.
  • MON_REQ (бит 19, чтение и запись, после сброса 0x0) — Флаг-семафор монитора отладки.
  • MON_STEP (бит 18, чтение и запись, после сброса 0x0) — Пошаговое выполнение через монитор отладки.
  • MON_PEND (бит 17, чтение и запись, после сброса 0x0) — Ожидание исключения DebugMonitor.
  • MON_EN (бит 16, чтение и запись, после сброса 0x0) — Включение исключения DebugMonitor.
  • VC_SFERR (бит 11, чтение и запись, после сброса 0x0) — Останавливать ядро при SecureFault.
  • VC_HARDERR (бит 10, чтение и запись, после сброса 0x0) — Останавливать ядро при HardFault.
  • VC_INTERR (бит 9, чтение и запись, после сброса 0x0) — Останавливать ядро при отказах на входе в исключение и выходе из него.
  • VC_BUSERR (бит 8, чтение и запись, после сброса 0x0) — Останавливать ядро при BusFault.
  • VC_STATERR (бит 7, чтение и запись, после сброса 0x0) — Останавливать ядро при UsageFault из-за ошибки состояния, например неопределённой команды.
  • VC_CHKERR (бит 6, чтение и запись, после сброса 0x0) — Останавливать ядро при UsageFault из-за ошибки проверки, например выравнивания.
  • VC_NOCPERR (бит 5, чтение и запись, после сброса 0x0) — Останавливать ядро при UsageFault из-за обращения к сопроцессору.
  • VC_MMERR (бит 4, чтение и запись, после сброса 0x0) — Останавливать ядро при MemManage.
  • VC_CORERESET (бит 0, чтение и запись, после сброса 0x0) — Останавливать ядро сразу после тёплого сброса.

M33_DSCSR — отладка: состояние защиты и выбор банковых регистров

Смещение 0xEE08, адрес 0xE000 EE08, после сброса 0x0000 0000. Макросы pico-sdk: M33_DSCSR_…

31302928272625242322212019181716
—CDSKEYCDS
1514131211109876543210
—SBRSELSBRSELEN
  • CDSKEY (бит 17, чтение и запись, после сброса 0x0) — Запись в CDS действует, только если CDSKEY одновременно пишется 0.
  • CDS (бит 16, чтение и запись, после сброса 0x0) — Текущее состояние защиты ядра.
  • SBRSEL (бит 1, чтение и запись, после сброса 0x0) — При SBRSELEN = 1 — какую копию банковых регистров видит отладчик: защищённую или незащищённую.
  • SBRSELEN (бит 0, чтение и запись, после сброса 0x0) — Копию банковых регистров для отладчика выбирает SBRSEL, а не текущее состояние ядра.

M33_STIR — программный вызов прерывания

Смещение 0xEF00, адрес 0xE000 EF00, после сброса 0x0000 0000. Макросы pico-sdk: M33_STIR_…

  • INTID (биты 8:0, чтение и запись, после сброса 0x000) — Номер прерывания для программного вызова: номер исключения минус 16.

M33_FPCCR — fPU: сохранение контекста

Смещение 0xEF34, адрес 0xE000 EF34, после сброса 0x2000 0472. Макросы pico-sdk: M33_FPCCR_…

  • ASPEN (бит 31, чтение и запись, после сброса 0x0) — Команда FPU устанавливает CONTROL.FPCA — контекст FPU сохраняется при входе в исключение.
  • LSPEN (бит 30, чтение и запись, после сброса 0x0) — Ленивое сохранение контекста FPU.
  • LSPENS (бит 29, чтение и запись, после сброса 0x1) — Можно ли менять LSPEN из незащищённого состояния.
  • CLRONRET (бит 28, чтение и запись, после сброса 0x0) — Очищать регистры FPU, сохраняемые вызывающим, при возврате из исключения.
  • CLRONRETS (бит 27, чтение и запись, после сброса 0x0) — Можно ли менять CLRONRET из незащищённого состояния.
  • TS (бит 26, чтение и запись, после сброса 0x0) — Считать регистры FPU защищёнными.
  • UFRDY (бит 10, чтение и запись, после сброса 0x1) — Когда выделялся кадр FPU, программа могла поставить в ожидание UsageFault.
  • SPLIMVIOL (бит 9, чтение и запись, после сброса 0x0) — Кадр FPU нарушает предел стека, действовавший при начале ленивого сохранения; свой у каждого состояния.
  • MONRDY (бит 8, чтение и запись, после сброса 0x0) — Когда выделялся кадр FPU, программа могла поставить в ожидание DebugMonitor.
  • SFRDY (бит 7, чтение и запись, после сброса 0x0) — Когда выделялся кадр FPU, программа могла поставить в ожидание SecureFault; только в защищённой копии.
  • BFRDY (бит 6, чтение и запись, после сброса 0x1) — Когда выделялся кадр FPU, программа могла поставить в ожидание BusFault.
  • MMRDY (бит 5, чтение и запись, после сброса 0x1) — Когда выделялся кадр FPU, программа могла поставить в ожидание MemManage.
  • HFRDY (бит 4, чтение и запись, после сброса 0x1) — Когда выделялся кадр FPU, программа могла поставить в ожидание HardFault.
  • THREAD (бит 3, чтение и запись, после сброса 0x0) — Кадр FPU выделен в режиме потока.
  • S (бит 2, чтение и запись, после сброса 0x0) — Контекст FPU защищённый; только в защищённой копии регистра.
  • USER (бит 1, чтение и запись, после сброса 0x1) — Кадр FPU выделен непривилегированным кодом.
  • LSPACT (бит 0, чтение и запись, после сброса 0x0) — Ленивое сохранение состояния FPU активно.

M33_FPCAR — fPU: адрес места под регистры FPU в стеке

Смещение 0xEF38, адрес 0xE000 EF38, после сброса 0x0000 0000. Макросы pico-sdk: M33_FPCAR_…

  • ADDRESS (биты 31:3, чтение и запись, после сброса 0x0000 0000) — Биты 31:3 адреса места под регистры FPU в кадре стека исключения.

M33_FPDSCR — fPU: значения FPSCR по умолчанию

Смещение 0xEF3C, адрес 0xE000 EF3C, после сброса 0x0000 0000. Макросы pico-sdk: M33_FPDSCR_…

31302928272625242322212019181716
—AHPDNFZRMODE—
1514131211109876543210
—
  • AHP (бит 26, чтение и запись, после сброса 0x0) — Значение FPSCR.AHP для нового контекста FPU.
  • DN (бит 25, чтение и запись, после сброса 0x0) — Значение FPSCR.DN — режим NaN по умолчанию — для нового контекста.
  • FZ (бит 24, чтение и запись, после сброса 0x0) — Значение FPSCR.FZ — сброс денормализованных чисел в ноль — для нового контекста.
  • RMODE (биты 23:22, чтение и запись, после сброса 0x0) — Значение FPSCR.RMode — режим округления — для нового контекста.

M33_MVFR0 — fPU: поддерживаемые операции

Смещение 0xEF40, адрес 0xE000 EF40, после сброса 0x6054 0601. Макросы pico-sdk: M33_MVFR0_…

31302928272625242322212019181716
FPROUND—FPSQRTFPDIVIDE
1514131211109876543210
—FPDPFPSPSIMDREG
  • FPROUND (биты 31:28, только чтение, после сброса 0x6) — Поддержка всех режимов округления.
  • FPSQRT (биты 23:20, только чтение, после сброса 0x5) — Аппаратный квадратный корень.
  • FPDIVIDE (биты 19:16, только чтение, после сброса 0x4) — Аппаратное деление.
  • FPDP (биты 11:8, только чтение, после сброса 0x6) — Операции двойной точности.
  • FPSP (биты 7:4, только чтение, после сброса 0x0) — Операции одинарной точности.
  • SIMDREG (биты 3:0, только чтение, после сброса 0x1) — Размер файла регистров FPU.

M33_MVFR1 — fPU: поддерживаемые операции и режимы

Смещение 0xEF44, адрес 0xE000 EF44, после сброса 0x8500 0089. Макросы pico-sdk: M33_MVFR1_…

31302928272625242322212019181716
FMACFPHP—
1514131211109876543210
—FPDNANFPFTZ
  • FMAC (биты 31:28, только чтение, после сброса 0x8) — Слитное умножение с накоплением.
  • FPHP (биты 27:24, только чтение, после сброса 0x5) — Преобразования половинной точности.
  • FPDNAN (биты 7:4, только чтение, после сброса 0x8) — Распространение NaN.
  • FPFTZ (биты 3:0, только чтение, после сброса 0x9) — Денормализованные числа всегда сбрасываются в ноль.

M33_MVFR2 — fPU: прочие возможности

Смещение 0xEF48, адрес 0xE000 EF48, после сброса 0x0000 0060. Макросы pico-sdk: M33_MVFR2_…

  • FPMISC (биты 7:4, только чтение, после сброса 0x6) — Прочие операции FPU.

M33_DDEVARCH — sCS: архитектура компонента CoreSight

Смещение 0xEFBC, адрес 0xE000 EFBC, после сброса 0x4770 2A04. Макросы pico-sdk: M33_DDEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHVERARCHPART
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x0) — Ревизия архитектуры компонента.
  • ARCHVER (биты 15:12, только чтение, после сброса 0x2) — Версия архитектуры компонента.
  • ARCHPART (биты 11:0, только чтение, после сброса 0xA04) — Номер архитектуры компонента.

M33_DDEVTYPE — sCS: тип компонента CoreSight

Смещение 0xEFCC, адрес 0xE000 EFCC, после сброса 0x0000 0000. Макросы pico-sdk: M33_DDEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x0) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x0) — Основной тип компонента.

M33_DPIDR4 — sCS: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0xEFD0, адрес 0xE000 EFD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_DPIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_DPIDR5 — sCS: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0xEFD4, адрес 0xE000 EFD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DPIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DPIDR6 — sCS: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0xEFD8, адрес 0xE000 EFD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DPIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DPIDR7 — sCS: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0xEFDC, адрес 0xE000 EFDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_DPIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_DPIDR0 — sCS: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0xEFE0, адрес 0xE000 EFE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_DPIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_DPIDR1 — sCS: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0xEFE4, адрес 0xE000 EFE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_DPIDR1_…

1514131211109876543210
—DES_0PART_1
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_1 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента.

M33_DPIDR2 — sCS: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0xEFE8, адрес 0xE000 EFE8, после сброса 0x0000 000B. Макросы pico-sdk: M33_DPIDR2_…

1514131211109876543210
—REVISIONJEDECDES_1
  • REVISION (биты 7:4, только чтение, после сброса 0x0) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_1 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm.

M33_DPIDR3 — sCS: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0xEFEC, адрес 0xE000 EFEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_DPIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_DCIDR0 — sCS: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0xEFF0, адрес 0xE000 EFF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_DCIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_DCIDR1 — sCS: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0xEFF4, адрес 0xE000 EFF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_DCIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_DCIDR2 — sCS: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0xEFF8, адрес 0xE000 EFF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_DCIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_DCIDR3 — sCS: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0xEFFC, адрес 0xE000 EFFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_DCIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

M33_TRCPRGCTLR — eTM: включение

Смещение 0x41004, адрес 0xE004 1004, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCPRGCTLR_…

  • EN (бит 0, чтение и запись, после сброса 0x0) — Включение блока трассировки ETM.

M33_TRCSTATR — eTM: состояние

Смещение 0x4100C, адрес 0xE004 100C, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCSTATR_…

1514131211109876543210
—PMSTABLEIDLE
  • PMSTABLE (бит 1, только чтение, после сброса 0x0) — Регистры ETM стабильны и их можно читать.
  • IDLE (бит 0, только чтение, после сброса 0x0) — Блок трассировки неактивен.

M33_TRCCONFIGR — eTM: основные параметры трассировки

Смещение 0x41010, адрес 0xE004 1010, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCCONFIGR_…

1514131211109876543210
—RSTSCONDCCIBB—
  • RS (бит 12, чтение и запись, после сброса 0x0) — Стек возвратов.
  • TS (бит 11, чтение и запись, после сброса 0x0) — Глобальные метки времени в трассировке.
  • COND (биты 10:5, чтение и запись, после сброса 0x00) — Трассировка условных команд.
  • CCI (бит 4, чтение и запись, после сброса 0x0) — Счёт тактов в трассировке команд.
  • BB (бит 3, чтение и запись, после сброса 0x0) — Трансляция всех ветвлений (branch broadcast).

M33_TRCEVENTCTL0R — eTM: выбор событий

Смещение 0x41020, адрес 0xE004 1020, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCEVENTCTL0R_…

1514131211109876543210
TYPE1—SEL1TYPE0—SEL0
  • TYPE1 (бит 15, чтение и запись, после сброса 0x0) — Тип ресурса события 1: 0 — одиночный ресурс, 1 — пара ресурсов с логической комбинацией.
  • SEL1 (биты 10:8, чтение и запись, после сброса 0x0) — Номер ресурса или пары ресурсов для события 1.
  • TYPE0 (бит 7, чтение и запись, после сброса 0x0) — Тип ресурса события 0: 0 — одиночный ресурс, 1 — пара ресурсов с логической комбинацией.
  • SEL0 (биты 2:0, чтение и запись, после сброса 0x0) — Номер ресурса или пары ресурсов для события 0.

M33_TRCEVENTCTL1R — eTM: поведение событий

Смещение 0x41024, адрес 0xE004 1024, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCEVENTCTL1R_…

1514131211109876543210
—LPOVERRIDEATB—INSTEN1INSTEN0
  • LPOVERRIDE (бит 12, чтение и запись, после сброса 0x0) — Особое поведение блока трассировки, когда ядро в режиме пониженного потребления.
  • ATB (бит 11, чтение и запись, после сброса 0x0) — Выдавать триггер по шине ATB.
  • INSTEN1 (бит 1, чтение и запись, после сброса 0x0) — Вставлять элемент события 1 в поток трассировки команд.
  • INSTEN0 (бит 0, чтение и запись, после сброса 0x0) — Вставлять элемент события 0 в поток трассировки команд.

M33_TRCSTALLCTLR — eTM: остановка ядра при заполнении FIFO

Смещение 0x4102C, адрес 0xE004 102C, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCSTALLCTLR_…

1514131211109876543210
—INSTPRIORITY—ISTALL—LEVEL—
  • INSTPRIORITY (бит 10, только чтение, после сброса 0x0) — Зарезервирован, 0.
  • ISTALL (бит 8, чтение и запись, после сброса 0x0) — Останавливать ядро, когда в буфере трассировки команд мало места.
  • LEVEL (биты 3:2, чтение и запись, после сброса 0x0) — Порог остановок из четырёх уровней: больший сильнее вмешивается в работу ядра, но снижает риск переполнения FIFO.

M33_TRCTSCTLR — eTM: вставка глобальных меток времени

Смещение 0x41030, адрес 0xE004 1030, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCTSCTLR_…

1514131211109876543210
—TYPE0—SEL0
  • TYPE0 (бит 7, чтение и запись, после сброса 0x0) — Тип ресурса события, вставляющего метку времени: одиночный или пара.
  • SEL0 (биты 1:0, чтение и запись, после сброса 0x0) — Номер ресурса события, вставляющего метку времени.

M33_TRCSYNCPR — eTM: период синхронизации потока

Смещение 0x41034, адрес 0xE004 1034, после сброса 0x0000 000A. Макросы pico-sdk: M33_TRCSYNCPR_…

  • PERIOD (биты 4:0, только чтение, после сброса 0x0A) — Период синхронизации — 2ᴺ байт трассировки, N от 8 до 20; 0 — без периодической синхронизации; по таблице только чтение, 10 — 1 КБ.

M33_TRCCCCTLR — eTM: порог счёта тактов

Смещение 0x41038, адрес 0xE004 1038, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCCCCTLR_…

  • THRESHOLD (биты 11:0, чтение и запись, после сброса 0x000) — Наименьший интервал в тактах между пакетами счёта тактов.

M33_TRCVICTLR — eTM: фильтрация трассировки команд

Смещение 0x41080, адрес 0xE004 1080, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCVICTLR_…

31302928272625242322212019181716
—EXLEVEL_S3—EXLEVEL_S0
1514131211109876543210
—TRCERRTRCRESETSSSTATUS—TYPE0—SEL0
  • EXLEVEL_S3 (бит 19, чтение и запись, после сброса 0x0) — Трассировка команд защищённого кода на уровне исключений 3.
  • EXLEVEL_S0 (бит 16, чтение и запись, после сброса 0x0) — Трассировка команд защищённого кода на уровне исключений 0.
  • TRCERR (бит 11, чтение и запись, после сброса 0x0) — Всегда трассировать исключение системной ошибки.
  • TRCRESET (бит 10, чтение и запись, после сброса 0x0) — Всегда трассировать исключение сброса.
  • SSSTATUS (бит 9, чтение и запись, после сброса 0x0) — Текущее состояние логики старт-стоп.
  • TYPE0 (бит 7, чтение и запись, после сброса 0x0) — Тип ресурса события, разрешающего трассировку команд.
  • SEL0 (биты 1:0, чтение и запись, после сброса 0x0) — Номер ресурса события, разрешающего трассировку команд.

M33_TRCCNTRLDVR0 — eTM: значение перезагрузки счётчика 0

Смещение 0x41140, адрес 0xE004 1140, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCCNTRLDVR0_…

  • VALUE (биты 15:0, чтение и запись, после сброса 0x0000) — Значение, загружаемое в счётчик при каждом событии перезагрузки.

M33_TRCIDR8 — eTM: идентификатор TRCIDR8 — глубина спекуляции

Смещение 0x41180, адрес 0xE004 1180, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIDR8_…

  • MAXSPEC (биты 31:0, только чтение, после сброса 0x0000 0000) — Наибольшая глубина спекуляции.

M33_TRCIDR9 — eTM: идентификатор TRCIDR9 — число ключей P0

Смещение 0x41184, адрес 0xE004 1184, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIDR9_…

  • NUMP0KEY (биты 31:0, только чтение, после сброса 0x0000 0000) — Число ключей P0.

M33_TRCIDR10 — eTM: идентификатор TRCIDR10 — число ключей P1

Смещение 0x41188, адрес 0xE004 1188, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIDR10_…

  • NUMP1KEY (биты 31:0, только чтение, после сброса 0x0000 0000) — Число ключей P1.

M33_TRCIDR11 — eTM: идентификатор TRCIDR11 — число особых ключей P1

Смещение 0x4118C, адрес 0xE004 118C, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIDR11_…

  • NUMP1SPC (биты 31:0, только чтение, после сброса 0x0000 0000) — Число особых ключей P1.

M33_TRCIDR12 — eTM: идентификатор TRCIDR12 — число ключей условных команд

Смещение 0x41190, адрес 0xE004 1190, после сброса 0x0000 0001. Макросы pico-sdk: M33_TRCIDR12_…

  • NUMCONDKEY (биты 31:0, только чтение, после сброса 0x0000 0001) — Число ключей условных команд.

M33_TRCIDR13 — eTM: идентификатор TRCIDR13 — число особых ключей условных команд

Смещение 0x41194, адрес 0xE004 1194, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIDR13_…

  • NUMCONDSPC (биты 31:0, только чтение, после сброса 0x0000 0000) — Число особых ключей условных команд.

M33_TRCIMSPEC — eTM: особые функции реализации

Смещение 0x411C0, адрес 0xE004 11C0, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCIMSPEC_…

  • SUPPORT (биты 3:0, только чтение, после сброса 0x0) — Зарезервирован, 0.

M33_TRCIDR0 — eTM: идентификатор TRCIDR0 — возможности трассировки

Смещение 0x411E0, адрес 0xE004 11E0, после сброса 0x2800 06E1. Макросы pico-sdk: M33_TRCIDR0_…

31302928272625242322212019181716
—COMMOPTTSSIZE—TRCEXDATAQSUPP
1514131211109876543210
QSUPPQFILTCONDTYPENUMEVENTRETSTACK—TRCCCITRCCONDTRCBBTRCDATAINSTP0RES1
  • COMMOPT (бит 29, только чтение, после сброса 0x1) — Режим подтверждения (commit).
  • TSSIZE (биты 28:24, только чтение, после сброса 0x08) — Размер глобальной метки времени.
  • TRCEXDATA (бит 17, только чтение, после сброса 0x0) — Трассировка данных при исключениях.
  • QSUPP (биты 16:15, только чтение, после сброса 0x0) — Поддержка элементов Q.
  • QFILT (бит 14, только чтение, после сброса 0x0) — Фильтрация элементов Q.
  • CONDTYPE (биты 13:12, только чтение, после сброса 0x0) — Как трассируются условные команды.
  • NUMEVENT (биты 11:10, только чтение, после сброса 0x1) — Число событий минус 1.
  • RETSTACK (бит 9, только чтение, после сброса 0x1) — Стек возвратов.
  • TRCCCI (бит 7, только чтение, после сброса 0x1) — Счёт тактов в трассировке команд.
  • TRCCOND (бит 6, только чтение, после сброса 0x1) — Трассировка условных команд.
  • TRCBB (бит 5, только чтение, после сброса 0x1) — Трансляция всех ветвлений.
  • TRCDATA (биты 4:3, только чтение, после сброса 0x0) — Трассировка данных.
  • INSTP0 (биты 2:1, только чтение, после сброса 0x0) — Трассировка загрузок и сохранений элементами P0.
  • RES1 (бит 0, только чтение, после сброса 0x1) — Зарезервирован, 1.

M33_TRCIDR1 — eTM: идентификатор TRCIDR1 — разработчик и версия архитектуры

Смещение 0x411E4, адрес 0xE004 11E4, после сброса 0x4100 F421. Макросы pico-sdk: M33_TRCIDR1_…

31302928272625242322212019181716
DESIGNER—
1514131211109876543210
RES1TRCARCHMAJTRCARCHMINREVISION
  • DESIGNER (биты 31:24, только чтение, после сброса 0x41) — Разработчик блока трассировки: 0x41 — Arm.
  • RES1 (биты 15:12, только чтение, после сброса 0xF) — Зарезервировано, единицы.
  • TRCARCHMAJ (биты 11:8, только чтение, после сброса 0x4) — Старший номер версии архитектуры ETM: 4.
  • TRCARCHMIN (биты 7:4, только чтение, после сброса 0x2) — Младший номер версии архитектуры ETM: 2 — ETMv4.2 (раздел 3.7.3.4); в описании поля в заголовке — 0b0000.
  • REVISION (биты 3:0, только чтение, после сброса 0x1) — Ревизия реализации.

M33_TRCIDR2 — eTM: идентификатор TRCIDR2 — размеры адресов, данных и счётчика тактов

Смещение 0x411E8, адрес 0xE004 11E8, после сброса 0x0000 0004. Макросы pico-sdk: M33_TRCIDR2_…

31302928272625242322212019181716
—CCSIZEDVSIZEDASIZE
1514131211109876543210
DASIZEVMIDSIZECIDSIZEIASIZE
  • CCSIZE (биты 28:25, только чтение, после сброса 0x0) — Разрядность счётчика тактов.
  • DVSIZE (биты 24:20, только чтение, после сброса 0x00) — Размер значения данных.
  • DASIZE (биты 19:15, только чтение, после сброса 0x00) — Размер адреса данных.
  • VMIDSIZE (биты 14:10, только чтение, после сброса 0x00) — Размер идентификатора виртуальной машины.
  • CIDSIZE (биты 9:5, только чтение, после сброса 0x00) — Размер идентификатора контекста.
  • IASIZE (биты 4:0, только чтение, после сброса 0x04) — Размер адреса команд.

M33_TRCIDR3 — eTM: идентификатор TRCIDR3 — остановка, синхронизация, уровни исключений

Смещение 0x411EC, адрес 0xE004 11EC, после сброса 0x0F09 0004. Макросы pico-sdk: M33_TRCIDR3_…

31302928272625242322212019181716
NOOVERFLOWNUMPROCSYSSTALLSTALLCTLSYNCPRTRCERREXLEVEL_NSEXLEVEL_S
1514131211109876543210
—CCITMIN
  • NOOVERFLOW (бит 31, только чтение, после сброса 0x0) — Есть ли режим трассировки без переполнения.
  • NUMPROC (биты 30:28, только чтение, после сброса 0x0) — Число трассируемых ядер минус 1.
  • SYSSTALL (бит 27, только чтение, после сброса 0x1) — Система поддерживает остановку ядра.
  • STALLCTL (бит 26, только чтение, после сброса 0x1) — Есть регистр TRCSTALLCTLR.
  • SYNCPR (бит 25, только чтение, после сброса 0x1) — Период синхронизации TRCSYNCPR только читается.
  • TRCERR (бит 24, только чтение, после сброса 0x1) — Есть бит TRCVICTLR.TRCERR.
  • EXLEVEL_NS (биты 23:20, только чтение, после сброса 0x0) — Уровни исключений незащищённого состояния.
  • EXLEVEL_S (биты 19:16, только чтение, после сброса 0x9) — Уровни исключений защищённого состояния.
  • CCITMIN (биты 11:0, только чтение, после сброса 0x004) — Наименьший порог счёта тактов в TRCCCCTLR.

M33_TRCIDR4 — eTM: идентификатор TRCIDR4 — число компараторов и селекторов ресурсов

Смещение 0x411F0, адрес 0xE004 11F0, после сброса 0x0011 4000. Макросы pico-sdk: M33_TRCIDR4_…

31302928272625242322212019181716
NUMVMIDCNUMCIDCNUMSSCCNUMRSPAIR
1514131211109876543210
NUMPC—SUPPDACNUMDVCNUMACPAIRS
  • NUMVMIDC (биты 31:28, только чтение, после сброса 0x0) — Число компараторов идентификатора виртуальной машины.
  • NUMCIDC (биты 27:24, только чтение, после сброса 0x0) — Число компараторов идентификатора контекста.
  • NUMSSCC (биты 23:20, только чтение, после сброса 0x1) — Число компараторов однократного срабатывания.
  • NUMRSPAIR (биты 19:16, только чтение, после сброса 0x1) — Число пар селекторов ресурсов минус 1.
  • NUMPC (биты 15:12, только чтение, после сброса 0x4) — Число входов компараторов ядра.
  • SUPPDAC (бит 8, только чтение, после сброса 0x0) — Сравнение адресов данных.
  • NUMDVC (биты 7:4, только чтение, после сброса 0x0) — Число компараторов значений данных.
  • NUMACPAIRS (биты 3:0, только чтение, после сброса 0x0) — Число пар компараторов адресов.

M33_TRCIDR5 — eTM: идентификатор TRCIDR5 — счётчики, секвенсор, внешние входы

Смещение 0x411F4, адрес 0xE004 11F4, после сброса 0x90C7 0004. Макросы pico-sdk: M33_TRCIDR5_…

31302928272625242322212019181716
REDFUNCNTRNUMCNTRNUMSEQSTATE—LPOVERRIDEATBTRIGTRACEIDSIZE
1514131211109876543210
—NUMEXTINSELNUMEXTIN
  • REDFUNCNTR (бит 31, только чтение, после сброса 0x1) — Счётчик 0 с урезанными функциями.
  • NUMCNTR (биты 30:28, только чтение, после сброса 0x1) — Число счётчиков.
  • NUMSEQSTATE (биты 27:25, только чтение, после сброса 0x0) — Число состояний секвенсора.
  • LPOVERRIDE (бит 23, только чтение, после сброса 0x1) — Есть бит TRCEVENTCTL1R.LPOVERRIDE.
  • ATBTRIG (бит 22, только чтение, после сброса 0x1) — Есть бит TRCEVENTCTL1R.ATB.
  • TRACEIDSIZE (биты 21:16, только чтение, после сброса 0x07) — Разрядность идентификатора трассировки: 7 бит.
  • NUMEXTINSEL (биты 11:9, только чтение, после сброса 0x0) — Число селекторов внешних входов.
  • NUMEXTIN (биты 8:0, только чтение, после сброса 0x004) — Число внешних входов.

M33_TRCIDR6 — eTM: идентификатор TRCIDR6 — зарезервирован, 0

Смещение 0x411F8, адрес 0xE004 11F8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCIDR7 — eTM: идентификатор TRCIDR7 — зарезервирован, 0

Смещение 0x411FC, адрес 0xE004 11FC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCRSCTLR2 — eTM: селектор ресурсов 2

Смещение 0x41208, адрес 0xE004 1208, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCRSCTLR2_…

31302928272625242322212019181716
—PAIRINVINV—GROUP
1514131211109876543210
—SELECT
  • PAIRINV (бит 21, чтение и запись, после сброса 0x0) — Инвертировать результат пары ресурсов; бит есть только у младшего регистра пары.
  • INV (бит 20, чтение и запись, после сброса 0x0) — Инвертировать выбранные ресурсы.
  • GROUP (биты 18:16, чтение и запись, после сброса 0x0) — Группа ресурсов.
  • SELECT (биты 7:0, чтение и запись, после сброса 0x00) — Ресурсы выбранной группы — по биту на ресурс.

M33_TRCRSCTLR3 — eTM: селектор ресурсов 3

Смещение 0x4120C, адрес 0xE004 120C, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCRSCTLR3_…

31302928272625242322212019181716
—PAIRINVINV—GROUP
1514131211109876543210
—SELECT
  • PAIRINV (бит 21, чтение и запись, после сброса 0x0) — Инвертировать результат пары ресурсов; бит есть только у младшего регистра пары.
  • INV (бит 20, чтение и запись, после сброса 0x0) — Инвертировать выбранные ресурсы.
  • GROUP (биты 18:16, чтение и запись, после сброса 0x0) — Группа ресурсов.
  • SELECT (биты 7:0, чтение и запись, после сброса 0x00) — Ресурсы выбранной группы — по биту на ресурс.

M33_TRCSSCSR — eTM: состояние компаратора однократного срабатывания

Смещение 0x412A0, адрес 0xE004 12A0, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCSSCSR_…

31302928272625242322212019181716
STATUS—
1514131211109876543210
—PCDVDAINST
  • STATUS (бит 31, чтение и запись, после сброса 0x0) — Компаратор однократного срабатывания сработал.
  • PC (бит 3, только чтение, после сброса 0x0) — Зарезервирован: по описанию единица, по таблице после сброса 0.
  • DV (бит 2, только чтение, после сброса 0x0) — Зарезервирован, 0.
  • DA (бит 1, только чтение, после сброса 0x0) — Зарезервирован, 0.
  • INST (бит 0, только чтение, после сброса 0x0) — Зарезервирован, 0.

M33_TRCSSPCICR — eTM: входы компараторов ядра для однократного срабатывания

Смещение 0x412C0, адрес 0xE004 12C0, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCSSPCICR_…

  • PC (биты 3:0, чтение и запись, после сброса 0x0) — Входы компараторов ядра для однократного срабатывания — по биту на вход.

M33_TRCPDCR — eTM: запрос питания

Смещение 0x41310, адрес 0xE004 1310, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCPDCR_…

  • PU (бит 3, чтение и запись, после сброса 0x0) — Запрос питания блока трассировки.

M33_TRCPDSR — eTM: состояние питания

Смещение 0x41314, адрес 0xE004 1314, после сброса 0x0000 0003. Макросы pico-sdk: M33_TRCPDSR_…

1514131211109876543210
—OSLK—STICKYPDPOWER
  • OSLK (бит 5, только чтение, после сброса 0x0) — Включена блокировка ОС (OS Lock).
  • STICKYPD (бит 1, только чтение, после сброса 0x1) — Питание блока пропадало — состояние его регистров потеряно.
  • POWER (бит 0, только чтение, после сброса 0x1) — Блок трассировки запитан.

M33_TRCITATBIDR — eTM, режим интеграции: идентификатор на шине ATB

Смещение 0x41EE4, адрес 0xE004 1EE4, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCITATBIDR_…

  • ID (биты 6:0, чтение и запись, после сброса 0x00) — Идентификатор трассировки на шине ATB.

M33_TRCITIATBINR — eTM, режим интеграции: входы шины ATB

Смещение 0x41EF4, адрес 0xE004 1EF4, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCITIATBINR_…

1514131211109876543210
—AFVALIDMATREADYM
  • AFVALIDM (бит 1, чтение и запись, после сброса 0x0) — Вход AFVALIDM.
  • ATREADYM (бит 0, чтение и запись, после сброса 0x0) — Вход ATREADYM.

M33_TRCITIATBOUTR — eTM, режим интеграции: выходы шины ATB

Смещение 0x41EFC, адрес 0xE004 1EFC, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCITIATBOUTR_…

1514131211109876543210
—AFREADYATVALID
  • AFREADY (бит 1, чтение и запись, после сброса 0x0) — Выход AFREADY.
  • ATVALID (бит 0, чтение и запись, после сброса 0x0) — Выход ATVALID.

M33_TRCCLAIMSET — eTM: установка меток захвата

Смещение 0x41FA0, адрес 0xE004 1FA0, после сброса 0x0000 000F. Макросы pico-sdk: M33_TRCCLAIMSET_…

1514131211109876543210
—SET3SET2SET1SET0
  • SETn, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x1) — Метка захвата n: запись 1 устанавливает её, чтение показывает, что бит есть.

M33_TRCCLAIMCLR — eTM: сброс меток захвата

Смещение 0x41FA4, адрес 0xE004 1FA4, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCCLAIMCLR_…

1514131211109876543210
—CLR3CLR2CLR1CLR0
  • CLRn, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x0) — Метка захвата n: запись 1 сбрасывает её, чтение — текущее значение.

M33_TRCAUTHSTATUS — eTM: разрешённые виды отладки

Смещение 0x41FB8, адрес 0xE004 1FB8, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCAUTHSTATUS_…

1514131211109876543210
—SNIDSIDNSNIDNSID
  • SNID (биты 7:6, только чтение, после сброса 0x0) — Защищённая неинвазивная отладка — трассировка.
  • SID (биты 5:4, только чтение, после сброса 0x0) — Защищённая инвазивная отладка.
  • NSNID (биты 3:2, только чтение, после сброса 0x0) — Незащищённая неинвазивная отладка — трассировка.
  • NSID (биты 1:0, только чтение, после сброса 0x0) — Незащищённая инвазивная отладка.

M33_TRCDEVARCH — eTM: архитектура компонента CoreSight

Смещение 0x41FBC, адрес 0xE004 1FBC, после сброса 0x4772 4A13. Макросы pico-sdk: M33_TRCDEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHID
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x2) — Ревизия архитектуры компонента.
  • ARCHID (биты 15:0, только чтение, после сброса 0x4A13) — Архитектура компонента: версия в битах 15:12 и номер в битах 11:0.

M33_TRCDEVID — eTM: конфигурация компонента — 0

Смещение 0x41FC8, адрес 0xE004 1FC8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCDEVID_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCDEVTYPE — eTM: тип компонента CoreSight

Смещение 0x41FCC, адрес 0xE004 1FCC, после сброса 0x0000 0013. Макросы pico-sdk: M33_TRCDEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x1) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x3) — Основной тип компонента.

M33_TRCPIDR4 — eTM: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0x41FD0, адрес 0xE004 1FD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_TRCPIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_TRCPIDR5 — eTM: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0x41FD4, адрес 0xE004 1FD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCPIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCPIDR6 — eTM: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0x41FD8, адрес 0xE004 1FD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCPIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCPIDR7 — eTM: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0x41FDC, адрес 0xE004 1FDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_TRCPIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_TRCPIDR0 — eTM: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0x41FE0, адрес 0xE004 1FE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_TRCPIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_TRCPIDR1 — eTM: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0x41FE4, адрес 0xE004 1FE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_TRCPIDR1_…

1514131211109876543210
—DES_0PART_0
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_0 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента; в заголовке поле названо PART_0, как в PIDR0.

M33_TRCPIDR2 — eTM: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0x41FE8, адрес 0xE004 1FE8, после сброса 0x0000 002B. Макросы pico-sdk: M33_TRCPIDR2_…

1514131211109876543210
—REVISIONJEDECDES_0
  • REVISION (биты 7:4, только чтение, после сброса 0x2) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_0 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm; в заголовке поле названо DES_0, как в PIDR1.

M33_TRCPIDR3 — eTM: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0x41FEC, адрес 0xE004 1FEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_TRCPIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_TRCCIDR0 — eTM: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0x41FF0, адрес 0xE004 1FF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_TRCCIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_TRCCIDR1 — eTM: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0x41FF4, адрес 0xE004 1FF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_TRCCIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_TRCCIDR2 — eTM: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0x41FF8, адрес 0xE004 1FF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_TRCCIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_TRCCIDR3 — eTM: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0x41FFC, адрес 0xE004 1FFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_TRCCIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

M33_CTICONTROL — cTI: включение

Смещение 0x42000, адрес 0xE004 2000, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTICONTROL_…

  • GLBEN (бит 0, чтение и запись, после сброса 0x0) — Включение CTI.

M33_CTIINTACK — cTI: подтверждение выходов триггеров

Смещение 0x42010, адрес 0xE004 2010, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIINTACK_…

  • INTACK (биты 7:0, чтение и запись, после сброса 0x00) — Запись 1 подтверждает и сбрасывает выход триггера ctitrigout — бит на выход.

M33_CTIAPPSET — cTI: программное событие в каналах

Смещение 0x42014, адрес 0xE004 2014, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIAPPSET_…

  • APPSET (биты 3:0, чтение и запись, после сброса 0x0) — Запись 1 вызывает событие в канале — бит на канал.

M33_CTIAPPCLEAR — cTI: сброс программных событий

Смещение 0x42018, адрес 0xE004 2018, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIAPPCLEAR_…

  • APPCLEAR (биты 3:0, чтение и запись, после сброса 0x0) — Запись 1 сбрасывает бит канала в CTIAPPSET.

M33_CTIAPPPULSE — cTI: программный импульс в каналах

Смещение 0x4201C, адрес 0xE004 201C, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIAPPPULSE_…

  • APPULSE (биты 3:0, чтение и запись, после сброса 0x0) — Запись 1 даёт импульс события в канале.

M33_CTIINENn — cTI: каналы, в которые передаётся вход триггера n

8 регистров, n = 0…7: смещение 0x42020 + n · 0x04, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIINENn_…

  • TRIGINEN (биты 3:0, чтение и запись, после сброса 0x0) — Каналы — бит на каждый из четырёх, — в которые передаётся вход ctitrigin n.

M33_CTIOUTENn — cTI: каналы, которые включают выход триггера n

8 регистров, n = 0…7: смещение 0x420A0 + n · 0x04, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTIOUTENn_…

  • TRIGOUTEN (биты 3:0, чтение и запись, после сброса 0x0) — Каналы, событие в которых включает выход ctitrigout n.

M33_CTITRIGINSTATUS — cTI: состояние входов триггеров

Смещение 0x42130, адрес 0xE004 2130, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTITRIGINSTATUS_…

  • TRIGINSTATUS (биты 7:0, только чтение, после сброса 0x00) — Состояние входов ctitrigin — бит на вход; после сброса не определено.

M33_CTITRIGOUTSTATUS — cTI: состояние выходов триггеров

Смещение 0x42134, адрес 0xE004 2134, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTITRIGOUTSTATUS_…

  • TRIGOUTSTATUS (биты 7:0, только чтение, после сброса 0x00) — Состояние выходов ctitrigout — бит на выход.

M33_CTICHINSTATUS — cTI: состояние каналов

Смещение 0x42138, адрес 0xE004 2138, после сброса 0x0000 0000. Макросы pico-sdk: M33_CTICHINSTATUS_…

  • CTICHOUTSTATUS (биты 3:0, только чтение, после сброса 0x0) — По описанию поля — состояние выходов каналов ctichout, хотя регистр назван по входам.

M33_CTIGATE — cTI: пропуск каналов на выходы

Смещение 0x42140, адрес 0xE004 2140, после сброса 0x0000 000F. Макросы pico-sdk: M33_CTIGATE_…

1514131211109876543210
—CTIGATEEN3CTIGATEEN2CTIGATEEN1CTIGATEEN0
  • CTIGATEENn, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x1) — Пропускать канал n на выход ctichout n; 0 — не распространять событие.

M33_ASICCTL — cTI: управление внешними мультиплексорами — их нет, DEVID.EXTMUXNUM = 0

Смещение 0x42144, адрес 0xE004 2144, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_ASICCTL_…

Значение занимает регистр целиком, отдельных полей нет.

M33_ITCHOUT — cTI, режим интеграции: выходы каналов

Смещение 0x42EE4, адрес 0xE004 2EE4, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITCHOUT_…

  • CTCHOUT (биты 3:0, чтение и запись, после сброса 0x0) — Значения выходов каналов ctichout.

M33_ITTRIGOUT — cTI, режим интеграции: выходы триггеров

Смещение 0x42EE8, адрес 0xE004 2EE8, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITTRIGOUT_…

  • CTTRIGOUT (биты 7:0, чтение и запись, после сброса 0x00) — Значения выходов триггеров ctitrigout.

M33_ITCHIN — cTI, режим интеграции: входы каналов

Смещение 0x42EF4, адрес 0xE004 2EF4, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITCHIN_…

  • CTCHIN (биты 3:0, только чтение, после сброса 0x0) — Чтение входов каналов ctichin.

M33_ITCTRL — cTI: включение режима интеграции

Смещение 0x42F00, адрес 0xE004 2F00, после сброса 0x0000 0000. Макросы pico-sdk: M33_ITCTRL_…

  • IME (бит 0, чтение и запись, после сброса 0x0) — Включение режима интеграции.

M33_DEVARCH — cTI: архитектура компонента CoreSight

Смещение 0x42FBC, адрес 0xE004 2FBC, после сброса 0x4770 1A14. Макросы pico-sdk: M33_DEVARCH_…

31302928272625242322212019181716
ARCHITECTPRESENTREVISION
1514131211109876543210
ARCHID
  • ARCHITECT (биты 31:21, только чтение, после сброса 0x23B) — Разработчик архитектуры по JEP106: биты 31:28 — код продолжения, 27:21 — код; 0x23B — Arm.
  • PRESENT (бит 20, только чтение, после сброса 0x1) — 1 — регистр DEVARCH есть.
  • REVISION (биты 19:16, только чтение, после сброса 0x0) — Ревизия архитектуры компонента.
  • ARCHID (биты 15:0, только чтение, после сброса 0x1A14) — Архитектура компонента: версия в битах 15:12 и номер в битах 11:0.

M33_DEVID — cTI: число каналов, триггеров и мультиплексоров

Смещение 0x42FC8, адрес 0xE004 2FC8, после сброса 0x0004 0800. Макросы pico-sdk: M33_DEVID_…

31302928272625242322212019181716
—NUMCH
1514131211109876543210
NUMTRIG—EXTMUXNUM
  • NUMCH (биты 19:16, только чтение, после сброса 0x4) — Число каналов: 4.
  • NUMTRIG (биты 15:8, только чтение, после сброса 0x08) — Число триггеров: 8.
  • EXTMUXNUM (биты 4:0, только чтение, после сброса 0x00) — Число внешних мультиплексоров на входах и выходах триггеров: 0 — нет.

M33_DEVTYPE — cTI: тип компонента CoreSight

Смещение 0x42FCC, адрес 0xE004 2FCC, после сброса 0x0000 0014. Макросы pico-sdk: M33_DEVTYPE_…

1514131211109876543210
—SUBMAJOR
  • SUB (биты 7:4, только чтение, после сброса 0x1) — Подтип компонента.
  • MAJOR (биты 3:0, только чтение, после сброса 0x4) — Основной тип компонента.

M33_PIDR4 — cTI: идентификатор PIDR4 — размер и код продолжения JEP106 разработчика

Смещение 0x42FD0, адрес 0xE004 2FD0, после сброса 0x0000 0004. Макросы pico-sdk: M33_PIDR4_…

1514131211109876543210
—SIZEDES_2
  • SIZE (биты 7:4, только чтение, после сброса 0x0) — 0 — компонент занимает 4 КБ адресов.
  • DES_2 (биты 3:0, только чтение, после сброса 0x4) — Код продолжения JEP106 разработчика: 4 у Arm.

M33_PIDR5 — cTI: идентификатор PIDR5 — зарезервирован, читается как 0

Смещение 0x42FD4, адрес 0xE004 2FD4, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_PIDR5_…

Значение занимает регистр целиком, отдельных полей нет.

M33_PIDR6 — cTI: идентификатор PIDR6 — зарезервирован, читается как 0

Смещение 0x42FD8, адрес 0xE004 2FD8, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_PIDR6_…

Значение занимает регистр целиком, отдельных полей нет.

M33_PIDR7 — cTI: идентификатор PIDR7 — зарезервирован, читается как 0

Смещение 0x42FDC, адрес 0xE004 2FDC, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: M33_PIDR7_…

Значение занимает регистр целиком, отдельных полей нет.

M33_PIDR0 — cTI: идентификатор PIDR0 — номер компонента, биты 7:0

Смещение 0x42FE0, адрес 0xE004 2FE0, после сброса 0x0000 0021. Макросы pico-sdk: M33_PIDR0_…

  • PART_0 (биты 7:0, только чтение, после сброса 0x21) — Биты 7:0 номера компонента.

M33_PIDR1 — cTI: идентификатор PIDR1 — номер компонента, биты 11:8, и часть кода разработчика

Смещение 0x42FE4, адрес 0xE004 2FE4, после сброса 0x0000 00BD. Макросы pico-sdk: M33_PIDR1_…

1514131211109876543210
—DES_0PART_1
  • DES_0 (биты 7:4, только чтение, после сброса 0xB) — Биты 3:0 кода JEP106 разработчика: 0xB у Arm.
  • PART_1 (биты 3:0, только чтение, после сброса 0xD) — Биты 11:8 номера компонента.

M33_PIDR2 — cTI: идентификатор PIDR2 — ревизия и часть кода разработчика

Смещение 0x42FE8, адрес 0xE004 2FE8, после сброса 0x0000 000B. Макросы pico-sdk: M33_PIDR2_…

1514131211109876543210
—REVISIONJEDECDES_1
  • REVISION (биты 7:4, только чтение, после сброса 0x0) — Ревизия компонента.
  • JEDEC (бит 3, только чтение, после сброса 0x1) — Всегда 1: код разработчика назначен JEDEC.
  • DES_1 (биты 2:0, только чтение, после сброса 0x3) — Биты 6:4 кода JEP106 разработчика: 3 у Arm.

M33_PIDR3 — cTI: идентификатор PIDR3 — исправления ревизии и изменения заказчика

Смещение 0x42FEC, адрес 0xE004 2FEC, после сброса 0x0000 0000. Макросы pico-sdk: M33_PIDR3_…

1514131211109876543210
—REVANDCMOD
  • REVAND (биты 7:4, только чтение, после сброса 0x0) — Мелкие исправления ревизии, обычно 0.
  • CMOD (биты 3:0, только чтение, после сброса 0x0) — Изменения, внесённые заказчиком: 0 — нет.

M33_CIDR0 — cTI: идентификатор CIDR0 — преамбула, биты 7:0

Смещение 0x42FF0, адрес 0xE004 2FF0, после сброса 0x0000 000D. Макросы pico-sdk: M33_CIDR0_…

  • PRMBL_0 (биты 7:0, только чтение, после сброса 0x0D) — Преамбула, биты 7:0: 0x0D.

M33_CIDR1 — cTI: идентификатор CIDR1 — класс компонента и преамбула, биты 11:8

Смещение 0x42FF4, адрес 0xE004 2FF4, после сброса 0x0000 0090. Макросы pico-sdk: M33_CIDR1_…

1514131211109876543210
—CLASSPRMBL_1
  • CLASS (биты 7:4, только чтение, после сброса 0x9) — Класс компонента: 0x9 — компонент отладки CoreSight.
  • PRMBL_1 (биты 3:0, только чтение, после сброса 0x0) — Преамбула, биты 11:8: 0.

M33_CIDR2 — cTI: идентификатор CIDR2 — преамбула, биты 23:16

Смещение 0x42FF8, адрес 0xE004 2FF8, после сброса 0x0000 0005. Макросы pico-sdk: M33_CIDR2_…

  • PRMBL_2 (биты 7:0, только чтение, после сброса 0x05) — Преамбула, биты 23:16: 0x05.

M33_CIDR3 — cTI: идентификатор CIDR3 — преамбула, биты 31:24

Смещение 0x42FFC, адрес 0xE004 2FFC, после сброса 0x0000 00B1. Макросы pico-sdk: M33_CIDR3_…

  • PRMBL_3 (биты 7:0, только чтение, после сброса 0xB1) — Преамбула, биты 31:24: 0xB1.

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

Как измерить время выполнения кода в тактах на RP2350?

Установите TRCENA в DEMCR, обнулите DWT_CYCCNT и включите CYCCNTENA в DWT_CTRL; затем прочитайте DWT_CYCCNT до и после участка кода — разность и есть число тактов ядра. Счётчик 32-битный и переходит через ноль: на 150 МГц — примерно каждые 28,6 с.

Перезагружает ли AIRCR.SYSRESETREQ весь RP2350?

Нет: по таблице даташита RP2350 запись бита SYSRESETREQ с ключом 0x05FA в VECTKEY сбрасывает только то ядро, на котором его установили, — это тёплый сброс ядра. Остальную систему перезагружают сторожевым таймером: какие блоки он сбрасывает, задают регистры PSM и POWMAN.

Сколько уровней приоритета у прерываний RP2350?

Шестнадцать: у ядер Cortex-M33 в RP2350 4 бита приоритета — старшие биты 7:4 каждого байта NVIC_IPRn, где 0 — наивысший уровень. Поле PRIGROUP в AIRCR делит приоритет на группу и подгруппу, а бит PRIS понижает все незащищённые исключения относительно защищённых.

Как разрешить FPU и сопроцессоры RP2350?

Запишите 3 — полный доступ — в поля CP10 и CP11 регистра CPACR, а для сопроцессоров Raspberry Pi — в CP0 (GPIOC), CP4 (DCP, двойная точность) и CP7 (RCP, контроль избыточности). Незащищённому коду нужны ещё биты в NSACR и в незащищённой копии CPACR (даташит RP2350, раздел 3.6).

Источники

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

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

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

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