```{toctree}
:hidden:
:maxdepth: 2
:caption: 시작하기
개요 <self>
```

```{toctree}
:hidden:
:maxdepth: 2
:caption: DSP
DSP 개요 <dsp_overview.md>
DSP 프로그래밍 가이드 <dsp_programming.md>
```

```{toctree}
:hidden:
:maxdepth: 2
:caption: DSP API 레퍼런스
sp500/dsp.h <doxygen/html_kr/dsp_8h>
sp500/letterbox.h <doxygen/html_kr/letterbox_8h>
sp500/log_mel.h <doxygen/html_kr/log__mel_8h>
sp500/yolo.h <doxygen/html_kr/yolo_8h>
데이터 구조 <doxygen/html_kr/annotated>
색인 <doxygen/html_kr/globals>
```

```{toctree}
:hidden:
:maxdepth: 2
:caption: 지원 하드웨어
MLM-1 SoM <mlm1_som.md>
REGULUS AI EVK <regulus_ai_evk.md>
MLD-R1 AI USB <mld_r1_ai_usb.md>
```

```{toctree}
:hidden:
:maxdepth: 2
:caption: 릴리즈 노트
릴리즈 노트 <release_note.md>
```

# 개요

REGULUS는 모빌린트의 초저전력 AI System-on-Chip입니다. 모빌린트 NPU와 Arm Cortex-A53 애플리케이션 프로세서, 그리고 엣지 비전 장치에 필요한 영상·신호 처리 블록을 한 칩에 담고 있어, 카메라 입력부터 전처리, 추론, 후처리까지 하나의 칩에서 수행할 수 있습니다.

이 매뉴얼은 REGULUS 기반 장치용 애플리케이션을 개발하는 개발자를 대상으로 합니다. 현재는 REGULUS Vision DSP를 다룹니다. DSP가 CPU 대신 처리하는 작업과 애플리케이션 코드에서 DSP를 사용하는 C API를 설명합니다.

## 온칩 처리 블록

REGULUS에는 NPU와 CPU 외에 다음과 같은 영상·신호 처리 블록이 있습니다.

| 블록 | 기능 |
| --- | --- |
| MIPI CSI-2 RX | MIPI 카메라의 영상을 수신합니다. |
| ISP | 센서의 raw 신호를 컬러 영상(BGR, RGB, YUV 포맷)으로 변환합니다. |
| CODEC | JPEG 인코더/디코더입니다. |
| CONVERT | 색 공간과 크기를 변환합니다. |
| HEVC | H.264, H.265 인코더/디코더입니다. |
| DMA350 | 2D 복사, 미러, 회전, 크롭을 수행하는 DMA 엔진입니다. |
| Vision DSP | NPU 추론 전후의 전처리·후처리를 실행하는 프로그래머블 DSP입니다. |

ISP와 고정 기능 가속기는 Linux V4L2와 GStreamer를 통해 사용합니다. Vision DSP는 이 매뉴얼에서 설명하는 SP500 DSP API를 통해 사용합니다.

## Vision DSP의 역할

REGULUS의 AI 애플리케이션은 모델 종류와 관계없이 다음 단계를 거쳐 데이터를 처리합니다.

```text
Input -> Preprocessing (CPU or DSP) -> Inference (NPU) -> Postprocessing (CPU or DSP) -> Output
```

- **입력(Input)** 은 모델이 처리할 데이터입니다. ISP를 거친 카메라 프레임이나 오디오 클립이 그 예입니다.
- **전처리(Preprocessing)** 는 입력을 모델이 받는 텐서로 바꿉니다. 프레임을 리사이즈하고 패딩하는 letterbox, 오디오를 log-mel spectrogram으로 바꾸는 단계가 대표적입니다.
- **추론(Inference)** 은 컴파일된 모델을 NPU에서 실행합니다.
- **후처리(Postprocessing)** 는 모델의 출력을 애플리케이션이 쓸 수 있는 결과로 바꿉니다. YOLO head 출력을 박스로 디코딩하는 단계가 대표적입니다.

전처리와 후처리는 CPU와 Vision DSP 중 어디에서든 실행할 수 있습니다. DSP에서 실행하면 CPU는 애플리케이션의 다른 작업에 쓸 수 있습니다. 또한 DSP는 NPU와 메모리를 공유하므로, DSP가 준비한 텐서를 복사 없이 NPU에 넘길 수 있습니다.

DSP가 제공하는 연산과 API 구성은 [DSP 개요](dsp_overview.md)에서, 첫 애플리케이션을 빌드하고 실행하는 방법은 [DSP 프로그래밍 가이드](dsp_programming.md)에서 확인하세요.

## 매뉴얼 버전

이 매뉴얼의 버전은 REGULUS 패키지 릴리스 번호 중 major와 minor만 따릅니다. 매뉴얼 v4.1은 REGULUS 패키지의 모든 v4.1.x 릴리스를 다루며, patch 릴리스는 문서화된 인터페이스를 바꾸지 않습니다. 각 버전은 해당 REGULUS 릴리스에 포함된 SP500 DSP API를 설명합니다. REGULUS v4.1에는 SP500 DSP API 1.0.0이 포함됩니다. 버전 선택기에서 장치에 설치된 REGULUS 패키지 릴리스에 맞는 매뉴얼을 선택하세요.
