********************************* 기술 명세서 ********************************* .. contents:: Table of Contents --------- 시스템 아키텍처 =============== 전체 시스템을 구성하는 주요 컴포넌트와 상호작용 방식을 정의한다. ─ ◆ ─ 시스템 설계 =============== 아키텍처가 정해지면 실제 개발에 필요한 구체적인 기술적 결정과 설계를 하며, "어떻게 만들 것인가?"에 대한 질문에 초점을 맞춘다. ─ ◆ ─ 그래프 아키텍처 =============== Video Processing ------------------- .. raw:: html ─ ◆ ─ 데이터 흐름 ============ .. raw:: html .. raw:: html ─ ◆ ─ 소프트웨어 아키텍처 ================== 소프트웨어의 개념적 구성 요소와 그 상호 관계를 체계적으로 정의하고, 모듈화 및 계층화를 통해 구조적 일관성을 확보함으로써 장기적인 안정성과 확장성을 보장하는 고수준의 설계 원칙을 수립한다. 또한, 이를 기반으로 최적의 개발 플랫폼 및 기술 스택을 선정할 수 있는 기준을 제공한다 계층 구조 ---------- .. raw:: html .. list-table:: :header-rows: 1 :widths: 25 75 * - **계층** - **역할 및 설명** * - Application - 사용자 App이 실행되는 계층, Task 또는Thread 로 구성, IP(process)C 또는 IT(thread)C 로 수행 * - Application Framework - App 개발을 위한 기본 구조 및 표준 을 제공하는 틀 ( 일정한 구조와 규칙 제공 ) * - Middleware - App과 OS 사이에서 중재 역할 수행 ( 데이터 변환, 통신 관리, API 호출 등 ) * - HAL - H/W와 S/W 간의 추상화된 I/F 계층 ( 하드웨어 종류와 상관없이 일관된 API 로 제어 ) * - OS - App과 H/W를 관리하는 운영체제, 프로세스 / 메모리 / 파일 시스템 / 네트워크 / 입출력 제어 역할 수행 * - Device Driver - H/W 장치를 제어하는 계층, OS와 H/W 간 I/F 역할 수행 * - Interrupt Handler - H/W 인터럽트를 처리하는 모듈 * - Linux Kernel - OS의 핵심 부분, CPU/ 메모리 / 파일 시스템 등 자원 관리와 App 과 H/W 간 직접적인 I/F 제공 ─ ◆ ─ 소프트웨어 기술 스택 ========================== 제품을 개발하는 모든 과정에서 활용되는 기술 스택을 정의한다. 소프트웨어를 개발, 실행, 배포 할 수 있는 기반 환경과 개발에 사용하는데 사용되는 기술 조합이다. .. raw:: html .. list-table:: :header-rows: 1 :widths: 20 80 * - **SW 개발 플랫폼** - **설명** * - .. raw:: html
Language
- 애플리케이션 및 시스템 소프트웨어 개발에 사용되는 주요 프로그래밍 언어 * - .. raw:: html
Framework
- 카메라 및 영상 처리를 위한 미들웨어 및 프레임워크 * - .. raw:: html
Development ( SDK )
- 임베디드 OS 커스터마이징 및 시스템 빌드를 위한 도구 * - .. raw:: html
DevOps ( CI/CD )
- CI/CD 자동화, 소스 코드 관리, 코드 품질 관리 및 프로젝트 관리 도구 ─ ◆ ─ 소프트웨어 설계 =============== 소프트웨어 설계 원칙에 따른 소프트웨어 개발 및 실행 기반 환경 플랫폼의 주요 구성 요소와 계층 구조에 대한 설계도이다. 계층 구조 ---------- .. raw:: html .. list-table:: :header-rows: 1 :widths: 30 70 * - **핵심 구성 요소** - **역할 및 설명** * - Camera App - 카메라 기능을 제공하는 애플리케이션 ( 사진 촬영, 영상 녹화, 미리보기 등 ) * - Picamera2 - Python 기반의 고수준 카메라 라이브러리 ( libramera 활용 ) * - GStreamer - 멀티미디어 프레임워크로, 인코딩(H.264) 등을 위한 플러그인 ( v4l2src, libcamerasrc 등 ) 제공 * - V4L2 - 리눅스 커널의 비디오 장치 인터페이스로, 카메라의 원시 데이터를 애플리케이션에 전달하는 역할 수행 * - libcamera - 최신 리눅스 카메라 스택으로, 복잡한 카메라 파이프라인을 관리하고 V4L2보다 더 정교한 기능 제공 * - USB - USB 카메라 및 기타 주변 장치와의 인터페이스를 제공하는 리눅스 드라이버 * - VideoCodec - 영상 및 오디오 데이터를 압축 / 디코딩하는 하드웨어 엔진 ─ ◆ ─ 소스 코드 구조 -------------- .. raw:: html ─ ◆ ─ 소프트웨어 플랫폼 아키텍처 ======================= .. raw:: html ─ ◆ ─ 임베디드 플랫폼 =============== .. list-table:: 임베디드 플랫폼 사양 :header-rows: 1 :widths: 5 20 * - HW - Description * - FPGA - Xilinx Zynq-7000 XC7020-CLG400 * - SoM - Raspberry Pi 4 CM4 Lite * - Camera I/F - Cypress FX3 USB 3.0 Controller ─ ◆ ─ 개발 플랫폼 ============ .. list-table:: 개발 플랫폼 사양 :header-rows: 1 :widths: 5 20 * - DevKit ( HW ) - Description * - FPGA - AMD Zynq™ 7000 SoC ZC702 EVB'd + SW Platform ( SDK IDE, etc ) * - SoM - Raspberry Pi 4 Model B B'd + SW Platform ( SDK, IDE, etc ) * - Camera I/F - EZ-USB™ FX3 Camera B'd + ( SDK, IDE, etc ) .. list-table:: :header-rows: 1 :widths: 5 20 * - DevKit ( SW ) - Description * - FPGA - Off. SDK ( Vitis SW Platform ) * - SoM - Off. SDK ( Raspberry Pi OS + Raspberry Pi Imager ) * - Camera I/F - Off. SDK ( EZ-USB™ FX3 SDK ) ─ ◆ ─