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

Регистры CORESIGHT_TRACE RP2350

Регистры FIFO трассировки RP2350: захват 32-битного потока TPIU от ядер Cortex-M33 прямо на кристалле, чтобы DMA складывал трассировку в SRAM без внешнего анализатора.

Подсистема трассировки на основе CoreSight SoC-600M собирает сообщения ETM и ITM обоих ядер Cortex-M33 в один поток. Его можно выводить наружу через 4-битный порт TPIU с удвоенной скоростью — до 75 МГц и 600 Мбит/с, — а можно захватывать в FIFO на восемь 32-битных слов, откуда DMA переносит данные в SRAM (даташит RP2350, раздел 3.5.7).

Захват в память позволяет снимать трассировку через медленный отладчик SWD, не ограничивая её скорость, а под буфер годится вся SRAM. Перед запуском DMA разрешают доступ к FIFO битом DMA в регистре CORESIGHT_TRACE блока ACCESSCTRL и настраивают канал на запрос DREQ 53; затем сбрасывают TRACE_CAPTURE_FIFO_FLUSH. TPIU при этом тоже должен быть настроен.

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

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

РегистрСмещениеНазначениеПосле сброса
CORESIGHT_TRACE_CTRL_STATUS0x00Управление и состояние захвата трассировки0x0000 0001
CORESIGHT_TRACE_TRACE_CAPTURE_FIFO0x04FIFO данных трассировки от TPIU0x0000 0000

CORESIGHT_TRACE_CTRL_STATUS — управление и состояние захвата трассировки

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

1514131211109876543210
—TRACE_CAPTURE_FIFO_OVERFLOWTRACE_CAPTURE_FIFO_FLUSH
  • TRACE_CAPTURE_FIFO_OVERFLOW (бит 1, чтение и запись, после сброса 0x0) — Данные трассировки потеряны — FIFO была полна; сбрасывается записью 1.
  • TRACE_CAPTURE_FIFO_FLUSH (бит 0, чтение и запись, после сброса 0x1) — 1 — FIFO постоянно очищается и не переполняется; сбрасывают, чтобы начать захват, когда канал DMA уже запущен.

CORESIGHT_TRACE_TRACE_CAPTURE_FIFO — fIFO данных трассировки от TPIU

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

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

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

Как записать трассировку RP2350 в память без внешнего анализатора?

Разрешите DMA доступ к FIFO трассировки в ACCESSCTRL, запустите канал DMA с запросом 53 на чтение регистра TRACE_CAPTURE_FIFO в буфер SRAM, настройте TPIU и сбросьте TRACE_CAPTURE_FIFO_FLUSH. Когда буфер заполнится, установите этот бит снова; потерю данных покажет TRACE_CAPTURE_FIFO_OVERFLOW.

Источники

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

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

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

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